Project Date
NLTEST 28 Oct 2020, 11:18

Tag Report

Steps Scenarios Features
Tag Passed Failed Skipped Pending Undefined Total Passed Failed Total Duration Status
@Service=download 3559 164 4565 0 0 8288 172 164 336 49:35.433 Failed
1:38.441
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
11:11:05.200 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.967
11:11:05.205 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}

11:11:12.165 response time in milliseconds: 6102.48
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:11 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:11:09 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/1985c906-c16d-40f2-99a7-df2592236db1.json","testRuns":{"TestRun":{"id":"EID1985c906-c16d-40f2-99a7-df2592236db1","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:11:08.762Z","testTasks":{"TestTask":{"id":"EID0bd0be14-37a3-4cf7-a3db-b734b79b734c","parent":{"ref":"EID1985c906-c16d-40f2-99a7-df2592236db1"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDbce921f9-73f4-4bc6-837b-73dc26a6bb51"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDbce921f9-73f4-4bc6-837b-73dc26a6bb51","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:11:05.652Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:11:08.284Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
11:11:12.172 [print] EID1985c906-c16d-40f2-99a7-df2592236db1
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:11:12.173 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:11:12.173 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:11:12.173 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/1985c906-c16d-40f2-99a7-df2592236db1.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.009
11:11:12.183 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:11:12.184 [print] statuspath TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1
* print 'progresspath ', progresspath 0.000
11:11:12.185 [print] progresspath  TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
Given path progresspath 0.000
When method GET 0.530
11:11:12.187 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:12.715 response time in milliseconds: 528.22
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:11:12 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:11:12.716 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)",
    "28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:11:08 - Preparing 1 Test Task:",
    "28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)",
    "28.10.2020 11:11:08 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:11:08 -  with parameters: ",
    "28.10.2020 11:11:08 - etf.testcases = *",
    "28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:11:08 - Setting state to CREATED",
    "28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z",
    "28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:11:10 - Project Properties: ",
    "28.10.2020 11:11:10 - etf.testcases - * ",
    "28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ",
    "28.10.2020 11:11:10 - username -  ",
    "28.10.2020 11:11:10 - authUser -  ",
    "28.10.2020 11:11:10 - authMethod - basic ",
    "28.10.2020 11:11:10 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:6.914
11:11:12.716 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:13.240 response time in milliseconds: 522.65
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:11:13 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:13.247 retry condition not satisfied: response.val == response.max
11:11:13.247 sleeping before retry #1
11:11:18.248 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:18.766 response time in milliseconds: 517.85
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:11:18 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:18.767 retry condition not satisfied: response.val == response.max
11:11:18.767 sleeping before retry #2
11:11:23.768 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:24.312 response time in milliseconds: 543.45
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:11:24 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:24.313 retry condition not satisfied: response.val == response.max
11:11:24.313 sleeping before retry #3
11:11:29.314 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:29.826 response time in milliseconds: 510.96
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:11:29 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"49","max":"50","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:29.826 retry condition not satisfied: response.val == response.max
11:11:29.826 sleeping before retry #4
11:11:34.827 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:35.348 response time in milliseconds: 520.60
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:11:35 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:35.348 retry condition not satisfied: response.val == response.max
11:11:35.349 sleeping before retry #5
11:11:40.350 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:40.859 response time in milliseconds: 509.11
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:11:40 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:40.860 retry condition not satisfied: response.val == response.max
11:11:40.860 sleeping before retry #6
11:11:45.861 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:46.387 response time in milliseconds: 522.89
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:11:46 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized"]}

11:11:46.388 retry condition not satisfied: response.val == response.max
11:11:46.388 sleeping before retry #7
11:11:51.389 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:51.912 response time in milliseconds: 522.68
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:11:51 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"98","max":"99","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:51.912 retry condition not satisfied: response.val == response.max
11:11:51.912 sleeping before retry #8
11:11:56.913 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:57.536 response time in milliseconds: 617.32
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:11:57 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"119","max":"120","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:57.537 retry condition not satisfied: response.val == response.max
11:11:57.537 sleeping before retry #9
11:12:02.538 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:03.058 response time in milliseconds: 511.13
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:12:02 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:12:03.058 retry condition not satisfied: response.val == response.max
11:12:03.058 sleeping before retry #10
11:12:08.059 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:08.600 response time in milliseconds: 540.68
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:12:08 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:03 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:03 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:04 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:05 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:05 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:12:08.600 retry condition not satisfied: response.val == response.max
11:12:08.600 sleeping before retry #11
11:12:13.601 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:14.118 response time in milliseconds: 516.52
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:12:14 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:11:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:08 UTC 2020)","28.10.2020 11:11:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:08 - Preparing 1 Test Task:","28.10.2020 11:11:08 -  TestTask 1 (0bd0be14-37a3-4cf7-a3db-b734b79b734c)","28.10.2020 11:11:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:08 -  with parameters: ","28.10.2020 11:11:08 - etf.testcases = *","28.10.2020 11:11:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:08 - Setting state to CREATED","28.10.2020 11:11:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:09 - Starting TestRun.1985c906-c16d-40f2-99a7-df2592236db1 at 2020-10-28T11:11:10Z","28.10.2020 11:11:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:10 - Project Properties: ","28.10.2020 11:11:10 - etf.testcases - * ","28.10.2020 11:11:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:11:10 - username -  ","28.10.2020 11:11:10 - authUser -  ","28.10.2020 11:11:10 - authMethod - basic ","28.10.2020 11:11:10 - TestRunTask initialized","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:03 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:03 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:04 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:05 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:05 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:12:14.119 retry condition not satisfied: response.val == response.max
11:12:14.119 sleeping before retry #12
11:12:19.120 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:19.629 response time in milliseconds: 508.50
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:12:19 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

11:12:19.629 retry condition satisfied
* print response 0.000
11:12:19.630 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 23.943
11:12:19.631 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:43.570 response time in milliseconds: 22977.65
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Cache-Control: public, max-age=120
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:12:42 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Last-Modified: Wed, 28 Oct 2020 11:12:19 GMT
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/1985c906-c16d-40f2-99a7-df2592236db1.json","testRuns":{"TestRun":{"id":"EID1985c906-c16d-40f2-99a7-df2592236db1","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:11:08.762Z","testTasks":{"TestTask":{"id":"EID0bd0be14-37a3-4cf7-a3db-b734b79b734c","parent":{"ref":"EID1985c906-c16d-40f2-99a7-df2592236db1"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDbce921f9-73f4-4bc6-837b-73dc26a6bb51"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDdcbde145-24a2-4238-a4b0-1aacef650d00"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDbce921f9-73f4-4bc6-837b-73dc26a6bb51","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:11:05.652Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:11:08.284Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDdcbde145-24a2-4238-a4b0-1aacef650d00","testObject":{"ref":"EIDbce921f9-73f4-4bc6-837b-73dc26a6bb51"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee79011-0175-1000-c7c1-c90b3158db32","testCaseResults":{"TestCaseResult":[{"id":"EID6ee79011-0175-1000-959d-bb7f56d3b7fb","testStepResults":{"TestStepResult":[{"id":"EID6ee79012-0175-1000-a482-3dc20affb015","parent":{"ref":"EID6ee79011-0175-1000-959d-bb7f56d3b7fb"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:11:10Z","duration":15,"status":"PASSED"},{"id":"EID6ee79022-0175-1000-8a6a-cf3854eea1c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79315-0175-1000-38ef-19bc3ab120b6","parent":{"ref":"EID6ee79022-0175-1000-8a6a-cf3854eea1c7"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee79315-0175-1000-aeda-2fc62255537d","parent":{"ref":"EID6ee79022-0175-1000-8a6a-cf3854eea1c7"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee79315-0175-1000-d19c-dfd40763dd28","parent":{"ref":"EID6ee79022-0175-1000-8a6a-cf3854eea1c7"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee79315-0175-1000-94cf-a2da9b664650","parent":{"ref":"EID6ee79022-0175-1000-8a6a-cf3854eea1c7"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID085e57ce-6414-4c75-9911-8e06cc78a9ca"},{"ref":"EIDdcaeffb5-6fc1-47dd-a120-591440460d1b"},{"ref":"EID44b53fb3-f9ac-4593-89c5-3a5ff8a95f25"}]},"parent":{"ref":"EID6ee79011-0175-1000-959d-bb7f56d3b7fb"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:11:10Z","duration":598,"status":"PASSED"}]},"parent":{"ref":"EID6ee79011-0175-1000-c7c1-c90b3158db32"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:11:10Z","duration":773,"status":"PASSED"},{"id":"EID6ee79316-0175-1000-7f8a-22060e2f32e1","testStepResults":{"TestStepResult":{"id":"EID6ee79316-0175-1000-729e-50129b7e4cda","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79530-0175-1000-234f-ad0cc032f989","parent":{"ref":"EID6ee79316-0175-1000-729e-50129b7e4cda"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee79530-0175-1000-48ff-0f348fd8fe0b","parent":{"ref":"EID6ee79316-0175-1000-729e-50129b7e4cda"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee79530-0175-1000-c7b5-4a4e1050f915","parent":{"ref":"EID6ee79316-0175-1000-729e-50129b7e4cda"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb77b309c-fe6c-449d-863f-f27f7dcdc9eb"},{"ref":"EID2836b92b-5763-4bf6-851b-d2b73b284108"},{"ref":"EID3516927d-273a-4056-85f3-6253eb30974f"}]},"parent":{"ref":"EID6ee79316-0175-1000-7f8a-22060e2f32e1"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:11:11Z","duration":449,"status":"PASSED"}},"parent":{"ref":"EID6ee79011-0175-1000-c7c1-c90b3158db32"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:11:11Z","duration":538,"status":"PASSED"}]},"parent":{"ref":"EIDdcbde145-24a2-4238-a4b0-1aacef650d00"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:11:10Z","duration":1311,"status":"PASSED"},{"id":"EID6ee79531-0175-1000-df26-d6b74e185b5d","testCaseResults":{"TestCaseResult":[{"id":"EID6ee79531-0175-1000-28b6-3bf3a0ce1d14","testStepResults":{"TestStepResult":[{"id":"EID6ee79531-0175-1000-2df7-0e8766e4264c","parent":{"ref":"EID6ee79531-0175-1000-28b6-3bf3a0ce1d14"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:11:12Z","duration":449,"status":"PASSED"},{"id":"EID6ee79532-0175-1000-670e-d75b7b830949","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee798cb-0175-1000-c299-cb085f249905","parent":{"ref":"EID6ee79532-0175-1000-670e-d75b7b830949"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798cb-0175-1000-861e-e1b0a9a8e379","parent":{"ref":"EID6ee79532-0175-1000-670e-d75b7b830949"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798cb-0175-1000-4578-3459b263765d","parent":{"ref":"EID6ee79532-0175-1000-670e-d75b7b830949"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798cb-0175-1000-f082-92d983c86685","parent":{"ref":"EID6ee79532-0175-1000-670e-d75b7b830949"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798cb-0175-1000-3c99-9dde2a19a504","parent":{"ref":"EID6ee79532-0175-1000-670e-d75b7b830949"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b7190c8-63b7-46ce-962f-a4f6bf1dc8b7"},{"ref":"EIDcceaeee7-334f-4258-8e03-ddc9ae6142cb"},{"ref":"EID064f78c4-6c5b-4ebd-83e1-0fb920c38dfb"}]},"parent":{"ref":"EID6ee79531-0175-1000-28b6-3bf3a0ce1d14"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:11:12Z","duration":807,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:11:12Z","duration":922,"status":"PASSED"},{"id":"EID6ee798cb-0175-1000-897e-62944c1e92ba","testStepResults":{"TestStepResult":[{"id":"EID6ee798cb-0175-1000-a45e-11f94f5ec9fa","attachments":{"attachment":[{"ref":"EIDc70324d2-349a-455a-bc31-c12c68a7280e"},{"ref":"EID3a5572d2-62d6-40ad-9ce6-524cf0e27d0d"}]},"parent":{"ref":"EID6ee798cb-0175-1000-897e-62944c1e92ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:11:13Z","duration":759,"status":"PASSED"},{"id":"EID6ee79c18-0175-1000-d478-03dc272b8f67","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79f0f-0175-1000-6f6f-561699d39641","parent":{"ref":"EID6ee79c18-0175-1000-d478-03dc272b8f67"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee79f0f-0175-1000-2a79-328f345591af","parent":{"ref":"EID6ee79c18-0175-1000-d478-03dc272b8f67"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee79f0f-0175-1000-02ef-aaf186f6bbd3","parent":{"ref":"EID6ee79c18-0175-1000-d478-03dc272b8f67"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee79f0f-0175-1000-665f-3752dcd2dca1","parent":{"ref":"EID6ee79c18-0175-1000-d478-03dc272b8f67"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7099504f-c137-4a96-a1b5-cbef005562e9"},{"ref":"EIDbd14947f-4663-4eb6-8c84-1e9378c50ba9"},{"ref":"EIDb1a6b770-2fa9-4212-afd3-d88873c7fca4"}]},"parent":{"ref":"EID6ee798cb-0175-1000-897e-62944c1e92ba"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:11:13Z","duration":641,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:11:13Z","duration":1604,"status":"PASSED"},{"id":"EID6ee79f10-0175-1000-769d-cd13339fbdd6","testStepResults":{"TestStepResult":[{"id":"EID6ee79f10-0175-1000-9d24-45b736ab2e85","attachments":{"attachment":[{"ref":"EIDcbffae8c-37ca-4d89-9767-d11515dd8a35"},{"ref":"EID88763b7d-0182-40c7-a48b-f1e25603fcf1"}]},"parent":{"ref":"EID6ee79f10-0175-1000-769d-cd13339fbdd6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":514,"status":"PASSED"},{"id":"EID6ee7a149-0175-1000-a619-f998155a100d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7a407-0175-1000-7ede-1897f5d22f78","parent":{"ref":"EID6ee7a149-0175-1000-a619-f998155a100d"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:11:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee7a407-0175-1000-e0ef-fb386e0e3992","parent":{"ref":"EID6ee7a149-0175-1000-a619-f998155a100d"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:11:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee7a407-0175-1000-a0df-70c70b61b53b","parent":{"ref":"EID6ee7a149-0175-1000-a619-f998155a100d"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:11:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee7a407-0175-1000-6ec6-8384610deec1","parent":{"ref":"EID6ee7a149-0175-1000-a619-f998155a100d"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:11:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee7a407-0175-1000-d820-59e80c13f047","parent":{"ref":"EID6ee7a149-0175-1000-a619-f998155a100d"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:11:15Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d1ccb71-1055-4f6a-9dc5-4cb94b26fbed"},{"ref":"EID8d66da0b-f3bd-4fe0-908c-8d3e4671f24f"},{"ref":"EIDa78b6c85-edda-4152-a143-4be63a642146"}]},"parent":{"ref":"EID6ee79f10-0175-1000-769d-cd13339fbdd6"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:11:15Z","duration":517,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:11:14Z","duration":1272,"status":"PASSED"},{"id":"EID6ee7a408-0175-1000-dc54-546eb8735677","testStepResults":{"TestStepResult":[{"id":"EID6ee7a408-0175-1000-beeb-599c608ad624","attachments":{"attachment":[{"ref":"EID5ef4a0c9-1163-4d59-a4f0-df93652231c0"},{"ref":"EID272a7e41-62d1-42eb-aae8-3f3abbe2f5be"}]},"parent":{"ref":"EID6ee7a408-0175-1000-dc54-546eb8735677"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:11:15Z","duration":4367,"status":"PASSED"},{"id":"EID6ee7b540-0175-1000-90bf-fe106c12ee7c","parent":{"ref":"EID6ee7a408-0175-1000-dc54-546eb8735677"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:11:20Z","duration":9,"status":"PASSED"},{"id":"EID6ee7b549-0175-1000-b00b-ece24cf35cfa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7b758-0175-1000-fa17-34a48b42c33d","parent":{"ref":"EID6ee7b549-0175-1000-b00b-ece24cf35cfa"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:11:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b758-0175-1000-be9c-f7ba0f685c67","parent":{"ref":"EID6ee7b549-0175-1000-b00b-ece24cf35cfa"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:11:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b758-0175-1000-6ed7-02daefb0eebe","parent":{"ref":"EID6ee7b549-0175-1000-b00b-ece24cf35cfa"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:11:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b758-0175-1000-325c-0b09c6622793","parent":{"ref":"EID6ee7b549-0175-1000-b00b-ece24cf35cfa"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:11:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID44c81619-ac1e-472a-a0d1-8cc05c5afea9"},{"ref":"EID64c2c860-d8fb-4096-8398-783cf909b0cb"},{"ref":"EID4073bd8e-1e25-49b0-b6f8-b3066164bcc5"}]},"parent":{"ref":"EID6ee7a408-0175-1000-dc54-546eb8735677"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:11:20Z","duration":396,"status":"PASSED"},{"id":"EID6ee7b758-0175-1000-f24e-5c4af4ae92ce","attachments":{"attachment":{"ref":"EID6c472892-8963-4e03-a39e-f0f8402be182"}},"parent":{"ref":"EID6ee7a408-0175-1000-dc54-546eb8735677"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:11:20Z","duration":1,"status":"PASSED"},{"id":"EID6ee7b767-0175-1000-af50-a4c4efbd3482","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7b996-0175-1000-5e38-d447a2f3c27b","parent":{"ref":"EID6ee7b767-0175-1000-af50-a4c4efbd3482"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:11:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b996-0175-1000-aae4-ce4a1eb364a9","parent":{"ref":"EID6ee7b767-0175-1000-af50-a4c4efbd3482"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:11:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b996-0175-1000-1587-7cd758340ec8","parent":{"ref":"EID6ee7b767-0175-1000-af50-a4c4efbd3482"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:11:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b996-0175-1000-0a7e-bd08d8c8c2c3","parent":{"ref":"EID6ee7b767-0175-1000-af50-a4c4efbd3482"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:11:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee7b996-0175-1000-9f2a-31fde322aa9d","parent":{"ref":"EID6ee7b767-0175-1000-af50-a4c4efbd3482"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:11:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb7520fea-0334-49e9-b73f-646b3c2ef426"},{"ref":"EID00542328-663e-4bff-be2d-dc26441163d5"},{"ref":"EIDffabd87f-2a8b-46b2-86ce-c2f4c35c7e0f"}]},"parent":{"ref":"EID6ee7a408-0175-1000-dc54-546eb8735677"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:11:20Z","duration":343,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:11:15Z","duration":5529,"status":"PASSED"},{"id":"EID6ee7b9a1-0175-1000-8681-596c4865c9e4","testStepResults":{"TestStepResult":[{"id":"EID6ee7b9a1-0175-1000-2c0b-d540830059fe","attachments":{"attachment":[{"ref":"EIDda2ea897-4d23-4cae-995b-46f7907f05c1"},{"ref":"EID740db037-9f42-4636-8cf1-85334d0c1373"}]},"parent":{"ref":"EID6ee7b9a1-0175-1000-8681-596c4865c9e4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:11:21Z","duration":1242,"status":"PASSED"},{"id":"EID6ee7becc-0175-1000-9a93-cff2dce689ce","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7c4ea-0175-1000-ad98-3d68d4bca07f","parent":{"ref":"EID6ee7becc-0175-1000-9a93-cff2dce689ce"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:11:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee7c4ea-0175-1000-b76e-90a0d4873c82","parent":{"ref":"EID6ee7becc-0175-1000-9a93-cff2dce689ce"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:11:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee7c4ea-0175-1000-5a4a-de86ca56e2f7","parent":{"ref":"EID6ee7becc-0175-1000-9a93-cff2dce689ce"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:11:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee7c4ea-0175-1000-056e-6095b20c211a","parent":{"ref":"EID6ee7becc-0175-1000-9a93-cff2dce689ce"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:11:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID52f45201-90fe-4172-9038-d83256984c0d"},{"ref":"EID0d893b4f-bf94-441a-a335-4f5785cd65b3"},{"ref":"EID30649aff-8931-4fdd-8657-491fa1f83ba4"}]},"parent":{"ref":"EID6ee7b9a1-0175-1000-8681-596c4865c9e4"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:11:22Z","duration":1466,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:11:21Z","duration":2907,"status":"PASSED"},{"id":"EID6ee7c4fc-0175-1000-2831-6e369ac37073","testStepResults":{"TestStepResult":[{"id":"EID6ee7c505-0175-1000-2814-61fd7f8bafd5","attachments":{"attachment":[{"ref":"EID629c5e0f-6eca-4d91-8a00-dc41dcf8562c"},{"ref":"EID77ee999d-4d2c-419b-b871-1f984b85fd04"}]},"parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:11:24Z","duration":399,"status":"PASSED"},{"id":"EID6ee7c6dc-0175-1000-423e-0828a463a66d","parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:11:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee7c6dd-0175-1000-13a4-3627869f7b73","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7ca35-0175-1000-f0f8-96dd715fa43e","parent":{"ref":"EID6ee7c6dd-0175-1000-13a4-3627869f7b73"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:11:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ca35-0175-1000-857f-9df875b153c3","parent":{"ref":"EID6ee7c6dd-0175-1000-13a4-3627869f7b73"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:11:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ca35-0175-1000-01d7-84ad0f2341d0","parent":{"ref":"EID6ee7c6dd-0175-1000-13a4-3627869f7b73"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:11:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ca35-0175-1000-0ff1-3c82375f7d79","parent":{"ref":"EID6ee7c6dd-0175-1000-13a4-3627869f7b73"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:11:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa6880bb3-76d8-4fd8-9829-b55e2a494d94"},{"ref":"EID610ec90b-c5c3-4ccd-8e75-74f8739e0eaa"},{"ref":"EID0f3702cb-940b-48e5-b456-cfab7762bb89"}]},"parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:11:24Z","duration":706,"status":"PASSED"},{"id":"EID6ee7ca3e-0175-1000-d683-f91050273d97","attachments":{"attachment":{"ref":"EIDf1cee728-296a-4a15-99e2-00cc05ea5786"}},"parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:11:25Z","duration":1,"status":"PASSED"},{"id":"EID6ee7ca55-0175-1000-d10e-5fed954c1345","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7cba0-0175-1000-dece-261c244ad5c1","parent":{"ref":"EID6ee7ca55-0175-1000-d10e-5fed954c1345"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:11:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee7cba0-0175-1000-e471-f4a1f858e420","parent":{"ref":"EID6ee7ca55-0175-1000-d10e-5fed954c1345"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:11:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee7cba0-0175-1000-095a-6a4c379140ab","parent":{"ref":"EID6ee7ca55-0175-1000-d10e-5fed954c1345"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:11:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdff8f54f-930c-417b-95d7-340724559442"},{"ref":"EIDa1604987-5421-409f-898e-0653b288b544"},{"ref":"EIDa599fa1f-e534-4313-8832-8c89a2a6eb84"}]},"parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:11:25Z","duration":270,"status":"PASSED"},{"id":"EID6ee7cba9-0175-1000-d711-069fa69262e8","attachments":{"attachment":{"ref":"EID809584d4-1966-4d51-91b9-21fb7afb3071"}},"parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:11:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee7cbb9-0175-1000-6858-4a836c59b897","attachments":{"attachment":{"ref":"EID10dcbd6a-d0e9-4865-afe2-7cbfeea7962a"}},"parent":{"ref":"EID6ee7c4fc-0175-1000-2831-6e369ac37073"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:11:26Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:11:24Z","duration":1743,"status":"PASSED"},{"id":"EID6ee7cbcb-0175-1000-ed8b-752c08217b2f","testStepResults":{"TestStepResult":[{"id":"EID6ee7cbd4-0175-1000-dd20-885174600e9c","attachments":{"attachment":[{"ref":"EID19450866-35ce-4734-97e5-63c9a0cec521"},{"ref":"EID97842568-aa5a-4652-a5dd-af6e8d506a9d"}]},"parent":{"ref":"EID6ee7cbcb-0175-1000-ed8b-752c08217b2f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:11:26Z","duration":690,"status":"PASSED"},{"id":"EID6ee7ceb0-0175-1000-de61-bcb219c55f4f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7d637-0175-1000-97a7-d873de3ef8dd","parent":{"ref":"EID6ee7ceb0-0175-1000-de61-bcb219c55f4f"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:11:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee7d637-0175-1000-d4a2-fae4f1d3a3c1","parent":{"ref":"EID6ee7ceb0-0175-1000-de61-bcb219c55f4f"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:11:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee7d637-0175-1000-d987-fd9ff30c8ffd","parent":{"ref":"EID6ee7ceb0-0175-1000-de61-bcb219c55f4f"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:11:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee7d637-0175-1000-a334-912b5dce3bae","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee7ceb0-0175-1000-de61-bcb219c55f4f"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:11:28Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDec9cfe6b-6831-482e-8e42-befb3e4d7b14"},{"ref":"EIDc206cc66-4c07-4c80-9821-04b5ae6e9e7c"},{"ref":"EID02101ddf-9821-4dd6-b694-5a9dc90fed79"}]},"parent":{"ref":"EID6ee7cbcb-0175-1000-ed8b-752c08217b2f"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:11:26Z","duration":1785,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:11:26Z","duration":2680,"status":"PASSED_MANUAL"},{"id":"EID6ee7d643-0175-1000-0039-4b81fc3cafd2","testStepResults":{"TestStepResult":{"id":"EID6ee7d643-0175-1000-2707-093737842ac6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7d82e-0175-1000-eb32-d602347c2f58","parent":{"ref":"EID6ee7d643-0175-1000-2707-093737842ac6"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:11:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee7d82e-0175-1000-f5a2-1ff74aab0051","parent":{"ref":"EID6ee7d643-0175-1000-2707-093737842ac6"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:11:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee7d82e-0175-1000-7147-d0c829f323e7","parent":{"ref":"EID6ee7d643-0175-1000-2707-093737842ac6"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:11:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee7d82e-0175-1000-c7ac-1ab0fc2c6f83","parent":{"ref":"EID6ee7d643-0175-1000-2707-093737842ac6"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:11:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a4bbe32-0820-4abb-bfaf-248ebf6f79bd"},{"ref":"EIDbde5aaab-b61a-4933-9fab-9c9b971e4030"},{"ref":"EID70345573-a74b-4786-85b7-fe21dcf316ef"}]},"parent":{"ref":"EID6ee7d643-0175-1000-0039-4b81fc3cafd2"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:11:28Z","duration":399,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:11:28Z","duration":492,"status":"PASSED"},{"id":"EID6ee7d82f-0175-1000-98fc-e301948ba3a8","testStepResults":{"TestStepResult":{"id":"EID6ee7d837-0175-1000-22ae-ca686c449913","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7dae1-0175-1000-81f8-73632abdbb45","parent":{"ref":"EID6ee7d837-0175-1000-22ae-ca686c449913"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:11:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee7dae2-0175-1000-cc9e-e1846942da0e","parent":{"ref":"EID6ee7d837-0175-1000-22ae-ca686c449913"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:11:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee7dae2-0175-1000-7e5d-306e5a388adf","parent":{"ref":"EID6ee7d837-0175-1000-22ae-ca686c449913"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:11:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee7dae2-0175-1000-a4d0-7fb1338833e8","parent":{"ref":"EID6ee7d837-0175-1000-22ae-ca686c449913"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:11:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID06d340e8-35ce-41eb-8a03-0b46e2bfbf5e"},{"ref":"EIDa986f632-d36f-46eb-ad18-b0142ab27ca9"},{"ref":"EID489528d2-8e75-4071-80ba-43f071689015"}]},"parent":{"ref":"EID6ee7d82f-0175-1000-98fc-e301948ba3a8"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:11:29Z","duration":568,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:11:29Z","duration":691,"status":"PASSED"},{"id":"EID6ee7dae2-0175-1000-620e-58f2b2cbbe45","testStepResults":{"TestStepResult":[{"id":"EID6ee7daeb-0175-1000-d34e-1806197ba1d3","attachments":{"attachment":[{"ref":"EIDa1ef1ade-29d5-4b07-a62f-e7e7280e40f0"},{"ref":"EIDf39cee14-769e-425b-a323-ecfb44c7e599"},{"ref":"EID241248dc-20da-42aa-a9fc-2fc25919cf05"},{"ref":"EID8559d7aa-b739-417b-b5a1-e50eff6ec4f4"},{"ref":"EID3b88e572-5c05-4f36-9dbd-afae2187094e"},{"ref":"EIDe9386005-1ed2-4b00-84a0-99bd57505dac"},{"ref":"EIDd2493a63-0260-4667-a73d-eb311fe73c72"},{"ref":"EID73aae37e-b91c-43cb-aee2-75308c16a83c"},{"ref":"EIDa68d3e48-3358-4f7e-93c6-8315f7075b57"},{"ref":"EIDa65af3fa-39fc-4fd1-988c-3d1381628e7f"},{"ref":"EID0eb6332b-d129-465f-a8e7-d35d3f2ae4ec"},{"ref":"EID7ef2880c-85d4-4769-870c-680f751928a8"}]},"parent":{"ref":"EID6ee7dae2-0175-1000-620e-58f2b2cbbe45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:11:30Z","duration":1720,"status":"PASSED"},{"id":"EID6ee7e2cc-0175-1000-efd1-88d97873d461","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7ed70-0175-1000-7735-156a34ddef53","parent":{"ref":"EID6ee7e2cc-0175-1000-efd1-88d97873d461"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ed70-0175-1000-f13a-0e1e189ee9f5","parent":{"ref":"EID6ee7e2cc-0175-1000-efd1-88d97873d461"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ed70-0175-1000-590d-e132c76be412","parent":{"ref":"EID6ee7e2cc-0175-1000-efd1-88d97873d461"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ed70-0175-1000-9a86-0a1bfde6fb87","parent":{"ref":"EID6ee7e2cc-0175-1000-efd1-88d97873d461"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ed70-0175-1000-cd4b-300ea456d8f0","parent":{"ref":"EID6ee7e2cc-0175-1000-efd1-88d97873d461"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID425c1e7c-fa3d-4aaf-bd91-9593676f5123"},{"ref":"EIDf3f625ed-1986-4d49-ac47-7ab4b519fdaf"},{"ref":"EID369a4923-bf04-48df-b1c3-ff43c5a5ea35"}]},"parent":{"ref":"EID6ee7dae2-0175-1000-620e-58f2b2cbbe45"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:11:32Z","duration":2533,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:11:30Z","duration":4751,"status":"PASSED"},{"id":"EID6ee7ed71-0175-1000-8f55-e30d7fd9d29a","testStepResults":{"TestStepResult":{"id":"EID6ee7ed71-0175-1000-2f76-b926dc090a5e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f0c6-0175-1000-24aa-c9d0f136121e","parent":{"ref":"EID6ee7ed71-0175-1000-2f76-b926dc090a5e"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f0c6-0175-1000-de4f-bb81312c3bec","parent":{"ref":"EID6ee7ed71-0175-1000-2f76-b926dc090a5e"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f0c6-0175-1000-5021-57ee49881628","parent":{"ref":"EID6ee7ed71-0175-1000-2f76-b926dc090a5e"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f0c6-0175-1000-b681-f5a53e3e811f","parent":{"ref":"EID6ee7ed71-0175-1000-2f76-b926dc090a5e"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID585f7872-393b-4e69-90f2-aac02619ebce"},{"ref":"EID36ee8dc0-d40a-43ee-9e19-73e4b127b5e0"},{"ref":"EIDe300bb4c-4a0f-4042-a95e-9a9815d826af"}]},"parent":{"ref":"EID6ee7ed71-0175-1000-8f55-e30d7fd9d29a"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:11:34Z","duration":678,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:11:34Z","duration":853,"status":"PASSED"},{"id":"EID6ee7f0c6-0175-1000-5029-89d6be889ae5","testStepResults":{"TestStepResult":{"id":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f9c7-0175-1000-3d4d-9970314a5ecc","parent":{"ref":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f9c7-0175-1000-2085-d692f213be11","parent":{"ref":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f9c7-0175-1000-e5ad-7cd16a633412","parent":{"ref":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f9c7-0175-1000-a0df-fc3e1fdfd599","parent":{"ref":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f9c7-0175-1000-19ed-0d4a42103563","parent":{"ref":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f9c7-0175-1000-a673-267bab1c96c3","parent":{"ref":"EID6ee7f0c6-0175-1000-eae1-f3833b6a3f87"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd282a97-63d3-4185-9350-8758db237aa6"},{"ref":"EIDa30a9734-ce2a-45c9-8bd2-1637c563a98c"},{"ref":"EIDe4b935f1-63c0-4dce-9036-ad3c5b50f0a2"}]},"parent":{"ref":"EID6ee7f0c6-0175-1000-5029-89d6be889ae5"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:11:35Z","duration":2167,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:11:35Z","duration":2305,"status":"PASSED"},{"id":"EID6ee7f9c7-0175-1000-ba2f-1aa6751c11ce","testStepResults":{"TestStepResult":{"id":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee80041-0175-1000-aa97-eeb3b849a400","parent":{"ref":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee80041-0175-1000-3cf6-6b0d732de719","parent":{"ref":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee80041-0175-1000-7576-0501b97448b4","parent":{"ref":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee80041-0175-1000-304a-1d71fa103c59","parent":{"ref":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee80041-0175-1000-ddd7-faeafabaa86a","parent":{"ref":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee80041-0175-1000-0d5e-a597eb9087cb","parent":{"ref":"EID6ee7f9c7-0175-1000-880e-0abcffadf90b"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfe1418c6-106c-45e9-be82-a8d449e74046"},{"ref":"EID7e704bcc-0704-4bc4-8dae-bf4fba9ed1a8"},{"ref":"EIDe34559db-9886-43c9-ad59-c6747a20a360"}]},"parent":{"ref":"EID6ee7f9c7-0175-1000-ba2f-1aa6751c11ce"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:11:37Z","duration":1530,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:11:37Z","duration":1658,"status":"PASSED"},{"id":"EID6ee8004d-0175-1000-5c42-fbd3981fe856","testStepResults":{"TestStepResult":{"id":"EID6ee8004d-0175-1000-704e-44af4838a817","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee80d82-0175-1000-50ad-2db20e5a769b","parent":{"ref":"EID6ee8004d-0175-1000-704e-44af4838a817"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80d82-0175-1000-af6b-a3947c2c94e4","parent":{"ref":"EID6ee8004d-0175-1000-704e-44af4838a817"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80d82-0175-1000-4513-e1ce7146e5b8","parent":{"ref":"EID6ee8004d-0175-1000-704e-44af4838a817"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80d82-0175-1000-2243-7b2e0c58e969","parent":{"ref":"EID6ee8004d-0175-1000-704e-44af4838a817"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2125e472-25b6-41ec-996a-00250d1e6b24"},{"ref":"EIDc852ed47-9abe-4e5c-bb01-ff8200cae94f"},{"ref":"EID7586dcb2-26f9-4fe0-91ee-11a93c6461fb"}]},"parent":{"ref":"EID6ee8004d-0175-1000-5c42-fbd3981fe856"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:11:39Z","duration":3292,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:11:39Z","duration":3381,"status":"PASSED"},{"id":"EID6ee80d82-0175-1000-933d-8dcc4ce88b42","testStepResults":{"TestStepResult":[{"id":"EID6ee80d8b-0175-1000-e365-df19f9670443","attachments":{"attachment":[{"ref":"EID6e6c057d-919a-4d56-a16f-e9392e55dc23"},{"ref":"EID170577cb-cd7a-4aa1-b3fc-61027e23a3cf"},{"ref":"EID74601f84-38da-4780-ae38-78644d50cc25"},{"ref":"EID58d4c233-e506-4841-ae3d-9db2874f1099"}]},"parent":{"ref":"EID6ee80d82-0175-1000-933d-8dcc4ce88b42"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:11:42Z","duration":2674,"status":"PASSED"},{"id":"EID6ee8182b-0175-1000-0ab3-d0e8c448d5d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81b5c-0175-1000-71a7-0e89ee32d089","parent":{"ref":"EID6ee8182b-0175-1000-0ab3-d0e8c448d5d3"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:11:46Z","duration":1,"status":"PASSED"},{"id":"EID6ee81b5d-0175-1000-4202-0982b1218e42","parent":{"ref":"EID6ee8182b-0175-1000-0ab3-d0e8c448d5d3"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:11:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee81b5d-0175-1000-5621-ef69e6ab8c1d","parent":{"ref":"EID6ee8182b-0175-1000-0ab3-d0e8c448d5d3"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:11:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee81b5d-0175-1000-4409-3ede4d4d7814","parent":{"ref":"EID6ee8182b-0175-1000-0ab3-d0e8c448d5d3"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:11:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID969e67d1-041b-4641-8291-4ba014389733"},{"ref":"EID27c9f7db-0801-4167-a7a6-e8c5b0f09fe2"},{"ref":"EID080802d1-9dc4-4520-867d-8c4976fa569b"}]},"parent":{"ref":"EID6ee80d82-0175-1000-933d-8dcc4ce88b42"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:11:45Z","duration":683,"status":"PASSED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:11:42Z","duration":3547,"status":"PASSED"},{"id":"EID6ee81b5d-0175-1000-fc44-97c2d0ca1f44","testStepResults":{"TestStepResult":{"id":"EID6ee81b5d-0175-1000-8002-6323bebe0531","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81d6d-0175-1000-cad1-896380dcd979","parent":{"ref":"EID6ee81b5d-0175-1000-8002-6323bebe0531"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:11:47Z","duration":1,"status":"PASSED"},{"id":"EID6ee81d6e-0175-1000-c4d4-31ad1f6c10da","parent":{"ref":"EID6ee81b5d-0175-1000-8002-6323bebe0531"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81d6e-0175-1000-be46-83be0611a77d","parent":{"ref":"EID6ee81b5d-0175-1000-8002-6323bebe0531"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81d6e-0175-1000-9ef2-2d80e7a4d5da","parent":{"ref":"EID6ee81b5d-0175-1000-8002-6323bebe0531"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf501519a-7364-4661-81e6-da573899a76a"},{"ref":"EIDe7854a84-26f6-49de-922b-7dbffca2e76b"},{"ref":"EIDc1669833-821a-4563-a83e-c35b8d16fa75"}]},"parent":{"ref":"EID6ee81b5d-0175-1000-fc44-97c2d0ca1f44"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:11:46Z","duration":360,"status":"PASSED"}},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:11:46Z","duration":529,"status":"PASSED"},{"id":"EID6ee81d6e-0175-1000-e0c4-1010292516b2","testStepResults":{"TestStepResult":[{"id":"EID6ee81d6e-0175-1000-6f4e-841a097393fb","parent":{"ref":"EID6ee81d6e-0175-1000-e0c4-1010292516b2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81d6e-0175-1000-ff9f-2bc366adb9a9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8203b-0175-1000-ca40-d86d52fb98bb","parent":{"ref":"EID6ee81d6e-0175-1000-ff9f-2bc366adb9a9"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee8203c-0175-1000-8d78-b5159de0c1f9","parent":{"ref":"EID6ee81d6e-0175-1000-ff9f-2bc366adb9a9"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee8203c-0175-1000-2ae0-3a2a8a9d9f3f","parent":{"ref":"EID6ee81d6e-0175-1000-ff9f-2bc366adb9a9"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee8203c-0175-1000-3f4c-7dfc9d25e352","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee81d6e-0175-1000-ff9f-2bc366adb9a9"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf76f7d67-c1db-45a6-b924-2b58595a6cba"},{"ref":"EID63afb4c9-36db-4bdf-9499-f07ff3dc7115"},{"ref":"EIDfde1e08e-40c6-4f7f-8138-4a9e2b49d21a"}]},"parent":{"ref":"EID6ee81d6e-0175-1000-e0c4-1010292516b2"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:11:47Z","duration":632,"status":"FAILED"}]},"parent":{"ref":"EID6ee79531-0175-1000-df26-d6b74e185b5d"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:11:47Z","duration":718,"status":"FAILED"}]},"parent":{"ref":"EIDdcbde145-24a2-4238-a4b0-1aacef650d00"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:11:12Z","duration":35595,"status":"FAILED"},{"id":"EID6ee8203c-0175-1000-5a6e-cd4315febb88","testCaseResults":{"TestCaseResult":[{"id":"EID6ee8203d-0175-1000-4da4-2945ac9dd3d1","testStepResults":{"TestStepResult":[{"id":"EID6ee8203d-0175-1000-6859-e5ac3bb644e4","parent":{"ref":"EID6ee8203d-0175-1000-4da4-2945ac9dd3d1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee8203d-0175-1000-6738-35fdc51ffd95","parent":{"ref":"EID6ee8203d-0175-1000-4da4-2945ac9dd3d1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":360,"status":"PASSED"},{"id":"EID6ee8203d-0175-1000-0e39-9b6041cb73a6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82368-0175-1000-020b-dd11ad693591","parent":{"ref":"EID6ee8203d-0175-1000-0e39-9b6041cb73a6"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee82368-0175-1000-7867-1aaad882a619","parent":{"ref":"EID6ee8203d-0175-1000-0e39-9b6041cb73a6"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee82368-0175-1000-69b6-a538387e8ba3","parent":{"ref":"EID6ee8203d-0175-1000-0e39-9b6041cb73a6"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf3d7e48d-f308-4193-b68a-9c9ec3fc2159"},{"ref":"EID235f2346-f1ae-456f-8609-bccbcb579067"},{"ref":"EIDba20db68-6991-480c-9c2a-19ad97a91ef3"}]},"parent":{"ref":"EID6ee8203d-0175-1000-4da4-2945ac9dd3d1"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:11:47Z","duration":716,"status":"PASSED"},{"id":"EID6ee82369-0175-1000-c771-34a4a48580b1","attachments":{"attachment":{"ref":"EID820260de-2639-4570-9cc1-bb28622f70e0"}},"parent":{"ref":"EID6ee8203d-0175-1000-4da4-2945ac9dd3d1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee8237a-0175-1000-6758-d10f24e487e6","parent":{"ref":"EID6ee8203d-0175-1000-4da4-2945ac9dd3d1"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:11:48Z","duration":11,"status":"PASSED"}]},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:11:47Z","duration":841,"status":"PASSED"},{"id":"EID6ee82386-0175-1000-1d2a-f3fc04705d83","testStepResults":{"TestStepResult":[{"id":"EID6ee82386-0175-1000-c7e6-0b85057c6943","parent":{"ref":"EID6ee82386-0175-1000-1d2a-f3fc04705d83"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:11:48Z","duration":449,"status":"PASSED"},{"id":"EID6ee82386-0175-1000-9188-39f5bf82bef6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82fe1-0175-1000-1a43-f6785fde394e","parent":{"ref":"EID6ee82386-0175-1000-9188-39f5bf82bef6"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:11:51Z","duration":1,"status":"PASSED"},{"id":"EID6ee82fe2-0175-1000-2c38-a7b57cd7b9ba","parent":{"ref":"EID6ee82386-0175-1000-9188-39f5bf82bef6"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee82fe2-0175-1000-6670-7f9f121fc94f","parent":{"ref":"EID6ee82386-0175-1000-9188-39f5bf82bef6"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee82fe2-0175-1000-a831-57bd3f6689f9","parent":{"ref":"EID6ee82386-0175-1000-9188-39f5bf82bef6"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee82fe2-0175-1000-23be-1faab865ec9d","parent":{"ref":"EID6ee82386-0175-1000-9188-39f5bf82bef6"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf6a1e5a2-964c-4353-844d-6c4481f778f7"},{"ref":"EIDd9bd561c-8dc8-466e-89b4-56d03e79ad39"},{"ref":"EID7434c90a-c6d5-4cd4-844f-36c06aa0e2ac"}]},"parent":{"ref":"EID6ee82386-0175-1000-1d2a-f3fc04705d83"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:11:48Z","duration":3070,"status":"PASSED"}]},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:11:48Z","duration":3164,"status":"PASSED"},{"id":"EID6ee82fe2-0175-1000-ca5a-2bb2aa5ac7cd","testStepResults":{"TestStepResult":[{"id":"EID6ee82fe2-0175-1000-8472-67a9629e8432","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee832d4-0175-1000-ec9b-b2673656eef1","parent":{"ref":"EID6ee82fe2-0175-1000-8472-67a9629e8432"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee832d4-0175-1000-1af5-80a979972f7c","parent":{"ref":"EID6ee82fe2-0175-1000-8472-67a9629e8432"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee832d4-0175-1000-c6d6-ea146a2b2dba","parent":{"ref":"EID6ee82fe2-0175-1000-8472-67a9629e8432"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID76de4aff-af7d-423a-a624-e85df7b21a87"},{"ref":"EIDedaa7144-8a37-4217-93de-1d2b71c16313"},{"ref":"EID6ba92b8b-a533-4b54-8abf-0a16bb5739f6"}]},"parent":{"ref":"EID6ee82fe2-0175-1000-ca5a-2bb2aa5ac7cd"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:11:51Z","duration":700,"status":"PASSED"},{"id":"EID6ee832d4-0175-1000-9e87-81a4518db671","attachments":{"attachment":{"ref":"EIDc65d1915-b8e1-4541-bd3d-3d7b204f267a"}},"parent":{"ref":"EID6ee82fe2-0175-1000-ca5a-2bb2aa5ac7cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:11:52Z","duration":1,"status":"PASSED"},{"id":"EID6ee832e7-0175-1000-b820-62e673b5af47","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8355f-0175-1000-055a-bf9a049480e5","parent":{"ref":"EID6ee832e7-0175-1000-b820-62e673b5af47"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee8355f-0175-1000-e02c-85bb7740d4f7","parent":{"ref":"EID6ee832e7-0175-1000-b820-62e673b5af47"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee8355f-0175-1000-8640-7bfac9f6af1f","parent":{"ref":"EID6ee832e7-0175-1000-b820-62e673b5af47"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee8355f-0175-1000-4373-032c9807131b","parent":{"ref":"EID6ee832e7-0175-1000-b820-62e673b5af47"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee8355f-0175-1000-3f07-9546ee6ca7a9","parent":{"ref":"EID6ee832e7-0175-1000-b820-62e673b5af47"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c06421d-ec82-47f8-b602-25e3d3edb07b"},{"ref":"EIDe4a731f3-5a86-41f6-88ed-727f359f1777"},{"ref":"EID84ba5355-18a5-48cd-8a85-099ed791d424"}]},"parent":{"ref":"EID6ee82fe2-0175-1000-ca5a-2bb2aa5ac7cd"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:11:52Z","duration":539,"status":"PASSED"}]},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:11:51Z","duration":1406,"status":"PASSED"},{"id":"EID6ee83560-0175-1000-486b-aed012cb64ec","testStepResults":{"TestStepResult":[{"id":"EID6ee83560-0175-1000-fc83-1df7bcab2e66","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee83a11-0175-1000-e9a7-4ab6eef08bbf","parent":{"ref":"EID6ee83560-0175-1000-fc83-1df7bcab2e66"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:11:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee83a11-0175-1000-e028-fd9f4be458ea","parent":{"ref":"EID6ee83560-0175-1000-fc83-1df7bcab2e66"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:11:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee83a11-0175-1000-93ab-073d6a688d76","parent":{"ref":"EID6ee83560-0175-1000-fc83-1df7bcab2e66"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:11:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee83a11-0175-1000-ab97-004c1b72f405","parent":{"ref":"EID6ee83560-0175-1000-fc83-1df7bcab2e66"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:11:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc821b665-5f85-4055-bd54-06cc9b609155"},{"ref":"EID7e2bf82a-d5e7-4e2b-bc57-b2afb552afee"},{"ref":"EID2b6a301f-90dc-4a98-a48a-31adf584d7db"}]},"parent":{"ref":"EID6ee83560-0175-1000-486b-aed012cb64ec"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:11:53Z","duration":1092,"status":"PASSED"},{"id":"EID6ee83a12-0175-1000-669d-bb00ac792639","attachments":{"attachment":{"ref":"EID82135bfc-f1a7-4e59-99d6-360d4c0a4654"}},"parent":{"ref":"EID6ee83560-0175-1000-486b-aed012cb64ec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:11:54Z","duration":1,"status":"PASSED"},{"id":"EID6ee83a1f-0175-1000-464e-f832455e2ea1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee83c0d-0175-1000-5742-1731c1e92166","parent":{"ref":"EID6ee83a1f-0175-1000-464e-f832455e2ea1"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:11:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee83c0d-0175-1000-73e0-d58a9dec9dcd","parent":{"ref":"EID6ee83a1f-0175-1000-464e-f832455e2ea1"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:11:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID781d8bf8-cdbf-4193-b890-bf31edb8382b"},{"ref":"EIDf5a73f71-272c-43a5-bc18-eb4721bd0021"}]},"parent":{"ref":"EID6ee83560-0175-1000-486b-aed012cb64ec"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:11:54Z","duration":487,"status":"PASSED"},{"id":"EID6ee83c0d-0175-1000-d0a9-5c0be5f5cdc5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee83f81-0175-1000-a2c3-d8b95a5aee19","parent":{"ref":"EID6ee83c0d-0175-1000-d0a9-5c0be5f5cdc5"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:11:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee83f81-0175-1000-24be-51a095af0100","parent":{"ref":"EID6ee83c0d-0175-1000-d0a9-5c0be5f5cdc5"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:11:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee83f81-0175-1000-9c8e-42ad753bd623","parent":{"ref":"EID6ee83c0d-0175-1000-d0a9-5c0be5f5cdc5"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:11:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee83f81-0175-1000-7580-88db824b5e51","parent":{"ref":"EID6ee83c0d-0175-1000-d0a9-5c0be5f5cdc5"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:11:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID165a0eb8-554a-4e61-be85-4ecb99a7c4db"},{"ref":"EID1caa98d4-58d1-473d-a221-836ccbb136c4"},{"ref":"EID2f1bb15c-1d03-47e6-9b5a-1e2553905a28"}]},"parent":{"ref":"EID6ee83560-0175-1000-486b-aed012cb64ec"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:11:54Z","duration":641,"status":"PASSED"}]},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2593,"status":"PASSED"},{"id":"EID6ee83f82-0175-1000-b14d-278c714c1e72","testStepResults":{"TestStepResult":{"id":"EID6ee83f82-0175-1000-37c4-28c1c1edd47d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8415f-0175-1000-9fb4-478edcded282","parent":{"ref":"EID6ee83f82-0175-1000-37c4-28c1c1edd47d"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:11:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee8415f-0175-1000-f2ca-cbfb68708700","parent":{"ref":"EID6ee83f82-0175-1000-37c4-28c1c1edd47d"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:11:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee8415f-0175-1000-04f8-1229edb2ef1f","parent":{"ref":"EID6ee83f82-0175-1000-37c4-28c1c1edd47d"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:11:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID752b6618-b0ae-4a15-9e2e-d4369a0b0af7"},{"ref":"EID6cd504f5-21d9-468e-9f21-f1b00695c210"},{"ref":"EID40257754-ae59-470e-adfb-fe679b95bad5"}]},"parent":{"ref":"EID6ee83f82-0175-1000-b14d-278c714c1e72"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:11:55Z","duration":415,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:11:55Z","duration":477,"status":"PASSED"},{"id":"EID6ee8416a-0175-1000-224e-32913a589689","testStepResults":{"TestStepResult":{"id":"EID6ee8416a-0175-1000-f7a2-3770284521f6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee84bae-0175-1000-dadd-cbf666597ca8","parent":{"ref":"EID6ee8416a-0175-1000-f7a2-3770284521f6"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:11:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee84bae-0175-1000-aad3-6bb48bc56e68","parent":{"ref":"EID6ee8416a-0175-1000-f7a2-3770284521f6"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:11:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee84bae-0175-1000-fefc-5d4b0505eec5","parent":{"ref":"EID6ee8416a-0175-1000-f7a2-3770284521f6"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:11:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID49987d12-3f4b-46d7-8a12-2c086bb345d9"},{"ref":"EID4862203e-ad25-44ab-b4a6-6612f9ab63a9"},{"ref":"EID0c47fa8f-26bb-4f67-bfb6-512f5598dfa7"}]},"parent":{"ref":"EID6ee8416a-0175-1000-224e-32913a589689"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:11:56Z","duration":1619,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:11:56Z","duration":2628,"status":"PASSED"},{"id":"EID6ee84bae-0175-1000-896b-41738601cba1","testStepResults":{"TestStepResult":{"id":"EID6ee84bae-0175-1000-f67b-47dea5b77c54","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee84e33-0175-1000-3cb9-3d72ae140fe9","parent":{"ref":"EID6ee84bae-0175-1000-f67b-47dea5b77c54"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee84e33-0175-1000-3565-33f4fa955c46","parent":{"ref":"EID6ee84bae-0175-1000-f67b-47dea5b77c54"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:11:59Z","duration":1,"status":"PASSED"},{"id":"EID6ee84e34-0175-1000-06e8-892432b2bd39","parent":{"ref":"EID6ee84bae-0175-1000-f67b-47dea5b77c54"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee84e34-0175-1000-bca2-23c907361dc2","parent":{"ref":"EID6ee84bae-0175-1000-f67b-47dea5b77c54"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee84e34-0175-1000-e089-e74e1ee98311","parent":{"ref":"EID6ee84bae-0175-1000-f67b-47dea5b77c54"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3222975b-6a32-4cc1-b937-67e41630fb01"},{"ref":"EIDd5471a37-1368-45bf-a073-ee2eea24c412"},{"ref":"EID146c87d7-8154-43f5-bfe6-3c379e2a9bec"}]},"parent":{"ref":"EID6ee84bae-0175-1000-896b-41738601cba1"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:11:58Z","duration":467,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:11:58Z","duration":646,"status":"PASSED"},{"id":"EID6ee84e38-0175-1000-a89b-32d544df3014","testStepResults":{"TestStepResult":{"id":"EID6ee84e38-0175-1000-e8b5-ceec3ef78988","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee84fde-0175-1000-e9c4-8550682075e5","parent":{"ref":"EID6ee84e38-0175-1000-e8b5-ceec3ef78988"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee84fde-0175-1000-1a7a-d055045ed9a4","parent":{"ref":"EID6ee84e38-0175-1000-e8b5-ceec3ef78988"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee84fde-0175-1000-3c58-2bf6b4b957ac","parent":{"ref":"EID6ee84e38-0175-1000-e8b5-ceec3ef78988"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:11:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd220fe72-2cd2-4e91-bbd2-67625aa6f600"},{"ref":"EIDe2a101cc-53f5-4d4e-ad3c-9e3ddabc93d5"},{"ref":"EID0f64e954-b7f0-4742-9aa3-37e54c9f99c1"}]},"parent":{"ref":"EID6ee84e38-0175-1000-a89b-32d544df3014"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:11:59Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:11:59Z","duration":422,"status":"PASSED"},{"id":"EID6ee84fe7-0175-1000-6eea-a89c5d1176eb","testStepResults":{"TestStepResult":{"id":"EID6ee84fe7-0175-1000-37f5-000da9980964","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee850b4-0175-1000-cb5a-a738eb5dfe3a","parent":{"ref":"EID6ee84fe7-0175-1000-37f5-000da9980964"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee850b4-0175-1000-f980-bba8ce9af77f","parent":{"ref":"EID6ee84fe7-0175-1000-37f5-000da9980964"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee850b4-0175-1000-6d92-49e86406ddd4","parent":{"ref":"EID6ee84fe7-0175-1000-37f5-000da9980964"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0857993e-9de3-476c-ae05-83cda0209301"},{"ref":"EID236e0069-0c9c-44be-8bad-34b0e43c86af"},{"ref":"EID15dc2233-ffba-4ecd-b86e-53a14f18ae97"}]},"parent":{"ref":"EID6ee84fe7-0175-1000-6eea-a89c5d1176eb"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:11:59Z","duration":105,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:11:59Z","duration":205,"status":"PASSED"},{"id":"EID6ee850b4-0175-1000-19dc-d2274bc78f1a","testStepResults":{"TestStepResult":{"id":"EID6ee850b5-0175-1000-2ded-32d15b0c7abd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85145-0175-1000-bef1-ccfedd28d571","parent":{"ref":"EID6ee850b5-0175-1000-2ded-32d15b0c7abd"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee85145-0175-1000-8823-dce85763d749","parent":{"ref":"EID6ee850b5-0175-1000-2ded-32d15b0c7abd"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee85145-0175-1000-028d-30bd92bb8294","parent":{"ref":"EID6ee850b5-0175-1000-2ded-32d15b0c7abd"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee85145-0175-1000-28c0-b29657588eef","parent":{"ref":"EID6ee850b5-0175-1000-2ded-32d15b0c7abd"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID85e84670-15ca-4026-9a9e-1705b0e9d57f"},{"ref":"EIDbafc0d25-3c30-4be6-88b6-8a1b59d67371"},{"ref":"EIDd6c69615-e4a9-4244-b4db-d0055982c6a2"}]},"parent":{"ref":"EID6ee850b4-0175-1000-19dc-d2274bc78f1a"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:12:00Z","duration":51,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:12:00Z","duration":145,"status":"PASSED"},{"id":"EID6ee85146-0175-1000-57ca-2e506ff4935a","testStepResults":{"TestStepResult":{"id":"EID6ee85146-0175-1000-e57d-6a98cbf23b62","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee851c9-0175-1000-347d-a47d75ca8696","parent":{"ref":"EID6ee85146-0175-1000-e57d-6a98cbf23b62"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee851c9-0175-1000-d41e-cf2696a296e2","parent":{"ref":"EID6ee85146-0175-1000-e57d-6a98cbf23b62"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee851c9-0175-1000-04a2-35b66bf8b988","parent":{"ref":"EID6ee85146-0175-1000-e57d-6a98cbf23b62"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee851c9-0175-1000-5423-53597302efce","parent":{"ref":"EID6ee85146-0175-1000-e57d-6a98cbf23b62"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1a89478-82f6-4a7f-8dd9-2fc0d3abee00"},{"ref":"EIDcfe99cc8-d499-41e9-931b-23537cfd6f5c"},{"ref":"EID67c1d7da-9350-4f36-ba9f-98bc744d51e2"}]},"parent":{"ref":"EID6ee85146-0175-1000-57ca-2e506ff4935a"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:12:00Z","duration":68,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:12:00Z","duration":131,"status":"PASSED"},{"id":"EID6ee851c9-0175-1000-4a49-76120db79796","testStepResults":{"TestStepResult":[{"id":"EID6ee851c9-0175-1000-a5fb-1ac6f3bcc17e","parent":{"ref":"EID6ee851c9-0175-1000-4a49-76120db79796"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee851ca-0175-1000-0163-75923a9b913b","parent":{"ref":"EID6ee851c9-0175-1000-4a49-76120db79796"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:12:00Z","duration":1256,"status":"PASSED"},{"id":"EID6ee851ca-0175-1000-4cc6-576f6f22864f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85281-0175-1000-abfe-2aabd0f80e3f","parent":{"ref":"EID6ee851ca-0175-1000-4cc6-576f6f22864f"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee85281-0175-1000-5001-21d9d2bb16fe","parent":{"ref":"EID6ee851ca-0175-1000-4cc6-576f6f22864f"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee85281-0175-1000-55b2-8106b342cf28","parent":{"ref":"EID6ee851ca-0175-1000-4cc6-576f6f22864f"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee85281-0175-1000-3f52-2f80d6532b39","parent":{"ref":"EID6ee851ca-0175-1000-4cc6-576f6f22864f"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0e2ac8ec-f5f8-4226-be25-26f963fbeb44"},{"ref":"EID46643897-bc58-4600-a8e3-f4fabd83d07e"},{"ref":"EID7bf7988e-b4d8-4c5c-8fee-5edf1944a8e1"}]},"parent":{"ref":"EID6ee851c9-0175-1000-4a49-76120db79796"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:12:00Z","duration":56,"status":"PASSED"},{"id":"EID6ee85281-0175-1000-ec0d-1081b0c771f0","attachments":{"attachment":{"ref":"EID9c634ab1-f22e-44f3-a0cf-73cee077d0c3"}},"parent":{"ref":"EID6ee851c9-0175-1000-4a49-76120db79796"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:12:00Z","duration":1,"status":"PASSED"},{"id":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8531d-0175-1000-4a1c-c07a12c20df7","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-1d06-b51b6f25e3f7","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-9731-db4c14f31b3b","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-4e51-c9a9b09ff93f","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-307c-5617b32e18c5","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-205d-9b2f474d1d86","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-5ae0-50c7c787a666","parent":{"ref":"EID6ee8528c-0175-1000-fe24-0b6bc44dcf73"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID75b9869f-bd43-4dc4-8560-7d7462c96b6f"},{"ref":"EID2f8f021e-d248-49e6-86e6-a70b86a98a4c"},{"ref":"EID56e46bbd-8050-4013-8505-1c313d4f988a"}]},"parent":{"ref":"EID6ee851c9-0175-1000-4a49-76120db79796"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:12:00Z","duration":49,"status":"PASSED"}]},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:12:00Z","duration":340,"status":"PASSED"},{"id":"EID6ee8531d-0175-1000-0c2b-da6637f46f9c","testStepResults":{"TestStepResult":[{"id":"EID6ee8531e-0175-1000-ca44-12503ddf05a3","parent":{"ref":"EID6ee8531d-0175-1000-0c2b-da6637f46f9c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:12:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee8531e-0175-1000-69be-b6903b828af8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8549f-0175-1000-860b-05361cca35ed","parent":{"ref":"EID6ee8531e-0175-1000-69be-b6903b828af8"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee8549f-0175-1000-75e7-9796c47b2113","parent":{"ref":"EID6ee8531e-0175-1000-69be-b6903b828af8"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee8549f-0175-1000-7ba5-7854c0ab2015","parent":{"ref":"EID6ee8531e-0175-1000-69be-b6903b828af8"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee8549f-0175-1000-2644-d674e9da53f3","parent":{"ref":"EID6ee8531e-0175-1000-69be-b6903b828af8"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID68d6b523-177c-462b-8a57-5c4ec151e5cb"},{"ref":"EIDdfa03490-609f-4cc4-bb14-3aa07fcee2ce"},{"ref":"EID27f6f92b-e51f-4581-aa1a-4fc1cf5fefe4"}]},"parent":{"ref":"EID6ee8531d-0175-1000-0c2b-da6637f46f9c"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:12:00Z","duration":144,"status":"PASSED"},{"id":"EID6ee854a0-0175-1000-d055-27dd072784fe","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee854be-0175-1000-b1ed-457fd9c75081","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee855ce-0175-1000-f5dd-c8af1d55fa67","parent":{"ref":"EID6ee854be-0175-1000-b1ed-457fd9c75081"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee855ce-0175-1000-50ab-d7b32d142edc","parent":{"ref":"EID6ee854be-0175-1000-b1ed-457fd9c75081"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee855ce-0175-1000-735b-0d55608e0ae3","parent":{"ref":"EID6ee854be-0175-1000-b1ed-457fd9c75081"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbefe175b-56d2-421a-8dce-f87bfb2d27ca"},{"ref":"EIDaf3d3f37-3980-4db6-8f7c-91d44682e53f"},{"ref":"EID49fda731-39f8-4960-8b50-6a02466dbe9d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:12:01Z","duration":202,"status":"PASSED"},{"id":"EID6ee855d7-0175-1000-41d6-e366bbe25d59","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8569b-0175-1000-55eb-d400b0f6fc85","parent":{"ref":"EID6ee855d7-0175-1000-41d6-e366bbe25d59"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee8569b-0175-1000-8b86-79aa86964dde","parent":{"ref":"EID6ee855d7-0175-1000-41d6-e366bbe25d59"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee8569b-0175-1000-c572-a93e4987890d","parent":{"ref":"EID6ee855d7-0175-1000-41d6-e366bbe25d59"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID326b9c1b-540e-49a9-b3f5-0247ea48538d"},{"ref":"EID726b6783-47ad-415d-a2f3-90086d0a0c95"},{"ref":"EIDa7697994-4cbc-459d-8d0a-ffdd63a48c36"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:12:01Z","duration":149,"status":"PASSED"},{"id":"EID6ee856a5-0175-1000-c3b4-e829f665257f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85724-0175-1000-d30b-ba563dab79ff","parent":{"ref":"EID6ee856a5-0175-1000-c3b4-e829f665257f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee85724-0175-1000-23d7-6210fda1725c","parent":{"ref":"EID6ee856a5-0175-1000-c3b4-e829f665257f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee85724-0175-1000-94c4-d41a39921621","parent":{"ref":"EID6ee856a5-0175-1000-c3b4-e829f665257f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:12:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0250dbb2-5486-424f-88a5-e1e110362d10"},{"ref":"EIDfe4c70c8-e7ce-4380-89d9-4fe82de4120c"},{"ref":"EID5f8ccaeb-9d31-4423-97cc-a099b03e5f75"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:12:01Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6ee8531d-0175-1000-0c2b-da6637f46f9c"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:12:01Z","duration":645,"status":"PASSED"},{"id":"EID6ee85725-0175-1000-91b8-17d6fe18a605","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee857d9-0175-1000-a6c2-d29d66a4a393","parent":{"ref":"EID6ee85725-0175-1000-91b8-17d6fe18a605"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee857d9-0175-1000-9c15-2cfcd0dd9330","parent":{"ref":"EID6ee85725-0175-1000-91b8-17d6fe18a605"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee857d9-0175-1000-0401-5f845202c9fb","parent":{"ref":"EID6ee85725-0175-1000-91b8-17d6fe18a605"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee857d9-0175-1000-e563-9ee2ee1a2726","parent":{"ref":"EID6ee85725-0175-1000-91b8-17d6fe18a605"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55d9282b-c725-4634-9608-6a4961c56a1a"},{"ref":"EID225d5edc-956a-4181-a24e-7ffacb0793e8"},{"ref":"EID8624890e-1b40-4271-8b81-edfc45fcf179"}]},"parent":{"ref":"EID6ee8531d-0175-1000-0c2b-da6637f46f9c"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:12:01Z","duration":72,"status":"PASSED"}]},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:12:00Z","duration":1212,"status":"PASSED"},{"id":"EID6ee857da-0175-1000-fe5f-576393e4460b","testStepResults":{"TestStepResult":{"id":"EID6ee857e1-0175-1000-a60b-47a48f0624fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85a5f-0175-1000-9f2f-b6f8f18e68fc","parent":{"ref":"EID6ee857e1-0175-1000-a60b-47a48f0624fc"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee85a5f-0175-1000-b3e6-9e1f260f93fc","parent":{"ref":"EID6ee857e1-0175-1000-a60b-47a48f0624fc"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee85a5f-0175-1000-5bbf-5d29cb2a925d","parent":{"ref":"EID6ee857e1-0175-1000-a60b-47a48f0624fc"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee85a5f-0175-1000-debb-97d34f75c5ba","parent":{"ref":"EID6ee857e1-0175-1000-a60b-47a48f0624fc"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:12:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa692fcef-1c3d-435d-a689-7ff7741dfff5"},{"ref":"EIDf885d382-f17b-4a10-b6ec-9d40b93ad157"},{"ref":"EID5c95007b-eff6-4b84-9a4f-1e0c7f81ebc8"}]},"parent":{"ref":"EID6ee857da-0175-1000-fe5f-576393e4460b"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:12:02Z","duration":565,"status":"PASSED"}},"parent":{"ref":"EID6ee8203c-0175-1000-5a6e-cd4315febb88"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:12:02Z","duration":645,"status":"PASSED"}]},"parent":{"ref":"EIDdcbde145-24a2-4238-a4b0-1aacef650d00"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:11:47Z","duration":14883,"status":"PASSED"},{"id":"EID6ee85a5f-0175-1000-c13c-998e3118764a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee85a60-0175-1000-bf46-450eaa462964","testStepResults":{"TestStepResult":[{"id":"EID6ee85a60-0175-1000-a7aa-9f31136212de","parent":{"ref":"EID6ee85a60-0175-1000-bf46-450eaa462964"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:12:02Z","duration":1377,"status":"PASSED"},{"id":"EID6ee85a67-0175-1000-f90e-8b4f7202805e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85c17-0175-1000-c152-df968c7508e5","parent":{"ref":"EID6ee85a67-0175-1000-f90e-8b4f7202805e"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85c17-0175-1000-6ef4-a1df359d480e","parent":{"ref":"EID6ee85a67-0175-1000-f90e-8b4f7202805e"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85c17-0175-1000-b2c2-91ff8a4c4bd6","parent":{"ref":"EID6ee85a67-0175-1000-f90e-8b4f7202805e"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc7389c6a-a3df-4946-8dbd-3c07e45032e6"},{"ref":"EID4d2d7bbe-65e6-4646-bebd-17f83ae34521"},{"ref":"EIDa4c209dd-5c33-4aee-90f8-23e700779336"}]},"parent":{"ref":"EID6ee85a60-0175-1000-bf46-450eaa462964"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:12:02Z","duration":319,"status":"PASSED"},{"id":"EID6ee85c17-0175-1000-8af6-34c465f26cf3","attachments":{"attachment":{"ref":"EID79627cb9-d2f1-48a7-bba4-27ef7c1528cc"}},"parent":{"ref":"EID6ee85a60-0175-1000-bf46-450eaa462964"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:12:03Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:12:02Z","duration":457,"status":"PASSED"},{"id":"EID6ee85c2a-0175-1000-9b82-eaed2c705cff","testStepResults":{"TestStepResult":[{"id":"EID6ee85c2a-0175-1000-2568-51dba9af9afc","parent":{"ref":"EID6ee85c2a-0175-1000-9b82-eaed2c705cff"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:12:03Z","duration":1377,"status":"PASSED"},{"id":"EID6ee85c32-0175-1000-6d9e-c7e270e38602","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85cd8-0175-1000-dd00-84438000bf17","parent":{"ref":"EID6ee85c32-0175-1000-6d9e-c7e270e38602"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85cd8-0175-1000-f9f0-d36e5172c67f","parent":{"ref":"EID6ee85c32-0175-1000-6d9e-c7e270e38602"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85cd8-0175-1000-81c9-c1f9238a8e07","parent":{"ref":"EID6ee85c32-0175-1000-6d9e-c7e270e38602"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85cd8-0175-1000-cd61-6568453b6912","parent":{"ref":"EID6ee85c32-0175-1000-6d9e-c7e270e38602"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1dfa521f-573c-4baf-b30a-d01aebfa45aa"},{"ref":"EIDdc4bd8e8-7071-4c7a-ab84-24852bdc5340"},{"ref":"EIDab3359b8-80f7-4018-a731-986bbdc5fc20"}]},"parent":{"ref":"EID6ee85c2a-0175-1000-9b82-eaed2c705cff"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:12:03Z","duration":90,"status":"PASSED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:12:03Z","duration":174,"status":"PASSED"},{"id":"EID6ee85cd8-0175-1000-27c8-0fc14d86247a","testStepResults":{"TestStepResult":[{"id":"EID6ee85cd8-0175-1000-ffeb-a37a72c07380","parent":{"ref":"EID6ee85cd8-0175-1000-27c8-0fc14d86247a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:12:03Z","duration":1377,"status":"PASSED"},{"id":"EID6ee85cd8-0175-1000-44d7-ff4b3a6e145a","parent":{"ref":"EID6ee85cd8-0175-1000-27c8-0fc14d86247a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:12:03Z","duration":28,"status":"PASSED"},{"id":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee85dc0-0175-1000-0685-6b9487de7363","parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85dc0-0175-1000-24ff-a4787bfefecf","parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85dc0-0175-1000-9267-178d634ebef5","parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85dc0-0175-1000-6d6a-6fea8a45f267","parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85dc0-0175-1000-cc43-12fb5465a92a","parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85dc0-0175-1000-5e55-bb4f5dead270","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"FAILED"},{"id":"EID6ee85dc0-0175-1000-531a-099d5114232b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee85cf4-0175-1000-cdb5-a5e36cea662c"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID2917ad72-9c29-4053-a15a-3cc0f18a43e9"},{"ref":"EIDa0c78de7-b816-4509-bf50-675f264316d3"},{"ref":"EIDf82b7ffe-85a3-4049-ae3d-2ad6d8c0e9bf"}]},"parent":{"ref":"EID6ee85cd8-0175-1000-27c8-0fc14d86247a"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:12:03Z","duration":92,"status":"FAILED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:12:03Z","duration":240,"status":"FAILED"},{"id":"EID6ee85dc8-0175-1000-371a-f9dad5fb9151","testStepResults":{"TestStepResult":[{"id":"EID6ee85dc8-0175-1000-d775-e092eea638bf","parent":{"ref":"EID6ee85dc8-0175-1000-371a-f9dad5fb9151"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:12:03Z","duration":1377,"status":"PASSED"},{"id":"EID6ee85dd1-0175-1000-8cf1-d4ed1a665a19","parent":{"ref":"EID6ee85dc8-0175-1000-371a-f9dad5fb9151"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:12:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8610c-0175-1000-e397-7e51bdd0af6a","parent":{"ref":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:12:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee8610c-0175-1000-f5fc-16e23392a922","parent":{"ref":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:12:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee8610c-0175-1000-a7a2-62c38f4d05b5","parent":{"ref":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:12:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee8610c-0175-1000-9dce-bf533e571a5c","parent":{"ref":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:12:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee8610c-0175-1000-e800-00b298934ca7","parent":{"ref":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:12:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee8610c-0175-1000-69c4-f8cfc5e483e9","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee85dd1-0175-1000-8c3a-45fd6ecd9124"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:12:04Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfd404ca4-8059-4045-b294-c7da8f88361a"},{"ref":"EID4b8c226d-24f1-4c5c-a0a2-65b5d0abc128"},{"ref":"EIDacd4c54e-6414-41be-9895-963aaf1d914a"}]},"parent":{"ref":"EID6ee85dc8-0175-1000-371a-f9dad5fb9151"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:12:03Z","duration":96,"status":"FAILED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:12:03Z","duration":844,"status":"FAILED"},{"id":"EID6ee86114-0175-1000-5fb2-e74786b41be2","testStepResults":{"TestStepResult":[{"id":"EID6ee8611e-0175-1000-7954-8ae97b28e822","parent":{"ref":"EID6ee86114-0175-1000-5fb2-e74786b41be2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:12:04Z","duration":1377,"status":"PASSED"},{"id":"EID6ee8611e-0175-1000-4dc3-21a6768576ef","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID4ded205c-7f02-44ea-853d-767a9beba369"},{"ref":"EID14336a70-b3d3-40ae-abef-afb27e4f3e06"},{"ref":"EIDb687b314-e946-4e9f-806f-0e047f473709"},{"ref":"EID686d1c0e-83ea-4acf-b798-6e2e2e72ba5d"},{"ref":"EID65490d27-4aba-4e66-8222-e370757346cd"},{"ref":"EID5388a8f3-ac22-4945-aa05-10b4e123bc13"},{"ref":"EIDf5bb7d7b-62a7-4a42-94d5-e92bfe6b1550"},{"ref":"EIDb4625fb6-1d17-4509-a0ca-ba5e277b9dd7"},{"ref":"EID7844e0f3-e2c0-4f78-aa74-755546905f0c"},{"ref":"EID2968add8-afb3-4789-a5d5-8c1b8cc421ae"},{"ref":"EID9c84da6f-69dd-427f-a8c6-ba7c4310a276"},{"ref":"EID4756eb7b-61a2-454c-a8e1-7f72c44dfae8"},{"ref":"EID6e07ccf0-6cbe-4d97-8009-15d9fdfc46a0"},{"ref":"EID1ad6e4f5-ab75-4217-90e1-161aac05ecf5"},{"ref":"EID276ae25a-c5ff-4c75-acf4-abd3c2830040"}]},"parent":{"ref":"EID6ee86114-0175-1000-5fb2-e74786b41be2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:12:04Z","duration":1010,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:12:04Z","duration":1482,"status":"SKIPPED"},{"id":"EID6ee866df-0175-1000-24a2-f227acfa93bd","testStepResults":{"TestStepResult":[{"id":"EID6ee866e7-0175-1000-0fb3-9271fe835c73","parent":{"ref":"EID6ee866df-0175-1000-24a2-f227acfa93bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:12:05Z","duration":1377,"status":"PASSED"},{"id":"EID6ee866e7-0175-1000-0dbb-112e5e4ae21a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee86806-0175-1000-06f3-0394f4cd94a1","parent":{"ref":"EID6ee866e7-0175-1000-0dbb-112e5e4ae21a"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86806-0175-1000-600a-501b60d072dc","parent":{"ref":"EID6ee866e7-0175-1000-0dbb-112e5e4ae21a"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86806-0175-1000-9be7-ee402c8f72f0","parent":{"ref":"EID6ee866e7-0175-1000-0dbb-112e5e4ae21a"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86806-0175-1000-5785-ce3345a6a4bc","parent":{"ref":"EID6ee866e7-0175-1000-0dbb-112e5e4ae21a"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaaec8212-0d44-4604-9e50-361a7647adc2"},{"ref":"EID62d41f5b-1913-4adc-89bb-ac3503123205"},{"ref":"EID806891fb-a2bd-469a-8da8-0cf13420ab80"}]},"parent":{"ref":"EID6ee866df-0175-1000-24a2-f227acfa93bd"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:12:05Z","duration":138,"status":"PASSED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:12:05Z","duration":296,"status":"PASSED"},{"id":"EID6ee86807-0175-1000-0da2-3f2f81b57f0d","testStepResults":{"TestStepResult":[{"id":"EID6ee86829-0175-1000-cbbe-89bd2ee96999","parent":{"ref":"EID6ee86807-0175-1000-0da2-3f2f81b57f0d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:12:06Z","duration":1377,"status":"PASSED"},{"id":"EID6ee86829-0175-1000-8c2e-9b327fa03911","parent":{"ref":"EID6ee86807-0175-1000-0da2-3f2f81b57f0d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86829-0175-1000-be35-a22e4e31c7d2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee86912-0175-1000-013a-e7e8aec26cf6","parent":{"ref":"EID6ee86829-0175-1000-be35-a22e4e31c7d2"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86912-0175-1000-2cb0-1886c5489cd8","parent":{"ref":"EID6ee86829-0175-1000-be35-a22e4e31c7d2"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86912-0175-1000-0f74-1ccec10cc947","parent":{"ref":"EID6ee86829-0175-1000-be35-a22e4e31c7d2"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee86912-0175-1000-aa5b-b1fa25aa74fe","parent":{"ref":"EID6ee86829-0175-1000-be35-a22e4e31c7d2"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb9b068f6-e286-4462-8657-3927391bb9e7"},{"ref":"EID0be44902-aa16-4b25-b2b9-393f072f2ee5"},{"ref":"EIDdb5031bd-0e0d-4105-a83c-b343d34e569b"}]},"parent":{"ref":"EID6ee86807-0175-1000-0da2-3f2f81b57f0d"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:12:06Z","duration":95,"status":"PASSED"},{"id":"EID6ee86912-0175-1000-a101-a07904efad17","attachments":{"attachment":{"ref":"EID699a22e0-42b2-4e12-87bb-08c11d5ff36c"}},"parent":{"ref":"EID6ee86807-0175-1000-0da2-3f2f81b57f0d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:12:06Z","duration":1,"status":"PASSED"},{"id":"EID6ee8694a-0175-1000-6b8c-e0d379d08c93","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8695e-0175-1000-c902-b61d85d76133","parent":{"ref":"EID6ee8694a-0175-1000-6b8c-e0d379d08c93"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee8695e-0175-1000-89f7-d79675e04e32","parent":{"ref":"EID6ee8694a-0175-1000-6b8c-e0d379d08c93"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee8695e-0175-1000-7736-bf594e96309a","parent":{"ref":"EID6ee8694a-0175-1000-6b8c-e0d379d08c93"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96e2bb3e-1d52-4dc8-bab6-a9e06e23d286"},{"ref":"EID2f563619-d52b-4e9f-9167-4999e80329ff"}]},"parent":{"ref":"EID6ee86807-0175-1000-0da2-3f2f81b57f0d"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:12:06Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee85a5f-0175-1000-c13c-998e3118764a"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:12:06Z","duration":343,"status":"PASSED"}]},"parent":{"ref":"EIDdcbde145-24a2-4238-a4b0-1aacef650d00"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:12:02Z","duration":3840,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EID4073bd8e-1e25-49b0-b6f8-b3066164bcc5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf76f7d67-c1db-45a6-b924-2b58595a6cba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID740db037-9f42-4636-8cf1-85334d0c1373","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID740db037-9f42-4636-8cf1-85334d0c1373"}},{"type":"GetParameter","id":"EID2f1bb15c-1d03-47e6-9b5a-1e2553905a28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID610ec90b-c5c3-4ccd-8e75-74f8739e0eaa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID610ec90b-c5c3-4ccd-8e75-74f8739e0eaa"}},{"type":"ServiceResponse","id":"EIDbd14947f-4663-4eb6-8c84-1e9378c50ba9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDbd14947f-4663-4eb6-8c84-1e9378c50ba9"}},{"type":"ServiceEndpoint","id":"EID5d1ccb71-1055-4f6a-9dc5-4cb94b26fbed","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID76de4aff-af7d-423a-a624-e85df7b21a87","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDf5a73f71-272c-43a5-bc18-eb4721bd0021","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"Message","id":"EID4ded205c-7f02-44ea-853d-767a9beba369","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID4ded205c-7f02-44ea-853d-767a9beba369"}},{"type":"Message","id":"EID170577cb-cd7a-4aa1-b3fc-61027e23a3cf","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID170577cb-cd7a-4aa1-b3fc-61027e23a3cf"}},{"type":"Message","id":"EID9c634ab1-f22e-44f3-a0cf-73cee077d0c3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID9c634ab1-f22e-44f3-a0cf-73cee077d0c3"}},{"type":"ServiceEndpoint","id":"EID585f7872-393b-4e69-90f2-aac02619ebce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3516927d-273a-4056-85f3-6253eb30974f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"LogFile","id":"EID824f1129-77ba-4f42-82e0-cc746bc6d324","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID824f1129-77ba-4f42-82e0-cc746bc6d324"}},{"type":"Message","id":"EID809584d4-1966-4d51-91b9-21fb7afb3071","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID809584d4-1966-4d51-91b9-21fb7afb3071"}},{"type":"Message","id":"EID699a22e0-42b2-4e12-87bb-08c11d5ff36c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID699a22e0-42b2-4e12-87bb-08c11d5ff36c"}},{"type":"Message","id":"EIDcbffae8c-37ca-4d89-9767-d11515dd8a35","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDcbffae8c-37ca-4d89-9767-d11515dd8a35"}},{"type":"Message","id":"EID1ad6e4f5-ab75-4217-90e1-161aac05ecf5","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID1ad6e4f5-ab75-4217-90e1-161aac05ecf5"}},{"type":"ServiceEndpoint","id":"EIDec9cfe6b-6831-482e-8e42-befb3e4d7b14","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID425c1e7c-fa3d-4aaf-bd91-9593676f5123","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID629c5e0f-6eca-4d91-8a00-dc41dcf8562c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID629c5e0f-6eca-4d91-8a00-dc41dcf8562c"}},{"type":"GetParameter","id":"EIDe34559db-9886-43c9-ad59-c6747a20a360","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa30a9734-ce2a-45c9-8bd2-1637c563a98c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa30a9734-ce2a-45c9-8bd2-1637c563a98c"}},{"type":"ServiceEndpoint","id":"EIDa692fcef-1c3d-435d-a689-7ff7741dfff5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID225d5edc-956a-4181-a24e-7ffacb0793e8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID225d5edc-956a-4181-a24e-7ffacb0793e8"}},{"type":"GetParameter","id":"EIDdb5031bd-0e0d-4105-a83c-b343d34e569b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID49fda731-39f8-4960-8b50-6a02466dbe9d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID6e07ccf0-6cbe-4d97-8009-15d9fdfc46a0","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID6e07ccf0-6cbe-4d97-8009-15d9fdfc46a0"}},{"type":"Message","id":"EID65490d27-4aba-4e66-8222-e370757346cd","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID65490d27-4aba-4e66-8222-e370757346cd"}},{"type":"ServiceResponse","id":"EID27c9f7db-0801-4167-a7a6-e8c5b0f09fe2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID27c9f7db-0801-4167-a7a6-e8c5b0f09fe2"}},{"type":"ServiceResponse","id":"EIDcfe99cc8-d499-41e9-931b-23537cfd6f5c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDcfe99cc8-d499-41e9-931b-23537cfd6f5c"}},{"type":"Message","id":"EID73aae37e-b91c-43cb-aee2-75308c16a83c","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID73aae37e-b91c-43cb-aee2-75308c16a83c"}},{"type":"Message","id":"EIDf5bb7d7b-62a7-4a42-94d5-e92bfe6b1550","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDf5bb7d7b-62a7-4a42-94d5-e92bfe6b1550"}},{"type":"ServiceEndpoint","id":"EID7c06421d-ec82-47f8-b602-25e3d3edb07b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID0be44902-aa16-4b25-b2b9-393f072f2ee5","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID0be44902-aa16-4b25-b2b9-393f072f2ee5"}},{"type":"GetParameter","id":"EID02101ddf-9821-4dd6-b694-5a9dc90fed79","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfe1418c6-106c-45e9-be82-a8d449e74046","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfde1e08e-40c6-4f7f-8138-4a9e2b49d21a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1caa98d4-58d1-473d-a221-836ccbb136c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID1caa98d4-58d1-473d-a221-836ccbb136c4"}},{"type":"ServiceEndpoint","id":"EIDa1a89478-82f6-4a7f-8dd9-2fc0d3abee00","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDa68d3e48-3358-4f7e-93c6-8315f7075b57","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa68d3e48-3358-4f7e-93c6-8315f7075b57"}},{"type":"Message","id":"EID6e6c057d-919a-4d56-a16f-e9392e55dc23","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID6e6c057d-919a-4d56-a16f-e9392e55dc23"}},{"type":"GetParameter","id":"EID7586dcb2-26f9-4fe0-91ee-11a93c6461fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf1cee728-296a-4a15-99e2-00cc05ea5786","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDf1cee728-296a-4a15-99e2-00cc05ea5786"}},{"type":"ServiceResponse","id":"EIDbafc0d25-3c30-4be6-88b6-8a1b59d67371","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDbafc0d25-3c30-4be6-88b6-8a1b59d67371"}},{"type":"ServiceResponse","id":"EID63afb4c9-36db-4bdf-9499-f07ff3dc7115","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID63afb4c9-36db-4bdf-9499-f07ff3dc7115"}},{"type":"ServiceEndpoint","id":"EID752b6618-b0ae-4a15-9e2e-d4369a0b0af7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID0f64e954-b7f0-4742-9aa3-37e54c9f99c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID6c472892-8963-4e03-a39e-f0f8402be182","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID6c472892-8963-4e03-a39e-f0f8402be182"}},{"type":"ServiceResponse","id":"EIDc206cc66-4c07-4c80-9821-04b5ae6e9e7c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDc206cc66-4c07-4c80-9821-04b5ae6e9e7c"}},{"type":"ServiceResponse","id":"EIDe2a101cc-53f5-4d4e-ad3c-9e3ddabc93d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDe2a101cc-53f5-4d4e-ad3c-9e3ddabc93d5"}},{"type":"ServiceEndpoint","id":"EID085e57ce-6414-4c75-9911-8e06cc78a9ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID369a4923-bf04-48df-b1c3-ff43c5a5ea35","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID15dc2233-ffba-4ecd-b86e-53a14f18ae97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDa4c209dd-5c33-4aee-90f8-23e700779336","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID36ee8dc0-d40a-43ee-9e19-73e4b127b5e0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID36ee8dc0-d40a-43ee-9e19-73e4b127b5e0"}},{"type":"ServiceEndpoint","id":"EID44c81619-ac1e-472a-a0d1-8cc05c5afea9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdff8f54f-930c-417b-95d7-340724559442","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDedaa7144-8a37-4217-93de-1d2b71c16313","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDedaa7144-8a37-4217-93de-1d2b71c16313"}},{"type":"ServiceResponse","id":"EID4b8c226d-24f1-4c5c-a0a2-65b5d0abc128","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID4b8c226d-24f1-4c5c-a0a2-65b5d0abc128"}},{"type":"ServiceEndpoint","id":"EID781d8bf8-cdbf-4193-b890-bf31edb8382b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID8b7190c8-63b7-46ce-962f-a4f6bf1dc8b7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDffabd87f-2a8b-46b2-86ce-c2f4c35c7e0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5f8ccaeb-9d31-4423-97cc-a099b03e5f75","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID85e84670-15ca-4026-9a9e-1705b0e9d57f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID8624890e-1b40-4271-8b81-edfc45fcf179","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID7e704bcc-0704-4bc4-8dae-bf4fba9ed1a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID7e704bcc-0704-4bc4-8dae-bf4fba9ed1a8"}},{"type":"Message","id":"EID58d4c233-e506-4841-ae3d-9db2874f1099","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID58d4c233-e506-4841-ae3d-9db2874f1099"}},{"type":"ServiceResponse","id":"EIDcceaeee7-334f-4258-8e03-ddc9ae6142cb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDcceaeee7-334f-4258-8e03-ddc9ae6142cb"}},{"type":"Message","id":"EIDc70324d2-349a-455a-bc31-c12c68a7280e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDc70324d2-349a-455a-bc31-c12c68a7280e"}},{"type":"GetParameter","id":"EIDa7697994-4cbc-459d-8d0a-ffdd63a48c36","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID64c2c860-d8fb-4096-8398-783cf909b0cb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID64c2c860-d8fb-4096-8398-783cf909b0cb"}},{"type":"Message","id":"EID19450866-35ce-4734-97e5-63c9a0cec521","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID19450866-35ce-4734-97e5-63c9a0cec521"}},{"type":"GetParameter","id":"EID6ba92b8b-a533-4b54-8abf-0a16bb5739f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID4756eb7b-61a2-454c-a8e1-7f72c44dfae8","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID4756eb7b-61a2-454c-a8e1-7f72c44dfae8"}},{"type":"ServiceEndpoint","id":"EID3a4bbe32-0820-4abb-bfaf-248ebf6f79bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf82b7ffe-85a3-4049-ae3d-2ad6d8c0e9bf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID0d893b4f-bf94-441a-a335-4f5785cd65b3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID0d893b4f-bf94-441a-a335-4f5785cd65b3"}},{"type":"ServiceResponse","id":"EIDe7854a84-26f6-49de-922b-7dbffca2e76b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDe7854a84-26f6-49de-922b-7dbffca2e76b"}},{"type":"GetParameter","id":"EIDa78b6c85-edda-4152-a143-4be63a642146","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID064f78c4-6c5b-4ebd-83e1-0fb920c38dfb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0f3702cb-940b-48e5-b456-cfab7762bb89","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9c84da6f-69dd-427f-a8c6-ba7c4310a276","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID9c84da6f-69dd-427f-a8c6-ba7c4310a276"}},{"type":"Message","id":"EIDda2ea897-4d23-4cae-995b-46f7907f05c1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDda2ea897-4d23-4cae-995b-46f7907f05c1"}},{"type":"ServiceEndpoint","id":"EIDf501519a-7364-4661-81e6-da573899a76a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID00542328-663e-4bff-be2d-dc26441163d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID00542328-663e-4bff-be2d-dc26441163d5"}},{"type":"ServiceEndpoint","id":"EIDdd282a97-63d3-4185-9350-8758db237aa6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4862203e-ad25-44ab-b4a6-6612f9ab63a9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID4862203e-ad25-44ab-b4a6-6612f9ab63a9"}},{"type":"ServiceEndpoint","id":"EIDd220fe72-2cd2-4e91-bbd2-67625aa6f600","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDe300bb4c-4a0f-4042-a95e-9a9815d826af","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID06d340e8-35ce-41eb-8a03-0b46e2bfbf5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6cd504f5-21d9-468e-9f21-f1b00695c210","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID6cd504f5-21d9-468e-9f21-f1b00695c210"}},{"type":"ServiceEndpoint","id":"EID326b9c1b-540e-49a9-b3f5-0247ea48538d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDbefe175b-56d2-421a-8dce-f87bfb2d27ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDf39cee14-769e-425b-a323-ecfb44c7e599","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDf39cee14-769e-425b-a323-ecfb44c7e599"}},{"type":"ServiceEndpoint","id":"EID3222975b-6a32-4cc1-b937-67e41630fb01","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDdcaeffb5-6fc1-47dd-a120-591440460d1b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDdcaeffb5-6fc1-47dd-a120-591440460d1b"}},{"type":"Message","id":"EID8559d7aa-b739-417b-b5a1-e50eff6ec4f4","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID8559d7aa-b739-417b-b5a1-e50eff6ec4f4"}},{"type":"Message","id":"EID272a7e41-62d1-42eb-aae8-3f3abbe2f5be","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID272a7e41-62d1-42eb-aae8-3f3abbe2f5be"}},{"type":"ServiceResponse","id":"EIDbde5aaab-b61a-4933-9fab-9c9b971e4030","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDbde5aaab-b61a-4933-9fab-9c9b971e4030"}},{"type":"GetParameter","id":"EID7434c90a-c6d5-4cd4-844f-36c06aa0e2ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID0e2ac8ec-f5f8-4226-be25-26f963fbeb44","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID0eb6332b-d129-465f-a8e7-d35d3f2ae4ec","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID0eb6332b-d129-465f-a8e7-d35d3f2ae4ec"}},{"type":"GetParameter","id":"EID40257754-ae59-470e-adfb-fe679b95bad5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID241248dc-20da-42aa-a9fc-2fc25919cf05","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID241248dc-20da-42aa-a9fc-2fc25919cf05"}},{"type":"GetParameter","id":"EIDab3359b8-80f7-4018-a731-986bbdc5fc20","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID5388a8f3-ac22-4945-aa05-10b4e123bc13","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID5388a8f3-ac22-4945-aa05-10b4e123bc13"}},{"type":"Message","id":"EID5ef4a0c9-1163-4d59-a4f0-df93652231c0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID5ef4a0c9-1163-4d59-a4f0-df93652231c0"}},{"type":"Message","id":"EID820260de-2639-4570-9cc1-bb28622f70e0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID820260de-2639-4570-9cc1-bb28622f70e0"}},{"type":"ServiceEndpoint","id":"EID7099504f-c137-4a96-a1b5-cbef005562e9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID52f45201-90fe-4172-9038-d83256984c0d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID165a0eb8-554a-4e61-be85-4ecb99a7c4db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDb9b068f6-e286-4462-8657-3927391bb9e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDfe4c70c8-e7ce-4380-89d9-4fe82de4120c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDfe4c70c8-e7ce-4380-89d9-4fe82de4120c"}},{"type":"Message","id":"EIDa1ef1ade-29d5-4b07-a62f-e7e7280e40f0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa1ef1ade-29d5-4b07-a62f-e7e7280e40f0"}},{"type":"Message","id":"EID82135bfc-f1a7-4e59-99d6-360d4c0a4654","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID82135bfc-f1a7-4e59-99d6-360d4c0a4654"}},{"type":"Message","id":"EID14336a70-b3d3-40ae-abef-afb27e4f3e06","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID14336a70-b3d3-40ae-abef-afb27e4f3e06"}},{"type":"Message","id":"EID74601f84-38da-4780-ae38-78644d50cc25","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID74601f84-38da-4780-ae38-78644d50cc25"}},{"type":"GetParameter","id":"EIDba20db68-6991-480c-9c2a-19ad97a91ef3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb4625fb6-1d17-4509-a0ca-ba5e277b9dd7","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDb4625fb6-1d17-4509-a0ca-ba5e277b9dd7"}},{"type":"GetParameter","id":"EID44b53fb3-f9ac-4593-89c5-3a5ff8a95f25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb1a6b770-2fa9-4212-afd3-d88873c7fca4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa6880bb3-76d8-4fd8-9829-b55e2a494d94","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa599fa1f-e534-4313-8832-8c89a2a6eb84","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDe9386005-1ed2-4b00-84a0-99bd57505dac","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDe9386005-1ed2-4b00-84a0-99bd57505dac"}},{"type":"GetParameter","id":"EID30649aff-8931-4fdd-8657-491fa1f83ba4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID75b9869f-bd43-4dc4-8560-7d7462c96b6f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDc821b665-5f85-4055-bd54-06cc9b609155","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDfd404ca4-8059-4045-b294-c7da8f88361a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID4d2d7bbe-65e6-4646-bebd-17f83ae34521","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID4d2d7bbe-65e6-4646-bebd-17f83ae34521"}},{"type":"ServiceEndpoint","id":"EIDb77b309c-fe6c-449d-863f-f27f7dcdc9eb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID080802d1-9dc4-4520-867d-8c4976fa569b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf885d382-f17b-4a10-b6ec-9d40b93ad157","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDf885d382-f17b-4a10-b6ec-9d40b93ad157"}},{"type":"GetParameter","id":"EID489528d2-8e75-4071-80ba-43f071689015","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID70345573-a74b-4786-85b7-fe21dcf316ef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID79627cb9-d2f1-48a7-bba4-27ef7c1528cc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID79627cb9-d2f1-48a7-bba4-27ef7c1528cc"}},{"type":"ServiceEndpoint","id":"EIDaaec8212-0d44-4604-9e50-361a7647adc2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID46643897-bc58-4600-a8e3-f4fabd83d07e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID46643897-bc58-4600-a8e3-f4fabd83d07e"}},{"type":"GetParameter","id":"EID5c95007b-eff6-4b84-9a4f-1e0c7f81ebc8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDc7389c6a-a3df-4946-8dbd-3c07e45032e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd9bd561c-8dc8-466e-89b4-56d03e79ad39","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDd9bd561c-8dc8-466e-89b4-56d03e79ad39"}},{"type":"Message","id":"EID3a5572d2-62d6-40ad-9ce6-524cf0e27d0d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID3a5572d2-62d6-40ad-9ce6-524cf0e27d0d"}},{"type":"ServiceResponse","id":"EIDd5471a37-1368-45bf-a073-ee2eea24c412","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDd5471a37-1368-45bf-a073-ee2eea24c412"}},{"type":"GetParameter","id":"EID56e46bbd-8050-4013-8505-1c313d4f988a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDf6a1e5a2-964c-4353-844d-6c4481f778f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDd6c69615-e4a9-4244-b4db-d0055982c6a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID7ef2880c-85d4-4769-870c-680f751928a8","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID7ef2880c-85d4-4769-870c-680f751928a8"}},{"type":"ServiceEndpoint","id":"EID1dfa521f-573c-4baf-b30a-d01aebfa45aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID10dcbd6a-d0e9-4865-afe2-7cbfeea7962a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID10dcbd6a-d0e9-4865-afe2-7cbfeea7962a"}},{"type":"Message","id":"EIDd2493a63-0260-4667-a73d-eb311fe73c72","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDd2493a63-0260-4667-a73d-eb311fe73c72"}},{"type":"ServiceResponse","id":"EIDdfa03490-609f-4cc4-bb14-3aa07fcee2ce","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDdfa03490-609f-4cc4-bb14-3aa07fcee2ce"}},{"type":"ServiceEndpoint","id":"EID68d6b523-177c-462b-8a57-5c4ec151e5cb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID3b88e572-5c05-4f36-9dbd-afae2187094e","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID3b88e572-5c05-4f36-9dbd-afae2187094e"}},{"type":"GetParameter","id":"EIDe4b935f1-63c0-4dce-9036-ad3c5b50f0a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf3f625ed-1986-4d49-ac47-7ab4b519fdaf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDf3f625ed-1986-4d49-ac47-7ab4b519fdaf"}},{"type":"GetParameter","id":"EID2f563619-d52b-4e9f-9167-4999e80329ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDa1604987-5421-409f-898e-0653b288b544","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa1604987-5421-409f-898e-0653b288b544"}},{"type":"ServiceResponse","id":"EID726b6783-47ad-415d-a2f3-90086d0a0c95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID726b6783-47ad-415d-a2f3-90086d0a0c95"}},{"type":"Message","id":"EID2968add8-afb3-4789-a5d5-8c1b8cc421ae","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID2968add8-afb3-4789-a5d5-8c1b8cc421ae"}},{"type":"ServiceEndpoint","id":"EID0857993e-9de3-476c-ae05-83cda0209301","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID2836b92b-5763-4bf6-851b-d2b73b284108","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID2836b92b-5763-4bf6-851b-d2b73b284108"}},{"type":"Message","id":"EID97842568-aa5a-4652-a5dd-af6e8d506a9d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID97842568-aa5a-4652-a5dd-af6e8d506a9d"}},{"type":"ServiceEndpoint","id":"EID2125e472-25b6-41ec-996a-00250d1e6b24","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID27f6f92b-e51f-4581-aa1a-4fc1cf5fefe4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDc852ed47-9abe-4e5c-bb01-ff8200cae94f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDc852ed47-9abe-4e5c-bb01-ff8200cae94f"}},{"type":"GetParameter","id":"EIDc1669833-821a-4563-a83e-c35b8d16fa75","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe4a731f3-5a86-41f6-88ed-727f359f1777","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDe4a731f3-5a86-41f6-88ed-727f359f1777"}},{"type":"ServiceResponse","id":"EIDaf3d3f37-3980-4db6-8f7c-91d44682e53f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDaf3d3f37-3980-4db6-8f7c-91d44682e53f"}},{"type":"ServiceResponse","id":"EID235f2346-f1ae-456f-8609-bccbcb579067","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID235f2346-f1ae-456f-8609-bccbcb579067"}},{"type":"ServiceResponse","id":"EID62d41f5b-1913-4adc-89bb-ac3503123205","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID62d41f5b-1913-4adc-89bb-ac3503123205"}},{"type":"ServiceEndpoint","id":"EID55d9282b-c725-4634-9608-6a4961c56a1a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDdc4bd8e8-7071-4c7a-ab84-24852bdc5340","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDdc4bd8e8-7071-4c7a-ab84-24852bdc5340"}},{"type":"GetParameter","id":"EID806891fb-a2bd-469a-8da8-0cf13420ab80","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID88763b7d-0182-40c7-a48b-f1e25603fcf1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID88763b7d-0182-40c7-a48b-f1e25603fcf1"}},{"type":"ServiceResponse","id":"EIDa986f632-d36f-46eb-ad18-b0142ab27ca9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa986f632-d36f-46eb-ad18-b0142ab27ca9"}},{"type":"Message","id":"EID7844e0f3-e2c0-4f78-aa74-755546905f0c","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID7844e0f3-e2c0-4f78-aa74-755546905f0c"}},{"type":"Message","id":"EID686d1c0e-83ea-4acf-b798-6e2e2e72ba5d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID686d1c0e-83ea-4acf-b798-6e2e2e72ba5d"}},{"type":"GetParameter","id":"EID84ba5355-18a5-48cd-8a85-099ed791d424","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDb7520fea-0334-49e9-b73f-646b3c2ef426","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID49987d12-3f4b-46d7-8a12-2c086bb345d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID7bf7988e-b4d8-4c5c-8fee-5edf1944a8e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa65af3fa-39fc-4fd1-988c-3d1381628e7f","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa65af3fa-39fc-4fd1-988c-3d1381628e7f"}},{"type":"Message","id":"EIDc65d1915-b8e1-4541-bd3d-3d7b204f267a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDc65d1915-b8e1-4541-bd3d-3d7b204f267a"}},{"type":"GetParameter","id":"EIDacd4c54e-6414-41be-9895-963aaf1d914a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID0c47fa8f-26bb-4f67-bfb6-512f5598dfa7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDf3d7e48d-f308-4193-b68a-9c9ec3fc2159","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID146c87d7-8154-43f5-bfe6-3c379e2a9bec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID0250dbb2-5486-424f-88a5-e1e110362d10","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID236e0069-0c9c-44be-8bad-34b0e43c86af","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID236e0069-0c9c-44be-8bad-34b0e43c86af"}},{"type":"Message","id":"EIDb687b314-e946-4e9f-806f-0e047f473709","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDb687b314-e946-4e9f-806f-0e047f473709"}},{"type":"ServiceResponse","id":"EID8d66da0b-f3bd-4fe0-908c-8d3e4671f24f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID8d66da0b-f3bd-4fe0-908c-8d3e4671f24f"}},{"type":"GetParameter","id":"EID67c1d7da-9350-4f36-ba9f-98bc744d51e2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID2f8f021e-d248-49e6-86e6-a70b86a98a4c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID2f8f021e-d248-49e6-86e6-a70b86a98a4c"}},{"type":"ServiceEndpoint","id":"EID2917ad72-9c29-4053-a15a-3cc0f18a43e9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID77ee999d-4d2c-419b-b871-1f984b85fd04","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID77ee999d-4d2c-419b-b871-1f984b85fd04"}},{"type":"ServiceEndpoint","id":"EID969e67d1-041b-4641-8291-4ba014389733","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID276ae25a-c5ff-4c75-acf4-abd3c2830040","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID276ae25a-c5ff-4c75-acf4-abd3c2830040"}},{"type":"ServiceEndpoint","id":"EID96e2bb3e-1d52-4dc8-bab6-a9e06e23d286","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDa0c78de7-b816-4509-bf50-675f264316d3","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EIDa0c78de7-b816-4509-bf50-675f264316d3"}},{"type":"ServiceResponse","id":"EID7e2bf82a-d5e7-4e2b-bc57-b2afb552afee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdcbde145-24a2-4238-a4b0-1aacef650d00/Attachments/EID7e2bf82a-d5e7-4e2b-bc57-b2afb552afee"}},{"type":"GetParameter","id":"EID2b6a301f-90dc-4a98-a48a-31adf584d7db","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:11:10Z","duration":55707,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:12:43.574 [print] EID1985c906-c16d-40f2-99a7-df2592236db1
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:12:43.574 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:12:43.574 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:12:43.574 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:12:43.574 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/1985c906-c16d-40f2-99a7-df2592236db1.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:12:43.574 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/1985c906-c16d-40f2-99a7-df2592236db1.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:12:43.575 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID1985c906-c16d-40f2-99a7-df2592236db1/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.044
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.017
* def a = embedUrl ("../../" + jsonPath , status ) 0.002
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:12:43.641 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:12:43.641 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
2:7.552
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:05.402 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 22.611
11:10:05.402 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:10:28.010 response time in milliseconds: 21839.04
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:27 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:10:11 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/135a7821-b419-4298-9947-6dc09e98011a.json","testRuns":{"TestRun":{"id":"EID135a7821-b419-4298-9947-6dc09e98011a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:09.708Z","testTasks":{"TestTask":{"id":"EID4e12286b-3bea-4416-ab30-21165565c987","parent":{"ref":"EID135a7821-b419-4298-9947-6dc09e98011a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID6cb4b02f-a0a3-492a-b50c-93fa85eea17a"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID6cb4b02f-a0a3-492a-b50c-93fa85eea17a","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:10:05.855Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:08.884Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:10:28.013 [print] EID135a7821-b419-4298-9947-6dc09e98011a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:28.014 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:10:28.014 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:28.014 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/135a7821-b419-4298-9947-6dc09e98011a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:10:28.014 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:10:28.014 [print] statuspath TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a
* print 'progresspath ', progresspath 0.000
11:10:28.014 [print] progresspath  TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
Given path progresspath 0.000
When method GET 0.546
11:10:28.015 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:28.561 response time in milliseconds: 545.67
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:10:28 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"133","max":"134","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:10:28.561 [print] {
  "val": "133",
  "max": "134",
  "log": [
    "28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)",
    "28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:10:09 - Preparing 1 Test Task:",
    "28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)",
    "28.10.2020 11:10:09 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:10:09 -  with parameters: ",
    "28.10.2020 11:10:09 - etf.testcases = *",
    "28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:10:09 - Setting state to CREATED",
    "28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z",
    "28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:10:13 - Project Properties: ",
    "28.10.2020 11:10:13 - etf.testcases - * ",
    "28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:10:13 - username -  ",
    "28.10.2020 11:10:13 - authUser -  ",
    "28.10.2020 11:10:13 - authMethod - basic ",
    "28.10.2020 11:10:13 - TestRunTask initialized",
    "28.10.2020 11:10:24 ERROR Assertion failed with error 'TR.incorrectFeedSelfReference'",
    "28.10.2020 11:10:27 ERROR Assertion failed with error 'TR.missingLinkToMetadataRecordForDownloadService'"
  ]
}
Given path progresspath 0.000
When method GET 1:42.284
11:10:28.562 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:29.077 response time in milliseconds: 515.15
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:10:29 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"152","max":"153","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:29.078 retry condition not satisfied: response.val == response.max
11:10:29.078 sleeping before retry #1
11:10:34.079 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:34.588 response time in milliseconds: 508.87
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:10:34 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:34.589 retry condition not satisfied: response.val == response.max
11:10:34.589 sleeping before retry #2
11:10:39.590 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:40.116 response time in milliseconds: 525.15
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:10:40 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:40.116 retry condition not satisfied: response.val == response.max
11:10:40.116 sleeping before retry #3
11:10:45.117 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:45.649 response time in milliseconds: 530.73
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:10:45 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:45.653 retry condition not satisfied: response.val == response.max
11:10:45.653 sleeping before retry #4
11:10:50.654 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:51.189 response time in milliseconds: 534.53
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:10:51 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:51.197 retry condition not satisfied: response.val == response.max
11:10:51.197 sleeping before retry #5
11:10:56.198 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:56.716 response time in milliseconds: 517.15
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:10:56 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:56.716 retry condition not satisfied: response.val == response.max
11:10:56.716 sleeping before retry #6
11:11:01.717 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:02.248 response time in milliseconds: 528.00
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:11:02 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:11:02.248 retry condition not satisfied: response.val == response.max
11:11:02.248 sleeping before retry #7
11:11:07.249 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:07.767 response time in milliseconds: 517.33
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:11:07 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:07.768 retry condition not satisfied: response.val == response.max
11:11:07.768 sleeping before retry #8
11:11:12.768 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:13.293 response time in milliseconds: 523.63
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:11:13 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:13.293 retry condition not satisfied: response.val == response.max
11:11:13.293 sleeping before retry #9
11:11:18.294 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:18.812 response time in milliseconds: 518.07
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:11:18 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:18.813 retry condition not satisfied: response.val == response.max
11:11:18.813 sleeping before retry #10
11:11:23.814 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:24.338 response time in milliseconds: 523.76
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:11:24 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:24.338 retry condition not satisfied: response.val == response.max
11:11:24.338 sleeping before retry #11
11:11:29.339 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:29.849 response time in milliseconds: 509.81
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:11:29 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:29.850 retry condition not satisfied: response.val == response.max
11:11:29.850 sleeping before retry #12
11:11:34.850 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:35.358 response time in milliseconds: 507.44
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:11:35 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:35.358 retry condition not satisfied: response.val == response.max
11:11:35.358 sleeping before retry #13
11:11:40.359 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:40.866 response time in milliseconds: 505.05
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:11:40 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:40.867 retry condition not satisfied: response.val == response.max
11:11:40.867 sleeping before retry #14
11:11:45.867 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:46.391 response time in milliseconds: 519.82
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:11:46 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:46.391 retry condition not satisfied: response.val == response.max
11:11:46.391 sleeping before retry #15
11:11:51.392 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:51.904 response time in milliseconds: 511.58
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:11:51 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:51.905 retry condition not satisfied: response.val == response.max
11:11:51.905 sleeping before retry #16
11:11:56.906 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:57.523 response time in milliseconds: 616.80
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:11:57 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:11:57.537 retry condition not satisfied: response.val == response.max
11:11:57.537 sleeping before retry #17
11:12:02.538 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:03.056 response time in milliseconds: 509.80
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:12:02 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 -  TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 -  with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username -  ","28.10.2020 11:10:13 - authUser -  ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:11:59 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:12:03.057 retry condition not satisfied: response.val == response.max
11:12:03.057 sleeping before retry #18
11:12:08.058 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:10.845 response time in milliseconds: 2787.05
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:12:10 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:12:10.846 retry condition satisfied
* print response 0.000
11:12:10.846 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 2.103
11:12:10.846 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:12.949 response time in milliseconds: 2102.41
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Cache-Control: public, max-age=120
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:12:12 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Last-Modified: Wed, 28 Oct 2020 11:12:10 GMT
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
11:12:12.954 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:12:12.954 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.396
* print "testing url:" + metadata.url 0.000
11:15:39.964 [print] testing url:https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.396
11:15:39.964 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:40.360 response time in milliseconds: 395.95
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:40 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.412
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.411
11:15:40.364 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:40.775 response time in milliseconds: 410.80
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:40 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:40.776 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.185
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:47.477 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.184
11:16:47.478 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities"}}}

11:16:48.662 response time in milliseconds: 1183.85
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883808592","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:48.662 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.428
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:14.441 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.426
11:06:14.443 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}

11:06:15.868 response time in milliseconds: 1424.21
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:15 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883175794","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:06:15.869 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.406
* print "testing url:" + metadata.url 0.000
11:13:22.258 [print] testing url:https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.406
11:13:22.259 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:22.665 response time in milliseconds: 405.70
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:21 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.420
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.419
11:13:22.671 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:23.091 response time in milliseconds: 418.80
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:22 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:13:23.091 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
2.090
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:25.877 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.090
11:14:25.878 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

11:14:27.968 response time in milliseconds: 1984.40
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:27 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883667799","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:27.968 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.412
* print "testing url:" + metadata.url 0.000
11:15:18.525 [print] testing url:https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.412
11:15:18.527 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:18.938 response time in milliseconds: 410.74
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:18 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.422
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.422
11:15:18.948 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:19.368 response time in milliseconds: 419.69
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:19 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:19.368 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.128
* print "testing url:" + metadata.url 0.004
11:04:41.507 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 1.123
11:04:41.511 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:42.631 response time in milliseconds: 1104.97
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 7165
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:42 GMT
1 < Etag: "a477efe52b464353930e4767fc4d3506-1"
1 < Last-Modified: Tue, 12 Nov 2019 10:10:42 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232A6FAE4FF4
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
1.113
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 1.113
11:04:41.519 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:42.627 response time in milliseconds: 1096.27
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 7165
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:42 GMT
1 < Etag: "a477efe52b464353930e4767fc4d3506-1"
1 < Last-Modified: Tue, 12 Nov 2019 10:10:42 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232A6FAB6EFF
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:04:42.628 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.001
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:17.974 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.000
11:15:17.976 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 305
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities"}}}

11:15:18.975 response time in milliseconds: 998.54
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:18 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883718912","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:18.976 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.646
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:04:53.313 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.644
11:04:53.314 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS"}}}

11:04:54.958 response time in milliseconds: 1536.75
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:54 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883094726","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:04:54.959 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.102
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:04:41.493 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.100
11:04:41.503 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities"}}}

11:04:42.594 response time in milliseconds: 1088.57
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883082511","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:04:42.596 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.473
* print "testing url:" + metadata.url 0.000
11:04:42.630 [print] testing url:https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.473
11:04:42.656 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:43.103 response time in milliseconds: 447.32
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:43 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.430
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.429
11:04:42.655 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:43.079 response time in milliseconds: 423.12
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:43 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:43.081 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
2.635
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:09.966 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.634
11:06:09.967 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 280
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities"}}}

11:06:12.601 response time in milliseconds: 2528.29
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:12 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883172412","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:06:12.602 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.408
* print "testing url:" + metadata.url 0.000
11:14:45.568 [print] testing url:https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.408
11:14:45.569 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:45.977 response time in milliseconds: 407.94
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:45 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.404
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.404
11:14:45.980 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:46.383 response time in milliseconds: 403.48
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:46 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:14:46.384 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.419
* print "testing url:" + metadata.url 0.000
11:10:20.871 [print] testing url:https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.419
11:10:20.872 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:21.289 response time in milliseconds: 416.76
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:21 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.400
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.399
11:10:21.295 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:21.693 response time in milliseconds: 398.17
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:21 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:21.694 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.436
* print "testing url:" + metadata.url 0.001
11:16:38.681 [print] testing url:https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.434
11:16:38.689 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:39.113 response time in milliseconds: 423.60
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:38 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.420
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.420
11:16:39.121 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:39.537 response time in milliseconds: 415.98
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:38 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:39.541 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.326
* print "testing url:" + metadata.url 0.000
11:10:13.178 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 1.326
11:10:13.179 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:14.505 response time in milliseconds: 1325.44
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:14 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422377B082A949
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.693
Scenario test download header
Steps
Given url metadata.url 0.011
When method HEAD 0.680
11:10:14.524 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:15.204 response time in milliseconds: 679.83
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:15 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422377E02E8F8B
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:10:15.205 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.286
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:11:03.066 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.285
11:11:03.066 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}

11:11:04.351 response time in milliseconds: 1283.31
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:04 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883464287","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:11:04.351 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
30.347
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:06.761 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.347
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
11:13:06.761 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}

11:13:37.108 java.net.SocketTimeoutException: Read timed out, http call failed after 30347 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:13:37.108 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.393
* print "testing url:" + metadata.url 0.000
11:16:43.515 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.392
11:16:43.516 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:43.908 response time in milliseconds: 392.13
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:43 GMT
1 < ETag: "18f53-5af58ad4e72e9-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.407
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.405
11:16:43.752 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:44.153 response time in milliseconds: 400.35
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:44 GMT
1 < ETag: "18f53-5af58a64c5e67-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:44.157 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.451
* print "testing url:" + metadata.url 0.011
11:04:37.662 [print] testing url:https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml
Given url metadata.url 0.002
When method HEAD 0.438
11:04:37.670 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:38.104 response time in milliseconds: 433.79
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 2779
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:04:38 GMT
1 < Etag: "468f384d0392b84cca8695000403950f-1"
1 < Last-Modified: Mon, 16 Mar 2020 07:06:39 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232968AD1D0F
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.474
Given url metadata.url 0.000
When method HEAD 0.433
11:04:38.131 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:38.562 response time in milliseconds: 427.22
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 2779
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:04:38 GMT
1 < Etag: "468f384d0392b84cca8695000403950f-1"
1 < Last-Modified: Mon, 16 Mar 2020 07:06:39 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422329836D95F0
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.012
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.002
* def filesize = responseHeaders['Content-Length'][0] 0.021
* assert filesize > 2000 0.004
0.459
* print "testing url:" + metadata.url 0.000
11:04:43.551 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.458
11:04:43.556 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:44.009 response time in milliseconds: 452.64
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4277
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:04:43 GMT
1 < Etag: "5c262b5c1b0f1bdc5a11f94b82d3a6c1-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:12:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232AC5821AEA
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.656
Given url metadata.url 0.000
When method HEAD 0.649
11:04:43.565 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:44.213 response time in milliseconds: 648.09
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4277
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:04:44 GMT
1 < Etag: "5c262b5c1b0f1bdc5a11f94b82d3a6c1-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:12:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232ACF0CF9CC
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.006
27.213
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:04:56.681 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.408
11:04:56.684 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:05:01.086 response time in milliseconds: 3647.53
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:05:00 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:04:58 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37.json","testRuns":{"TestRun":{"id":"EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:58.195Z","testTasks":{"TestTask":{"id":"EID62a30ff6-df95-427c-a998-473438bdc236","parent":{"ref":"EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID12fb3123-2860-4b82-b2cf-5695af61ac78"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID12fb3123-2860-4b82-b2cf-5695af61ac78","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:57.133Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:57.644Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.007
* print response.EtfItemCollection.testRuns.TestRun.id 0.010
11:05:01.108 [print] EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:05:01.108 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:05:01.109 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.003
11:05:01.112 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.001
11:05:01.114 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:05:01.115 [print] statuspath TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37
* print 'progresspath ', progresspath 0.000
11:05:01.115 [print] progresspath  TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/progress
Given path progresspath 0.000
When method GET 0.589
11:05:01.117 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:01.705 response time in milliseconds: 584.40
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:05:01 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:04:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:58 UTC 2020)","28.10.2020 11:04:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:58 - Preparing 1 Test Task:","28.10.2020 11:04:58 -  TestTask 1 (62a30ff6-df95-427c-a998-473438bdc236)","28.10.2020 11:04:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:58 -  with parameters: ","28.10.2020 11:04:58 - etf.testcases = *","28.10.2020 11:04:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:58 - Setting state to CREATED","28.10.2020 11:04:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:58 - Starting TestRun.f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37 at 2020-10-28T11:05:00Z","28.10.2020 11:05:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:05:00 - Project Properties: ","28.10.2020 11:05:00 - etf.testcases - * ","28.10.2020 11:05:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:05:00 - username -  ","28.10.2020 11:05:00 - authUser -  ","28.10.2020 11:05:00 - authMethod - basic ","28.10.2020 11:05:00 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:05:01.705 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:04:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:58 UTC 2020)",
    "28.10.2020 11:04:58 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:04:58 - Preparing 1 Test Task:",
    "28.10.2020 11:04:58 -  TestTask 1 (62a30ff6-df95-427c-a998-473438bdc236)",
    "28.10.2020 11:04:58 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:04:58 -  with parameters: ",
    "28.10.2020 11:04:58 - etf.testcases = *",
    "28.10.2020 11:04:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:04:58 - Setting state to CREATED",
    "28.10.2020 11:04:58 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:04:58 - Starting TestRun.f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37 at 2020-10-28T11:05:00Z",
    "28.10.2020 11:05:00 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:05:00 - Project Properties: ",
    "28.10.2020 11:05:00 - etf.testcases - * ",
    "28.10.2020 11:05:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:05:00 - username -  ",
    "28.10.2020 11:05:00 - authUser -  ",
    "28.10.2020 11:05:00 - authMethod - basic ",
    "28.10.2020 11:05:00 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.607
11:05:01.707 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:02.232 response time in milliseconds: 520.59
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:05:02 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:04:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:58 UTC 2020)","28.10.2020 11:04:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:58 - Preparing 1 Test Task:","28.10.2020 11:04:58 -  TestTask 1 (62a30ff6-df95-427c-a998-473438bdc236)","28.10.2020 11:04:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:58 -  with parameters: ","28.10.2020 11:04:58 - etf.testcases = *","28.10.2020 11:04:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:58 - Setting state to CREATED","28.10.2020 11:04:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:58 - Starting TestRun.f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37 at 2020-10-28T11:05:00Z","28.10.2020 11:05:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:05:00 - Project Properties: ","28.10.2020 11:05:00 - etf.testcases - * ","28.10.2020 11:05:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:05:00 - username -  ","28.10.2020 11:05:00 - authUser -  ","28.10.2020 11:05:00 - authMethod - basic ","28.10.2020 11:05:00 - TestRunTask initialized"]}

11:05:02.233 retry condition not satisfied: response.val == response.max
11:05:02.233 sleeping before retry #1
11:05:07.234 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:07.762 response time in milliseconds: 526.55
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:05:07 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["28.10.2020 11:04:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:58 UTC 2020)","28.10.2020 11:04:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:58 - Preparing 1 Test Task:","28.10.2020 11:04:58 -  TestTask 1 (62a30ff6-df95-427c-a998-473438bdc236)","28.10.2020 11:04:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:58 -  with parameters: ","28.10.2020 11:04:58 - etf.testcases = *","28.10.2020 11:04:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:58 - Setting state to CREATED","28.10.2020 11:04:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:58 - Starting TestRun.f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37 at 2020-10-28T11:05:00Z","28.10.2020 11:05:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:05:00 - Project Properties: ","28.10.2020 11:05:00 - etf.testcases - * ","28.10.2020 11:05:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:05:00 - username -  ","28.10.2020 11:05:00 - authUser -  ","28.10.2020 11:05:00 - authMethod - basic ","28.10.2020 11:05:00 - TestRunTask initialized","28.10.2020 11:05:04 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:05:04 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:05:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

11:05:07.764 retry condition not satisfied: response.val == response.max
11:05:07.765 sleeping before retry #2
11:05:12.766 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:13.288 response time in milliseconds: 520.77
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:05:13 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:04:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:58 UTC 2020)","28.10.2020 11:04:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:58 - Preparing 1 Test Task:","28.10.2020 11:04:58 -  TestTask 1 (62a30ff6-df95-427c-a998-473438bdc236)","28.10.2020 11:04:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:58 -  with parameters: ","28.10.2020 11:04:58 - etf.testcases = *","28.10.2020 11:04:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:58 - Setting state to CREATED","28.10.2020 11:04:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:58 - Starting TestRun.f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37 at 2020-10-28T11:05:00Z","28.10.2020 11:05:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:05:00 - Project Properties: ","28.10.2020 11:05:00 - etf.testcases - * ","28.10.2020 11:05:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:05:00 - username -  ","28.10.2020 11:05:00 - authUser -  ","28.10.2020 11:05:00 - authMethod - basic ","28.10.2020 11:05:00 - TestRunTask initialized","28.10.2020 11:05:04 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:05:04 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:05:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:05:07 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:08 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:05:08 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:05:08 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:05:08 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:05:09 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:05:09 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:05:09 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:05:09 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:05:09 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:09 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:05:10 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:05:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:05:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:05:13.289 retry condition not satisfied: response.val == response.max
11:05:13.291 sleeping before retry #3
11:05:18.293 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:20.313 response time in milliseconds: 2018.99
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:05:20 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:05:20.313 retry condition satisfied
* print response 0.000
11:05:20.313 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.490
11:05:20.315 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:23.800 response time in milliseconds: 2505.13
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:05:22 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:05:15 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37.json","testRuns":{"TestRun":{"id":"EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:58.195Z","testTasks":{"TestTask":{"id":"EID62a30ff6-df95-427c-a998-473438bdc236","parent":{"ref":"EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID12fb3123-2860-4b82-b2cf-5695af61ac78"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDcb1ff33f-d153-4c51-87be-90692114c163"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID12fb3123-2860-4b82-b2cf-5695af61ac78","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:57.133Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:57.644Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDcb1ff33f-d153-4c51-87be-90692114c163","testObject":{"ref":"EID12fb3123-2860-4b82-b2cf-5695af61ac78"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee1e80d-0175-1000-9f8e-12aa0b25a2e3","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1e80d-0175-1000-9e47-bb4f3d788f75","testStepResults":{"TestStepResult":[{"id":"EID6ee1e80e-0175-1000-10dc-7e68f7c56d3a","parent":{"ref":"EID6ee1e80d-0175-1000-9e47-bb4f3d788f75"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:05:00Z","duration":15,"status":"PASSED"},{"id":"EID6ee1e81e-0175-1000-8096-1c63096b0e9a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1e8df-0175-1000-8fe1-5efc6778c58d","parent":{"ref":"EID6ee1e81e-0175-1000-8096-1c63096b0e9a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e8df-0175-1000-524e-a701916f4170","parent":{"ref":"EID6ee1e81e-0175-1000-8096-1c63096b0e9a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e8df-0175-1000-d761-67bba3220d8c","parent":{"ref":"EID6ee1e81e-0175-1000-8096-1c63096b0e9a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e8df-0175-1000-6667-e047c2a18ee7","parent":{"ref":"EID6ee1e81e-0175-1000-8096-1c63096b0e9a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID47e2c346-2b71-44f8-9441-b447935ad439"},{"ref":"EID86ce4358-667c-4464-94a5-b231f4234657"},{"ref":"EIDba67e00e-4121-4b08-bca6-7e1ce3a1b8d8"}]},"parent":{"ref":"EID6ee1e80d-0175-1000-9e47-bb4f3d788f75"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:05:00Z","duration":66,"status":"PASSED"}]},"parent":{"ref":"EID6ee1e80d-0175-1000-9f8e-12aa0b25a2e3"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:05:00Z","duration":210,"status":"PASSED"},{"id":"EID6ee1e8e0-0175-1000-28ff-d07654fa6451","testStepResults":{"TestStepResult":{"id":"EID6ee1e8e0-0175-1000-2f41-35e7ffb049d5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1e9a0-0175-1000-5335-1f816ea3a8ea","parent":{"ref":"EID6ee1e8e0-0175-1000-2f41-35e7ffb049d5"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e9a0-0175-1000-2c40-a862f3d7e11d","parent":{"ref":"EID6ee1e8e0-0175-1000-2f41-35e7ffb049d5"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e9a0-0175-1000-b320-0111e9f9a114","parent":{"ref":"EID6ee1e8e0-0175-1000-2f41-35e7ffb049d5"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfae967a9-0e74-49e0-95f8-b4a405763a9b"},{"ref":"EID1dba24c6-0a74-4d0b-a79d-3bd3be59ba1e"},{"ref":"EIDa98a1b4c-909c-4692-9205-74ee5ff619e3"}]},"parent":{"ref":"EID6ee1e8e0-0175-1000-28ff-d07654fa6451"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:05:00Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6ee1e80d-0175-1000-9f8e-12aa0b25a2e3"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:05:00Z","duration":192,"status":"PASSED"}]},"parent":{"ref":"EIDcb1ff33f-d153-4c51-87be-90692114c163"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:05:00Z","duration":404,"status":"PASSED"},{"id":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1e9a1-0175-1000-e1bb-bfcdfa084849","testStepResults":{"TestStepResult":[{"id":"EID6ee1e9a1-0175-1000-05cf-ffd344c54508","parent":{"ref":"EID6ee1e9a1-0175-1000-e1bb-bfcdfa084849"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:05:00Z","duration":52,"status":"PASSED"},{"id":"EID6ee1e9a1-0175-1000-f0ad-32a023698afd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ea87-0175-1000-3ea4-4d138ae16c64","parent":{"ref":"EID6ee1e9a1-0175-1000-f0ad-32a023698afd"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ea87-0175-1000-ec90-33cc6eacf223","parent":{"ref":"EID6ee1e9a1-0175-1000-f0ad-32a023698afd"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ea87-0175-1000-c4eb-faebe6be1d95","parent":{"ref":"EID6ee1e9a1-0175-1000-f0ad-32a023698afd"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ea87-0175-1000-06bc-f544109002f5","parent":{"ref":"EID6ee1e9a1-0175-1000-f0ad-32a023698afd"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ea87-0175-1000-3156-729ec064b48a","parent":{"ref":"EID6ee1e9a1-0175-1000-f0ad-32a023698afd"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID83c6eec7-d79f-40fa-9fae-8dc6b0d082ca"},{"ref":"EID1c2c0e03-b506-4252-b9a8-8a39707942a4"},{"ref":"EID5d785d74-36e3-4cfd-a809-aac701258cb7"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-e1bb-bfcdfa084849"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:05:00Z","duration":79,"status":"PASSED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:05:00Z","duration":230,"status":"PASSED"},{"id":"EID6ee1ea87-0175-1000-201d-c63a12f656f5","testStepResults":{"TestStepResult":[{"id":"EID6ee1ea87-0175-1000-ae1d-a9b2d15fb157","attachments":{"attachment":[{"ref":"EID5e4d2fd3-c956-45dc-8e55-bae6879293f7"},{"ref":"EID20b77cdb-6add-42d6-9361-9a8fc5dc9f84"}]},"parent":{"ref":"EID6ee1ea87-0175-1000-201d-c63a12f656f5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:05:00Z","duration":269,"status":"PASSED"},{"id":"EID6ee1ebf2-0175-1000-1723-1df59afcb02e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ed8d-0175-1000-980a-dae70ad8b013","parent":{"ref":"EID6ee1ebf2-0175-1000-1723-1df59afcb02e"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed8d-0175-1000-ed6c-ffe7bc728dbf","parent":{"ref":"EID6ee1ebf2-0175-1000-1723-1df59afcb02e"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed8d-0175-1000-2659-5a6393c37b03","parent":{"ref":"EID6ee1ebf2-0175-1000-1723-1df59afcb02e"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed8d-0175-1000-a39e-0cff85ba0499","parent":{"ref":"EID6ee1ebf2-0175-1000-1723-1df59afcb02e"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f362336-386c-46ca-9f9e-b6b2bbb879d8"},{"ref":"EID56c3c40d-f151-4e7a-b2e4-fce3a5f1b480"},{"ref":"EID41d660bb-d11d-48fe-8957-80dd5f31cfe9"}]},"parent":{"ref":"EID6ee1ea87-0175-1000-201d-c63a12f656f5"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:05:01Z","duration":126,"status":"PASSED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:05:00Z","duration":775,"status":"PASSED"},{"id":"EID6ee1ed8e-0175-1000-6275-f9327fa59af7","testStepResults":{"TestStepResult":[{"id":"EID6ee1ed8e-0175-1000-2c3d-d63d38c5e087","attachments":{"attachment":[{"ref":"EID95ee2b4e-3508-49c7-9e25-da9133a9d33f"},{"ref":"EID8bed56c6-6e96-4bed-933e-696f6839671b"}]},"parent":{"ref":"EID6ee1ed8e-0175-1000-6275-f9327fa59af7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:05:01Z","duration":178,"status":"PASSED"},{"id":"EID6ee1ee64-0175-1000-a58c-abed4d9c09f4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ef7c-0175-1000-86d5-4483eaea516e","parent":{"ref":"EID6ee1ee64-0175-1000-a58c-abed4d9c09f4"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ef7c-0175-1000-d2bd-68b76536ec12","parent":{"ref":"EID6ee1ee64-0175-1000-a58c-abed4d9c09f4"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ef7c-0175-1000-7bc9-29b1f5b4a8d6","parent":{"ref":"EID6ee1ee64-0175-1000-a58c-abed4d9c09f4"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ef7c-0175-1000-64ec-706faddd72a7","parent":{"ref":"EID6ee1ee64-0175-1000-a58c-abed4d9c09f4"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ef7c-0175-1000-6d24-4ef47342eba8","parent":{"ref":"EID6ee1ee64-0175-1000-a58c-abed4d9c09f4"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2d83ca05-5631-4b6b-a430-f2782bae50ee"},{"ref":"EID10bd1179-fd5a-43da-bf15-d17f3217cb3d"},{"ref":"EIDf7be79cf-4697-4216-a8ba-8e6019248cb3"}]},"parent":{"ref":"EID6ee1ed8e-0175-1000-6275-f9327fa59af7"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:05:01Z","duration":45,"status":"PASSED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:05:01Z","duration":494,"status":"PASSED"},{"id":"EID6ee1ef7c-0175-1000-65b1-772473ea4da5","testStepResults":{"TestStepResult":[{"id":"EID6ee1ef7c-0175-1000-b1c3-945528dc3c39","attachments":{"attachment":[{"ref":"EIDf084bdd7-66c9-4e17-ad37-983c13709098"},{"ref":"EIDf01c7543-9efa-4828-8133-1043d474abc0"}]},"parent":{"ref":"EID6ee1ef7c-0175-1000-65b1-772473ea4da5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:05:02Z","duration":159,"status":"PASSED"},{"id":"EID6ee1f09f-0175-1000-732c-5fc526d34f40","parent":{"ref":"EID6ee1ef7c-0175-1000-65b1-772473ea4da5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f09f-0175-1000-3c6b-f597bf176086","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f1d8-0175-1000-03bd-7f190bb525d3","parent":{"ref":"EID6ee1f09f-0175-1000-3c6b-f597bf176086"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f1d8-0175-1000-407b-884777ece8c1","parent":{"ref":"EID6ee1f09f-0175-1000-3c6b-f597bf176086"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f1d8-0175-1000-340a-99f4e1c65004","parent":{"ref":"EID6ee1f09f-0175-1000-3c6b-f597bf176086"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f1d8-0175-1000-c763-c70afce6ba0c","parent":{"ref":"EID6ee1f09f-0175-1000-3c6b-f597bf176086"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6552ad9e-8bb1-4ea5-95ea-14104de91e41"},{"ref":"EID34404964-b553-4b0e-95c8-c9498d0bf6f4"},{"ref":"EID3f887b19-ec83-421c-8d4b-e45ffe2eac27"}]},"parent":{"ref":"EID6ee1ef7c-0175-1000-65b1-772473ea4da5"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:05:02Z","duration":85,"status":"PASSED"},{"id":"EID6ee1f1d8-0175-1000-2c99-12ab28c2af25","attachments":{"attachment":{"ref":"EID1b9e92a1-166d-4b90-a422-d10679f0f7bd"}},"parent":{"ref":"EID6ee1ef7c-0175-1000-65b1-772473ea4da5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:05:02Z","duration":2,"status":"PASSED"},{"id":"EID6ee1f1e5-0175-1000-fe2c-be3daa770183","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f2e7-0175-1000-d3d8-f9c05e935bdd","parent":{"ref":"EID6ee1f1e5-0175-1000-fe2c-be3daa770183"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f2e7-0175-1000-7e25-edbe759cd380","parent":{"ref":"EID6ee1f1e5-0175-1000-fe2c-be3daa770183"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f2e7-0175-1000-4703-f5e2278ca107","parent":{"ref":"EID6ee1f1e5-0175-1000-fe2c-be3daa770183"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f2e7-0175-1000-20e2-f4043e9cfb19","parent":{"ref":"EID6ee1f1e5-0175-1000-fe2c-be3daa770183"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f2e7-0175-1000-e2ee-371815d640d9","parent":{"ref":"EID6ee1f1e5-0175-1000-fe2c-be3daa770183"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea081abb-2ea9-4903-bcfa-5b6578de02fd"},{"ref":"EID68c2c118-9cb0-4bfb-820f-7c40d662d20b"},{"ref":"EIDe56a099b-3938-4b0d-a3e1-1fe9751f678e"}]},"parent":{"ref":"EID6ee1ef7c-0175-1000-65b1-772473ea4da5"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:05:02Z","duration":55,"status":"PASSED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:05:02Z","duration":875,"status":"PASSED"},{"id":"EID6ee1f2e7-0175-1000-8aef-5673eaf9bded","testStepResults":{"TestStepResult":[{"id":"EID6ee1f2e7-0175-1000-5d16-e93b37306849","attachments":{"attachment":[{"ref":"EID04659994-f61a-4aea-a47e-0e89bf14c9ed"},{"ref":"EID322a6d8c-924f-405b-bfc1-9b7f77823f41"}]},"parent":{"ref":"EID6ee1f2e7-0175-1000-8aef-5673eaf9bded"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:05:02Z","duration":125,"status":"PASSED"},{"id":"EID6ee1f38d-0175-1000-9385-faf5d23c9820","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f45a-0175-1000-2028-d9a3e689f4ab","parent":{"ref":"EID6ee1f38d-0175-1000-9385-faf5d23c9820"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f45a-0175-1000-ef4e-26c400d134a3","parent":{"ref":"EID6ee1f38d-0175-1000-9385-faf5d23c9820"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f45a-0175-1000-54f3-4425af02ef9e","parent":{"ref":"EID6ee1f38d-0175-1000-9385-faf5d23c9820"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f45a-0175-1000-01e9-1685326125b8","parent":{"ref":"EID6ee1f38d-0175-1000-9385-faf5d23c9820"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff6e2c4b-0b89-405a-8be6-c43bb5b51cde"},{"ref":"EID3fa79c8c-d544-44a1-a238-f157db2bd91f"},{"ref":"EID8451c208-267f-4549-85c9-fb4fc95d4afb"}]},"parent":{"ref":"EID6ee1f2e7-0175-1000-8aef-5673eaf9bded"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:05:03Z","duration":79,"status":"PASSED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:05:02Z","duration":371,"status":"PASSED"},{"id":"EID6ee1f45a-0175-1000-74ed-fb3d92406529","testStepResults":{"TestStepResult":[{"id":"EID6ee1f45a-0175-1000-c338-839a8e1421b5","attachments":{"attachment":[{"ref":"EID6ebf7e3d-f366-4a99-addc-6f5bc5599d8b"},{"ref":"EID532c742f-265a-4b85-805d-d952e5fbb081"}]},"parent":{"ref":"EID6ee1f45a-0175-1000-74ed-fb3d92406529"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:05:03Z","duration":156,"status":"PASSED"},{"id":"EID6ee1f51c-0175-1000-24db-5f895aa4f820","parent":{"ref":"EID6ee1f45a-0175-1000-74ed-fb3d92406529"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f51c-0175-1000-1af7-aab78b10c807","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f63a-0175-1000-484d-da750d53d8cc","parent":{"ref":"EID6ee1f51c-0175-1000-1af7-aab78b10c807"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f63a-0175-1000-acc5-a7b69ed63279","parent":{"ref":"EID6ee1f51c-0175-1000-1af7-aab78b10c807"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f63a-0175-1000-98fd-d03b361a01ca","parent":{"ref":"EID6ee1f51c-0175-1000-1af7-aab78b10c807"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f63a-0175-1000-9159-3aa8a1c6d6b6","parent":{"ref":"EID6ee1f51c-0175-1000-1af7-aab78b10c807"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbbf90dde-9855-4538-881e-d4f2c2b9f215"},{"ref":"EID5905f9ae-0c8c-4fe4-8fe7-03a5cef6726d"},{"ref":"EID226ee917-9398-4159-9d89-71a5e4d4a08a"}]},"parent":{"ref":"EID6ee1f45a-0175-1000-74ed-fb3d92406529"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:05:03Z","duration":36,"status":"PASSED"},{"id":"EID6ee1f63a-0175-1000-9a38-3d0bf2b3df33","attachments":{"attachment":{"ref":"EID37d8bea3-6027-4692-aafe-ee8b8c77107e"}},"parent":{"ref":"EID6ee1f45a-0175-1000-74ed-fb3d92406529"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:05:03Z","duration":1,"status":"PASSED"},{"id":"EID6ee1f647-0175-1000-0483-4a2d24c17c0c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f791-0175-1000-007d-718a01a3c3fd","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee1f647-0175-1000-0483-4a2d24c17c0c"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:05:04Z","duration":10,"status":"FAILED"},{"id":"EID6ee1f79b-0175-1000-5426-b7043d2d4972","parent":{"ref":"EID6ee1f647-0175-1000-0483-4a2d24c17c0c"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f79b-0175-1000-caea-a278fd2fd1a0","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee1f647-0175-1000-0483-4a2d24c17c0c"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID872d9fb9-5b79-4b07-b553-dd366795c499"},{"ref":"EID154f80db-3e0b-4de0-976f-c6b4b0c59c0c"},{"ref":"EID74040e3e-4c3c-4286-809c-cda868fb57b1"}]},"parent":{"ref":"EID6ee1f45a-0175-1000-74ed-fb3d92406529"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:05:03Z","duration":257,"status":"FAILED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:05:03Z","duration":833,"status":"FAILED"},{"id":"EID6ee1f79b-0175-1000-dfa1-54e2cfaa2fcc","testStepResults":{"TestStepResult":[{"id":"EID6ee1f79b-0175-1000-7e80-3fb58b6435fc","attachments":{"attachment":[{"ref":"EID5daaa41c-997c-4c9b-b860-1d75a1a6cbee"},{"ref":"EID18facfac-22db-45bd-9d0d-d45fab65f7b5"}]},"parent":{"ref":"EID6ee1f79b-0175-1000-dfa1-54e2cfaa2fcc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:05:04Z","duration":164,"status":"PASSED"},{"id":"EID6ee1f863-0175-1000-528b-1c8adce7346c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f930-0175-1000-8e02-46670260e379","parent":{"ref":"EID6ee1f863-0175-1000-528b-1c8adce7346c"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f930-0175-1000-666d-eb174c345fdc","parent":{"ref":"EID6ee1f863-0175-1000-528b-1c8adce7346c"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f930-0175-1000-cb4f-02728b08276f","parent":{"ref":"EID6ee1f863-0175-1000-528b-1c8adce7346c"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f930-0175-1000-de69-6293ac7e54da","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee1f863-0175-1000-528b-1c8adce7346c"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID099969fb-87a6-4b5d-8f8d-93f73facbfb1"},{"ref":"EIDe729bd69-369c-4b93-be12-9afcdf24201e"},{"ref":"EID5c082ff0-24d3-4afe-8724-da0ab14118ab"}]},"parent":{"ref":"EID6ee1f79b-0175-1000-dfa1-54e2cfaa2fcc"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:05:04Z","duration":73,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:05:04Z","duration":405,"status":"PASSED_MANUAL"},{"id":"EID6ee1f930-0175-1000-4bdb-f3338d95c2c8","testStepResults":{"TestStepResult":{"id":"EID6ee1f930-0175-1000-72db-bfd632bdd3a3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f9de-0175-1000-e8cf-c76b71fc68e4","parent":{"ref":"EID6ee1f930-0175-1000-72db-bfd632bdd3a3"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f9de-0175-1000-6b61-b9892cc5ad74","parent":{"ref":"EID6ee1f930-0175-1000-72db-bfd632bdd3a3"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f9de-0175-1000-1f2b-a473e361c8bc","parent":{"ref":"EID6ee1f930-0175-1000-72db-bfd632bdd3a3"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f9de-0175-1000-700c-bc8644fdec4d","parent":{"ref":"EID6ee1f930-0175-1000-72db-bfd632bdd3a3"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7cd4a121-c21b-438b-b656-31e7bfc01d28"},{"ref":"EID6d9c9c23-63c0-451b-91de-faec41de595b"},{"ref":"EID981a29f8-1a77-400c-80c6-3ab53656819e"}]},"parent":{"ref":"EID6ee1f930-0175-1000-4bdb-f3338d95c2c8"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:05:04Z","duration":62,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:05:04Z","duration":174,"status":"PASSED"},{"id":"EID6ee1f9df-0175-1000-ace5-2cb9a0ef8449","testStepResults":{"TestStepResult":{"id":"EID6ee1f9df-0175-1000-f8d0-1967674332f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1fabf-0175-1000-aff5-f96be8b1ba26","parent":{"ref":"EID6ee1f9df-0175-1000-f8d0-1967674332f7"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fabf-0175-1000-d91a-f75c350d9948","parent":{"ref":"EID6ee1f9df-0175-1000-f8d0-1967674332f7"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fabf-0175-1000-0b7c-7b7009a20574","parent":{"ref":"EID6ee1f9df-0175-1000-f8d0-1967674332f7"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fabf-0175-1000-ee9e-203f9f7288a6","parent":{"ref":"EID6ee1f9df-0175-1000-f8d0-1967674332f7"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID811d97bc-391e-440e-b301-5a18614f0597"},{"ref":"EID47ebe71a-ccc9-49a2-9969-b5ad1092f035"},{"ref":"EID53a7c74a-b44b-42ef-a651-0eaf1aa5b28b"}]},"parent":{"ref":"EID6ee1f9df-0175-1000-ace5-2cb9a0ef8449"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:05:04Z","duration":114,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:05:04Z","duration":225,"status":"PASSED"},{"id":"EID6ee1fac0-0175-1000-6855-7797228817fd","testStepResults":{"TestStepResult":{"id":"EID6ee1fac0-0175-1000-8299-f9e714c95cc9","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID136a323d-3fa4-4a49-b929-5135781bdae8"},{"ref":"EIDce423365-6582-4c76-ab01-431a5b6b54e1"},{"ref":"EIDb6f0505d-66e6-4fae-93fb-26e247557e4b"},{"ref":"EID39e258d3-d683-4965-9185-9dd50d176e20"},{"ref":"EIDe3c95754-2986-4492-8a3f-dabf0b658cc5"},{"ref":"EID3766c8cd-5f39-49ad-9da9-0ca2be40c4e7"},{"ref":"EID6514624e-e338-428c-985d-dcf9c1b5bca3"},{"ref":"EID3592f796-63a4-4a83-946f-f8497d74d220"},{"ref":"EIDdb32f552-4236-42e1-b0a7-fbe895e693cb"}]},"parent":{"ref":"EID6ee1fac0-0175-1000-6855-7797228817fd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:05:04Z","duration":774,"status":"SKIPPED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:05:04Z","duration":928,"status":"SKIPPED"},{"id":"EID6ee1fe60-0175-1000-b954-92136247529b","testStepResults":{"TestStepResult":{"id":"EID6ee1fe60-0175-1000-9602-40b95df2ccc4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ff22-0175-1000-e2b5-9d24c5c2ffda","parent":{"ref":"EID6ee1fe60-0175-1000-9602-40b95df2ccc4"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ff22-0175-1000-0f8a-5782b8bf6045","parent":{"ref":"EID6ee1fe60-0175-1000-9602-40b95df2ccc4"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ff22-0175-1000-17c7-9f19b5f914dc","parent":{"ref":"EID6ee1fe60-0175-1000-9602-40b95df2ccc4"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ff22-0175-1000-a086-408c61f1751b","parent":{"ref":"EID6ee1fe60-0175-1000-9602-40b95df2ccc4"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID32245599-981d-413f-bdae-46254bba52dc"},{"ref":"EIDc04a4b5c-217e-4872-b06b-89daa9bdb092"},{"ref":"EID0ceb63f9-1933-40fd-943e-bb1cdb364474"}]},"parent":{"ref":"EID6ee1fe60-0175-1000-b954-92136247529b"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:05:05Z","duration":69,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:05:05Z","duration":194,"status":"PASSED"},{"id":"EID6ee1ff22-0175-1000-fc6d-c376988d9c7d","testStepResults":{"TestStepResult":{"id":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20073-0175-1000-5921-ab734bff30b6","parent":{"ref":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee20073-0175-1000-60ef-07077d643b78","parent":{"ref":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee20073-0175-1000-aae5-d1a5395f2646","parent":{"ref":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee20073-0175-1000-4ac8-59981f43fc61","parent":{"ref":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee20073-0175-1000-744d-f4fc95ee4e8e","parent":{"ref":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee20073-0175-1000-72df-bb8ba0e41a2c","parent":{"ref":"EID6ee1ff23-0175-1000-8fb9-93e6ce1b98f8"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID93d524dd-6f32-4914-929e-2603a225a262"},{"ref":"EID233989d3-7293-4788-b41b-3d37f0599d7b"},{"ref":"EID5e22fcbb-4e03-492f-be7d-ef08f11963bd"}]},"parent":{"ref":"EID6ee1ff22-0175-1000-fc6d-c376988d9c7d"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:05:06Z","duration":68,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:05:06Z","duration":337,"status":"PASSED"},{"id":"EID6ee20073-0175-1000-8cae-bef839a973bc","testStepResults":{"TestStepResult":{"id":"EID6ee20073-0175-1000-2851-00728716c4c4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee201c0-0175-1000-cde5-190f12def32c","parent":{"ref":"EID6ee20073-0175-1000-2851-00728716c4c4"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee201c0-0175-1000-8f52-340f643b588d","parent":{"ref":"EID6ee20073-0175-1000-2851-00728716c4c4"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee201c0-0175-1000-3338-e5705c991a0a","parent":{"ref":"EID6ee20073-0175-1000-2851-00728716c4c4"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee201c0-0175-1000-fae8-64275efcc5a7","parent":{"ref":"EID6ee20073-0175-1000-2851-00728716c4c4"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee201c0-0175-1000-73e6-0eeedc3f283b","parent":{"ref":"EID6ee20073-0175-1000-2851-00728716c4c4"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee201c0-0175-1000-353e-b39b28f8a773","parent":{"ref":"EID6ee20073-0175-1000-2851-00728716c4c4"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:05:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4762487-1715-4ca6-b042-9c22ff6630e6"},{"ref":"EID6cbc6df1-028e-44e5-847b-74eefce4d1ac"},{"ref":"EID93f2f400-3ec5-4d1b-9fc0-1b544c392ffb"}]},"parent":{"ref":"EID6ee20073-0175-1000-8cae-bef839a973bc"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:05:06Z","duration":61,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:05:06Z","duration":333,"status":"PASSED"},{"id":"EID6ee201c0-0175-1000-4d12-243f34891d7d","testStepResults":{"TestStepResult":{"id":"EID6ee201c0-0175-1000-30f3-0ab7c841d055","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20302-0175-1000-68a3-f25bdf00b4cc","parent":{"ref":"EID6ee201c0-0175-1000-30f3-0ab7c841d055"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20302-0175-1000-9f0c-f8cc8c994dbb","parent":{"ref":"EID6ee201c0-0175-1000-30f3-0ab7c841d055"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20302-0175-1000-2bd5-d24b4c0c3207","parent":{"ref":"EID6ee201c0-0175-1000-30f3-0ab7c841d055"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20302-0175-1000-1388-9afe0d65285e","parent":{"ref":"EID6ee201c0-0175-1000-30f3-0ab7c841d055"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe222dffa-eb6d-4d78-b417-bae5ed1e229f"},{"ref":"EID3fa18dc8-24d5-484d-941f-3d1fc4d11797"},{"ref":"EIDf785e132-3ba3-4ce7-98e3-38f0b17ac7f8"}]},"parent":{"ref":"EID6ee201c0-0175-1000-4d12-243f34891d7d"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:05:06Z","duration":92,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:05:06Z","duration":324,"status":"PASSED"},{"id":"EID6ee20304-0175-1000-c0b2-9e049a25e5d3","testStepResults":{"TestStepResult":[{"id":"EID6ee20304-0175-1000-36a8-9c57401c64c7","attachments":{"attachment":[{"ref":"EID987c9d43-47af-4638-a2c3-da433a119196"},{"ref":"EID96f0367e-7fb0-4293-8cd8-15d373e26fb4"},{"ref":"EID32ded535-26fd-4979-8022-30b3bb8e6432"},{"ref":"EIDed08693e-a990-402e-a2f6-4d88bf41a6bf"}]},"parent":{"ref":"EID6ee20304-0175-1000-c0b2-9e049a25e5d3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:05:07Z","duration":336,"status":"PASSED"},{"id":"EID6ee204bf-0175-1000-9c38-80b001ad8bbf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee205b0-0175-1000-c8df-a3247c540815","parent":{"ref":"EID6ee204bf-0175-1000-9c38-80b001ad8bbf"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee205b0-0175-1000-46dc-160f99eee6a9","parent":{"ref":"EID6ee204bf-0175-1000-9c38-80b001ad8bbf"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee205b0-0175-1000-5b52-bf7e831124fc","parent":{"ref":"EID6ee204bf-0175-1000-9c38-80b001ad8bbf"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee205b0-0175-1000-a9d9-8d3c3fcb3f5f","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee204bf-0175-1000-9c38-80b001ad8bbf"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3e3afb6c-fce0-49b7-b21c-77d1316219a9"},{"ref":"EID571577b4-82ba-4dc8-8fa7-9f80d38a8c9a"},{"ref":"EIDb3f89487-b6c2-4199-8353-3cba750bc6ea"}]},"parent":{"ref":"EID6ee20304-0175-1000-c0b2-9e049a25e5d3"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:05:07Z","duration":104,"status":"FAILED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:05:07Z","duration":684,"status":"FAILED"},{"id":"EID6ee205b1-0175-1000-c4fb-af2886c03511","testStepResults":{"TestStepResult":{"id":"EID6ee205b1-0175-1000-f068-c293cd29a988","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20648-0175-1000-d58b-0a9d70724244","parent":{"ref":"EID6ee205b1-0175-1000-f068-c293cd29a988"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20648-0175-1000-b3c4-84f2442c32c5","parent":{"ref":"EID6ee205b1-0175-1000-f068-c293cd29a988"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20648-0175-1000-3097-af61aa04a4ac","parent":{"ref":"EID6ee205b1-0175-1000-f068-c293cd29a988"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20648-0175-1000-ab44-7a1f40666012","parent":{"ref":"EID6ee205b1-0175-1000-f068-c293cd29a988"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5c411084-9689-4ea2-84f1-b813794f1365"},{"ref":"EID0e2065be-8a6c-4566-b9fc-8f8451644762"},{"ref":"EID46d872f0-ecdd-447e-ba1f-2f6266217493"}]},"parent":{"ref":"EID6ee205b1-0175-1000-c4fb-af2886c03511"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:05:07Z","duration":34,"status":"PASSED"}},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:05:07Z","duration":151,"status":"PASSED"},{"id":"EID6ee20648-0175-1000-c6a9-fba003e0588a","testStepResults":{"TestStepResult":[{"id":"EID6ee20649-0175-1000-29cc-5686bd339d72","parent":{"ref":"EID6ee20648-0175-1000-c6a9-fba003e0588a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20649-0175-1000-1386-aef59c4a3087","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2076a-0175-1000-f6ca-5c2fc11283cb","parent":{"ref":"EID6ee20649-0175-1000-1386-aef59c4a3087"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2076a-0175-1000-3b06-848a3e0d6840","parent":{"ref":"EID6ee20649-0175-1000-1386-aef59c4a3087"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2076a-0175-1000-662a-54e79cd4190e","parent":{"ref":"EID6ee20649-0175-1000-1386-aef59c4a3087"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2076a-0175-1000-bd04-da6080de5b04","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee20649-0175-1000-1386-aef59c4a3087"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID476d0da6-957a-4374-8ef3-4d90d9acd60c"},{"ref":"EID50398624-be8d-49aa-bca2-be6224e041fe"},{"ref":"EIDeb290289-e14e-42df-a266-182387075c6b"}]},"parent":{"ref":"EID6ee20648-0175-1000-c6a9-fba003e0588a"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:05:07Z","duration":79,"status":"FAILED"}]},"parent":{"ref":"EID6ee1e9a1-0175-1000-a064-64762daf6e0d"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:05:07Z","duration":290,"status":"FAILED"}]},"parent":{"ref":"EIDcb1ff33f-d153-4c51-87be-90692114c163"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:05:00Z","duration":7625,"status":"FAILED"},{"id":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee2076b-0175-1000-c6c0-f9ef176b62db","testStepResults":{"TestStepResult":[{"id":"EID6ee2076b-0175-1000-5a0b-09b223a441e2","parent":{"ref":"EID6ee2076b-0175-1000-c6c0-f9ef176b62db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2076b-0175-1000-f9b2-d5f171ee23ca","parent":{"ref":"EID6ee2076b-0175-1000-c6c0-f9ef176b62db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:05:08Z","duration":34,"status":"PASSED"},{"id":"EID6ee2076b-0175-1000-6b54-59af1701834c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20873-0175-1000-be8d-517b006fc756","parent":{"ref":"EID6ee2076b-0175-1000-6b54-59af1701834c"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20873-0175-1000-2ef2-d7b8d0b6e75c","parent":{"ref":"EID6ee2076b-0175-1000-6b54-59af1701834c"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20873-0175-1000-2435-644b8216ec45","parent":{"ref":"EID6ee2076b-0175-1000-6b54-59af1701834c"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcedea490-b8a0-4fcd-b152-93ab6d8ca159"},{"ref":"EID8169f841-e9a6-48f0-9c32-f6b1e098dec7"},{"ref":"EID3b099922-9ecf-42b4-bc70-a39892f7cd0f"}]},"parent":{"ref":"EID6ee2076b-0175-1000-c6c0-f9ef176b62db"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:05:08Z","duration":75,"status":"PASSED"},{"id":"EID6ee20873-0175-1000-0a0d-2f626ee8e611","attachments":{"attachment":{"ref":"EID637a72ad-ed02-4dce-9b3a-d227e6a56d13"}},"parent":{"ref":"EID6ee2076b-0175-1000-c6c0-f9ef176b62db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20885-0175-1000-af16-b06886fe4eab","parent":{"ref":"EID6ee2076b-0175-1000-c6c0-f9ef176b62db"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:05:08Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:05:08Z","duration":335,"status":"PASSED"},{"id":"EID6ee208ba-0175-1000-9224-6d821518cc8f","testStepResults":{"TestStepResult":[{"id":"EID6ee208ba-0175-1000-02b3-5ce8747f6c24","parent":{"ref":"EID6ee208ba-0175-1000-9224-6d821518cc8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:05:08Z","duration":52,"status":"PASSED"},{"id":"EID6ee208ba-0175-1000-d721-092602acc4fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20923-0175-1000-aed6-4a0c58cca85d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee208ba-0175-1000-d721-092602acc4fd"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:05:08Z","duration":13,"status":"FAILED"},{"id":"EID6ee20930-0175-1000-1a73-07c7e415f8b0","parent":{"ref":"EID6ee208ba-0175-1000-d721-092602acc4fd"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20930-0175-1000-b0ab-f291ce6ab5d9","parent":{"ref":"EID6ee208ba-0175-1000-d721-092602acc4fd"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20930-0175-1000-4a93-b0bff7343088","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee208ba-0175-1000-d721-092602acc4fd"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"FAILED"},{"id":"EID6ee20930-0175-1000-0777-8e4a42d146f2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee208ba-0175-1000-d721-092602acc4fd"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID27beb37f-b71b-47dc-a782-fd03b3280ee2"},{"ref":"EID92fa2798-889c-43ea-b4f6-8e7acf4e971e"},{"ref":"EID9f2d58a8-d8ba-4452-b18d-e82bca352d88"}]},"parent":{"ref":"EID6ee208ba-0175-1000-9224-6d821518cc8f"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:05:08Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:05:08Z","duration":119,"status":"FAILED"},{"id":"EID6ee20931-0175-1000-1c2a-83fa7ba8979a","testStepResults":{"TestStepResult":{"id":"EID6ee20931-0175-1000-89df-49e791774b1c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20986-0175-1000-7ffe-67e88ebf840f","parent":{"ref":"EID6ee20931-0175-1000-89df-49e791774b1c"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20986-0175-1000-7d23-a81afe0f3c71","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20931-0175-1000-89df-49e791774b1c"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:05:08Z","duration":12,"status":"FAILED"},{"id":"EID6ee20992-0175-1000-49f7-42bb0ab36a4b","parent":{"ref":"EID6ee20931-0175-1000-89df-49e791774b1c"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1034655f-7f2d-466c-a79f-5355070f1d02"},{"ref":"EIDc7fa2ac9-9011-4f31-97c8-0a3fd3ecbb9a"},{"ref":"EIDf1d35738-ed37-4f90-b4de-f552a83c79fc"}]},"parent":{"ref":"EID6ee20931-0175-1000-1c2a-83fa7ba8979a"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:05:08Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:05:08Z","duration":97,"status":"FAILED"},{"id":"EID6ee20993-0175-1000-2843-5fdee1fc4169","testStepResults":{"TestStepResult":{"id":"EID6ee20993-0175-1000-6103-72cdb8895e51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20a18-0175-1000-2b4e-4c0e925126e8","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee20993-0175-1000-6103-72cdb8895e51"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:05:08Z","duration":1,"status":"FAILED"},{"id":"EID6ee20a19-0175-1000-b4f7-da622ce9c765","parent":{"ref":"EID6ee20993-0175-1000-6103-72cdb8895e51"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20a19-0175-1000-0c3f-403d1936767d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20993-0175-1000-6103-72cdb8895e51"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:05:08Z","duration":11,"status":"FAILED"},{"id":"EID6ee20a24-0175-1000-65b8-728df95e29f2","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee20993-0175-1000-6103-72cdb8895e51"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdeb4269a-f60e-4977-be50-c00ebb966a80"},{"ref":"EIDfca936ba-8ee8-491e-a9c5-016a93aa7a5a"},{"ref":"EIDa3bc0bf7-7348-41e1-935f-5e33e59aa432"}]},"parent":{"ref":"EID6ee20993-0175-1000-2843-5fdee1fc4169"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:05:08Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:05:08Z","duration":145,"status":"FAILED"},{"id":"EID6ee20a24-0175-1000-87dd-d6c4d7a52ce8","testStepResults":{"TestStepResult":{"id":"EID6ee20a24-0175-1000-1962-99778e872bae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20a83-0175-1000-73a6-8c1f4737d4dd","parent":{"ref":"EID6ee20a24-0175-1000-1962-99778e872bae"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20a83-0175-1000-0511-8fbfbf6c35fb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20a24-0175-1000-1962-99778e872bae"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:05:08Z","duration":12,"status":"FAILED"},{"id":"EID6ee20a8f-0175-1000-9ec8-bb7527ac0a07","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee20a24-0175-1000-1962-99778e872bae"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID486bd3b9-2861-43c9-9005-91c3b2bf7298"},{"ref":"EIDc9c37262-0af9-4e8b-8233-cada860022a2"},{"ref":"EID453f863a-8a7a-4345-9fb1-dfceba30a469"}]},"parent":{"ref":"EID6ee20a24-0175-1000-87dd-d6c4d7a52ce8"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:05:08Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:05:08Z","duration":107,"status":"FAILED"},{"id":"EID6ee20a8f-0175-1000-e868-d93c6c385a90","testStepResults":{"TestStepResult":{"id":"EID6ee20a8f-0175-1000-392f-5074f4caa84f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20ae5-0175-1000-6697-74ea79ce5e58","parent":{"ref":"EID6ee20a8f-0175-1000-392f-5074f4caa84f"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20ae5-0175-1000-0182-4266a00d2b5d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20a8f-0175-1000-392f-5074f4caa84f"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:05:09Z","duration":11,"status":"FAILED"},{"id":"EID6ee20af0-0175-1000-2b42-20220dd80e99","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee20a8f-0175-1000-392f-5074f4caa84f"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID46eeea6c-c0f5-499f-9d47-043f6cb64eaf"},{"ref":"EID40dc6011-2a2f-411b-b108-cdb9a574d1b8"},{"ref":"EIDe9989602-fefd-48f9-8bd4-0a0eb9c296cf"}]},"parent":{"ref":"EID6ee20a8f-0175-1000-e868-d93c6c385a90"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:05:09Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:05:09Z","duration":97,"status":"FAILED"},{"id":"EID6ee20af1-0175-1000-535c-2c8109bb025e","testStepResults":{"TestStepResult":{"id":"EID6ee20af1-0175-1000-05f2-190a9a934459","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20b68-0175-1000-36d0-977a6fa1dc07","parent":{"ref":"EID6ee20af1-0175-1000-05f2-190a9a934459"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20b68-0175-1000-2e89-144ecce139fc","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20af1-0175-1000-05f2-190a9a934459"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:05:09Z","duration":12,"status":"FAILED"},{"id":"EID6ee20b74-0175-1000-af14-c85c18382eda","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee20af1-0175-1000-05f2-190a9a934459"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"FAILED"},{"id":"EID6ee20b74-0175-1000-c012-5a1200431731","parent":{"ref":"EID6ee20af1-0175-1000-05f2-190a9a934459"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20b74-0175-1000-b0e6-289d882981a8","parent":{"ref":"EID6ee20af1-0175-1000-05f2-190a9a934459"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID33a203ee-913f-4f87-9eb5-26ffeb9a0b1f"},{"ref":"EIDc284696a-7ccb-433b-aa02-31badf2e1b5b"},{"ref":"EIDcdc27728-7502-4ecd-a7b1-c8ce4744604a"}]},"parent":{"ref":"EID6ee20af1-0175-1000-535c-2c8109bb025e"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:05:09Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:05:09Z","duration":131,"status":"FAILED"},{"id":"EID6ee20b75-0175-1000-e054-3e1eb1b8d70f","testStepResults":{"TestStepResult":{"id":"EID6ee20b75-0175-1000-af66-9b70f2403856","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20bd0-0175-1000-3104-67642225ec7a","parent":{"ref":"EID6ee20b75-0175-1000-af66-9b70f2403856"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20bd0-0175-1000-70d8-5459b698e8e3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20b75-0175-1000-af66-9b70f2403856"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:05:09Z","duration":11,"status":"FAILED"},{"id":"EID6ee20bdb-0175-1000-eeb4-9aa0353148cb","parent":{"ref":"EID6ee20b75-0175-1000-af66-9b70f2403856"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3acd684c-550c-49ef-b194-a3daaa31bdb5"},{"ref":"EID3bfcaa20-7815-4961-a254-66cdfc3a17b6"},{"ref":"EID54a07d2d-f946-4b20-aea7-86bf5bdf6364"}]},"parent":{"ref":"EID6ee20b75-0175-1000-e054-3e1eb1b8d70f"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:05:09Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:05:09Z","duration":102,"status":"FAILED"},{"id":"EID6ee20bdb-0175-1000-9128-03005a477ca9","testStepResults":{"TestStepResult":{"id":"EID6ee20bdc-0175-1000-60b4-fc59c0cca8b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20c5a-0175-1000-87cd-68469456a1e2","parent":{"ref":"EID6ee20bdc-0175-1000-60b4-fc59c0cca8b0"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20c5a-0175-1000-ff83-fe143de94b4f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20bdc-0175-1000-60b4-fc59c0cca8b0"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:05:09Z","duration":24,"status":"FAILED"},{"id":"EID6ee20c73-0175-1000-4e77-a89bd48e516d","parent":{"ref":"EID6ee20bdc-0175-1000-60b4-fc59c0cca8b0"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf5a273c4-e4a5-437e-96ee-2d4034d9f75c"},{"ref":"EID222589c0-c7a4-430f-a6b9-68c5ba5c85c1"},{"ref":"EID6d993672-0cd1-4cb3-95f0-76dad84a0b86"}]},"parent":{"ref":"EID6ee20bdb-0175-1000-9128-03005a477ca9"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:05:09Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:05:09Z","duration":152,"status":"FAILED"},{"id":"EID6ee20c73-0175-1000-7c33-6abfca9e77b1","testStepResults":{"TestStepResult":{"id":"EID6ee20c73-0175-1000-977b-ef91fbf66cd2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20d06-0175-1000-cdad-46730368745e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20c73-0175-1000-977b-ef91fbf66cd2"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:05:09Z","duration":11,"status":"FAILED"},{"id":"EID6ee20d11-0175-1000-6352-38ae1ad6b883","parent":{"ref":"EID6ee20c73-0175-1000-977b-ef91fbf66cd2"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20d11-0175-1000-c03a-75579a6cd543","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee20c73-0175-1000-977b-ef91fbf66cd2"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"FAILED"},{"id":"EID6ee20d12-0175-1000-4cd5-517dac45b664","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee20c73-0175-1000-977b-ef91fbf66cd2"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfd57f304-67aa-4e4c-8965-fe0912d7af52"},{"ref":"EIDb46fc374-be30-45db-9baf-43c82a2dc635"},{"ref":"EIDf0ee1025-4d30-4aef-b803-01b8fb1f51e9"}]},"parent":{"ref":"EID6ee20c73-0175-1000-7c33-6abfca9e77b1"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:05:09Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:05:09Z","duration":159,"status":"FAILED"},{"id":"EID6ee20d12-0175-1000-9358-5de61b1b43dc","testStepResults":{"TestStepResult":{"id":"EID6ee20d12-0175-1000-01b8-68f0786c248d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20d71-0175-1000-c909-fa54b450258e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20d12-0175-1000-01b8-68f0786c248d"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:05:09Z","duration":11,"status":"FAILED"},{"id":"EID6ee20d7c-0175-1000-90f5-bfdf8cbb244e","parent":{"ref":"EID6ee20d12-0175-1000-01b8-68f0786c248d"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20d7c-0175-1000-eba4-0d4c9590c454","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee20d12-0175-1000-01b8-68f0786c248d"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"FAILED"},{"id":"EID6ee20d7c-0175-1000-d91f-4ef260af4d73","parent":{"ref":"EID6ee20d12-0175-1000-01b8-68f0786c248d"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDebacd5b2-526a-4efb-b366-fb8c8890b2b5"},{"ref":"EID1884dc8d-81fc-4924-aac5-2e2247bc27a5"},{"ref":"EID6fa7ceba-8fee-4b2f-9a29-54a9d44bb34b"}]},"parent":{"ref":"EID6ee20d12-0175-1000-9358-5de61b1b43dc"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:05:09Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:05:09Z","duration":106,"status":"FAILED"},{"id":"EID6ee20d7c-0175-1000-32db-6ddfab4edd9e","testStepResults":{"TestStepResult":[{"id":"EID6ee20d7c-0175-1000-d5b3-75a0969b31c8","parent":{"ref":"EID6ee20d7c-0175-1000-32db-6ddfab4edd9e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20d7c-0175-1000-41d7-9eb9bc9bbb75","parent":{"ref":"EID6ee20d7c-0175-1000-32db-6ddfab4edd9e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:05:09Z","duration":131,"status":"PASSED"},{"id":"EID6ee20d7d-0175-1000-9225-0697e69814df","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20f0b-0175-1000-d57b-2496e8913be2","parent":{"ref":"EID6ee20d7d-0175-1000-9225-0697e69814df"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20f0b-0175-1000-7467-453fbe63dc10","parent":{"ref":"EID6ee20d7d-0175-1000-9225-0697e69814df"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20f0b-0175-1000-f736-4ff3b5396a90","parent":{"ref":"EID6ee20d7d-0175-1000-9225-0697e69814df"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20f0b-0175-1000-84c3-a89957df7ac1","parent":{"ref":"EID6ee20d7d-0175-1000-9225-0697e69814df"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID87237730-61bb-4e94-8e15-7676d46fd97f"},{"ref":"EIDa9e3aa91-ce21-4d9f-871e-773f78beaac9"},{"ref":"EIDc1bd1618-7634-4f96-bcc9-f885c2495c55"}]},"parent":{"ref":"EID6ee20d7c-0175-1000-32db-6ddfab4edd9e"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:05:09Z","duration":100,"status":"PASSED"},{"id":"EID6ee20f0b-0175-1000-ecd0-6e08a32390b0","attachments":{"attachment":{"ref":"EID693fc3ac-2151-4831-ad56-7219d2d3fae9"}},"parent":{"ref":"EID6ee20d7c-0175-1000-32db-6ddfab4edd9e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:05:10Z","duration":4,"status":"PASSED"},{"id":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20fbe-0175-1000-a3de-94f5025fdf1c","parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20fbe-0175-1000-fc7c-910222c3a1cb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:05:10Z","duration":11,"status":"FAILED"},{"id":"EID6ee20fc9-0175-1000-2f5e-7f3b758916bf","parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20fc9-0175-1000-42f5-f8ef630e0110","parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20fc9-0175-1000-3a5f-2a6ca815d333","parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20fc9-0175-1000-9335-f5b25997e3f5","parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20fc9-0175-1000-2b08-2d25a4a15bab","parent":{"ref":"EID6ee20f2a-0175-1000-8ec8-774d59515ee6"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe010b323-837a-4312-b7b7-d9e312c45762"},{"ref":"EID20438d9f-a3c3-4f6f-b1f7-d1ba0f5ad9ba"},{"ref":"EID7914be53-5ec3-42e3-a79f-8c12ea796dd8"}]},"parent":{"ref":"EID6ee20d7c-0175-1000-32db-6ddfab4edd9e"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:05:10Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:05:09Z","duration":589,"status":"FAILED"},{"id":"EID6ee20fca-0175-1000-4d06-da5eb7def0d8","testStepResults":{"TestStepResult":[{"id":"EID6ee20fca-0175-1000-60eb-f83c78761e12","parent":{"ref":"EID6ee20fca-0175-1000-4d06-da5eb7def0d8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20fca-0175-1000-c8c4-ccda9b92f6fa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee210ed-0175-1000-3fa0-773659a23874","parent":{"ref":"EID6ee20fca-0175-1000-c8c4-ccda9b92f6fa"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee210ed-0175-1000-61bc-1d6acfe03089","parent":{"ref":"EID6ee20fca-0175-1000-c8c4-ccda9b92f6fa"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee210ed-0175-1000-065c-c3fae680b49d","parent":{"ref":"EID6ee20fca-0175-1000-c8c4-ccda9b92f6fa"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee210ed-0175-1000-025d-0386e68d20da","parent":{"ref":"EID6ee20fca-0175-1000-c8c4-ccda9b92f6fa"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb2ff38d3-9343-4d11-ac16-de73fc94dae3"},{"ref":"EIDfb688a22-87d1-48f6-b890-8670b2d4276d"},{"ref":"EIDb41eb495-fae0-4caa-81bc-6d48f5c52b42"}]},"parent":{"ref":"EID6ee20fca-0175-1000-4d06-da5eb7def0d8"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:05:10Z","duration":144,"status":"PASSED"},{"id":"EID6ee210ed-0175-1000-3611-e1cbc72859ff","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee21101-0175-1000-6232-fd321886736c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee211e3-0175-1000-3484-25b8e845da8d","parent":{"ref":"EID6ee21101-0175-1000-6232-fd321886736c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee211e3-0175-1000-c962-8c77975e4dcf","parent":{"ref":"EID6ee21101-0175-1000-6232-fd321886736c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee211e3-0175-1000-0167-077895da7e8d","parent":{"ref":"EID6ee21101-0175-1000-6232-fd321886736c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDadf93fc9-ebfd-4da4-a0a7-c06265d5bddd"},{"ref":"EID949ca88d-6794-4e9a-82c8-841fe26bcd2f"},{"ref":"EIDf0403790-390a-429b-ac9a-5269b3060885"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:10Z","duration":146,"status":"PASSED"},{"id":"EID6ee211ed-0175-1000-c9bd-f765a6aa5671","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21313-0175-1000-5634-0778372f6002","parent":{"ref":"EID6ee211ed-0175-1000-c9bd-f765a6aa5671"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee21313-0175-1000-5426-72bec5b51957","parent":{"ref":"EID6ee211ed-0175-1000-c9bd-f765a6aa5671"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee21313-0175-1000-7230-cf7549717191","parent":{"ref":"EID6ee211ed-0175-1000-c9bd-f765a6aa5671"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdbf7bf65-cec3-46cc-8d40-d46057bd339b"},{"ref":"EID75a56caa-b0b7-48ee-87df-6c3738889060"},{"ref":"EID4cc15129-02fe-4e87-a59c-2c3130e64cc7"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:10Z","duration":152,"status":"PASSED"},{"id":"EID6ee21314-0175-1000-c8dd-214cda1180d6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21389-0175-1000-2304-a7d5f19ba3fa","parent":{"ref":"EID6ee21314-0175-1000-c8dd-214cda1180d6"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee21389-0175-1000-d90f-8e3326d009fb","parent":{"ref":"EID6ee21314-0175-1000-c8dd-214cda1180d6"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee21389-0175-1000-068d-cc1f8538c68f","parent":{"ref":"EID6ee21314-0175-1000-c8dd-214cda1180d6"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID33b0d99d-fe3f-4dd4-9d4b-142e2e0197bc"},{"ref":"EID75491de7-74b7-4381-9f57-3670b2a760a1"},{"ref":"EID47537213-7359-4a96-9608-206a8d371745"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:11Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6ee20fca-0175-1000-4d06-da5eb7def0d8"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:05:10Z","duration":668,"status":"PASSED"},{"id":"EID6ee2138a-0175-1000-a72d-d3f3c82192f5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee213df-0175-1000-145f-b37394db39d8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee2138a-0175-1000-a72d-d3f3c82192f5"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:05:11Z","duration":13,"status":"FAILED"},{"id":"EID6ee213ec-0175-1000-8a62-0410d9a07c56","parent":{"ref":"EID6ee2138a-0175-1000-a72d-d3f3c82192f5"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee213ec-0175-1000-c226-a0be6fa05994","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee2138a-0175-1000-a72d-d3f3c82192f5"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"FAILED"},{"id":"EID6ee213ec-0175-1000-b18d-8e6f8eb6c7f2","parent":{"ref":"EID6ee2138a-0175-1000-a72d-d3f3c82192f5"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f74d882-c13f-459f-9ce6-4a78cabb36ce"},{"ref":"EID7daf535b-6cfa-4a0d-bf8c-f1a13a5b8735"},{"ref":"EID068789b1-0db5-4ab6-a868-17d452a55124"}]},"parent":{"ref":"EID6ee20fca-0175-1000-4d06-da5eb7def0d8"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:05:11Z","duration":27,"status":"FAILED"}]},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:05:10Z","duration":1058,"status":"FAILED"},{"id":"EID6ee213ec-0175-1000-2389-9f25b8e31f6f","testStepResults":{"TestStepResult":{"id":"EID6ee213ec-0175-1000-fe51-8ca83cdd4d77","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21455-0175-1000-343b-91d1898a655e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee213ec-0175-1000-fe51-8ca83cdd4d77"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:05:11Z","duration":12,"status":"FAILED"},{"id":"EID6ee21461-0175-1000-5358-1a67d70c78d8","parent":{"ref":"EID6ee213ec-0175-1000-fe51-8ca83cdd4d77"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee21461-0175-1000-412e-34c254b3562f","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee213ec-0175-1000-fe51-8ca83cdd4d77"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"FAILED"},{"id":"EID6ee21461-0175-1000-d5c2-d5cf36846608","parent":{"ref":"EID6ee213ec-0175-1000-fe51-8ca83cdd4d77"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9aaa7091-d759-42e6-a069-7ca9370ee6cc"},{"ref":"EIDec9ff7e5-219e-4b91-8152-380a1003cb49"},{"ref":"EID5a9a618f-e4e0-44b9-9b94-1ff9d75747ab"}]},"parent":{"ref":"EID6ee213ec-0175-1000-2389-9f25b8e31f6f"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:05:11Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6ee2076b-0175-1000-4741-7bbe68bc6e9a"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:05:11Z","duration":117,"status":"FAILED"}]},"parent":{"ref":"EIDcb1ff33f-d153-4c51-87be-90692114c163"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:05:08Z","duration":3318,"status":"FAILED"},{"id":"EID6ee21461-0175-1000-3f68-0745cc5a78ee","testCaseResults":{"TestCaseResult":[{"id":"EID6ee21462-0175-1000-6190-90fb14147505","testStepResults":{"TestStepResult":{"id":"EID6ee21462-0175-1000-2a29-e9b03cff8e8a","parent":{"ref":"EID6ee21462-0175-1000-6190-90fb14147505"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee21462-0175-1000-52b4-08e072799a17","testStepResults":{"TestStepResult":{"id":"EID6ee21462-0175-1000-ffe4-624ac6f725b9","parent":{"ref":"EID6ee21462-0175-1000-52b4-08e072799a17"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee21462-0175-1000-45de-b55a161aee59","testStepResults":{"TestStepResult":{"id":"EID6ee21462-0175-1000-d907-bd8ad9e70918","parent":{"ref":"EID6ee21462-0175-1000-45de-b55a161aee59"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:05:11Z","duration":11,"status":"SKIPPED"},{"id":"EID6ee2146d-0175-1000-38a0-0683a4e04478","testStepResults":{"TestStepResult":{"id":"EID6ee2146d-0175-1000-5cb9-7d853f18eb95","parent":{"ref":"EID6ee2146d-0175-1000-38a0-0683a4e04478"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee2146d-0175-1000-d9aa-a34a1256c5ba","testStepResults":{"TestStepResult":{"id":"EID6ee2146d-0175-1000-e92c-cca09420f710","parent":{"ref":"EID6ee2146d-0175-1000-d9aa-a34a1256c5ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee2146d-0175-1000-1d16-7d3c3d13db42","testStepResults":{"TestStepResult":{"id":"EID6ee2146d-0175-1000-7702-e78cff0c2140","parent":{"ref":"EID6ee2146d-0175-1000-1d16-7d3c3d13db42"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee2146e-0175-1000-8e8f-cda4ca86e791","testStepResults":{"TestStepResult":{"id":"EID6ee2146e-0175-1000-1bf3-b273ea246ad3","parent":{"ref":"EID6ee2146e-0175-1000-8e8f-cda4ca86e791"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6ee21461-0175-1000-3f68-0745cc5a78ee"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EIDcb1ff33f-d153-4c51-87be-90692114c163"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:05:11Z","duration":13,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID9aaa7091-d759-42e6-a069-7ca9370ee6cc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDc1bd1618-7634-4f96-bcc9-f885c2495c55","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID47ebe71a-ccc9-49a2-9969-b5ad1092f035","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID47ebe71a-ccc9-49a2-9969-b5ad1092f035"}},{"type":"Error","id":"EID31660415-a0f8-4603-832d-e3fe3206c1fd","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID31660415-a0f8-4603-832d-e3fe3206c1fd"}},{"type":"ServiceResponse","id":"EID3bfcaa20-7815-4961-a254-66cdfc3a17b6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID3bfcaa20-7815-4961-a254-66cdfc3a17b6"}},{"type":"Message","id":"EID693fc3ac-2151-4831-ad56-7219d2d3fae9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID693fc3ac-2151-4831-ad56-7219d2d3fae9"}},{"type":"Message","id":"EID04659994-f61a-4aea-a47e-0e89bf14c9ed","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID04659994-f61a-4aea-a47e-0e89bf14c9ed"}},{"type":"ServiceEndpoint","id":"EIDdbf7bf65-cec3-46cc-8d40-d46057bd339b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID93f2f400-3ec5-4d1b-9fc0-1b544c392ffb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID87237730-61bb-4e94-8e15-7676d46fd97f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbbf90dde-9855-4538-881e-d4f2c2b9f215","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDba67e00e-4121-4b08-bca6-7e1ce3a1b8d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3fa18dc8-24d5-484d-941f-3d1fc4d11797","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID3fa18dc8-24d5-484d-941f-3d1fc4d11797"}},{"type":"ServiceEndpoint","id":"EID46eeea6c-c0f5-499f-9d47-043f6cb64eaf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID74040e3e-4c3c-4286-809c-cda868fb57b1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID6d9c9c23-63c0-451b-91de-faec41de595b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID6d9c9c23-63c0-451b-91de-faec41de595b"}},{"type":"GetParameter","id":"EID5e22fcbb-4e03-492f-be7d-ef08f11963bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID47537213-7359-4a96-9608-206a8d371745","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID37d8bea3-6027-4692-aafe-ee8b8c77107e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID37d8bea3-6027-4692-aafe-ee8b8c77107e"}},{"type":"ServiceEndpoint","id":"EID83c6eec7-d79f-40fa-9fae-8dc6b0d082ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe729bd69-369c-4b93-be12-9afcdf24201e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDe729bd69-369c-4b93-be12-9afcdf24201e"}},{"type":"ServiceEndpoint","id":"EID32245599-981d-413f-bdae-46254bba52dc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0ceb63f9-1933-40fd-943e-bb1cdb364474","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID571577b4-82ba-4dc8-8fa7-9f80d38a8c9a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID571577b4-82ba-4dc8-8fa7-9f80d38a8c9a"}},{"type":"Error","id":"EIDffc07ef5-9842-467c-b155-2a0b42536d7a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDffc07ef5-9842-467c-b155-2a0b42536d7a"}},{"type":"GetParameter","id":"EIDeb290289-e14e-42df-a266-182387075c6b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2d83ca05-5631-4b6b-a430-f2782bae50ee","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6514624e-e338-428c-985d-dcf9c1b5bca3","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID6514624e-e338-428c-985d-dcf9c1b5bca3"}},{"type":"Message","id":"EIDf084bdd7-66c9-4e17-ad37-983c13709098","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDf084bdd7-66c9-4e17-ad37-983c13709098"}},{"type":"ServiceEndpoint","id":"EIDf5a273c4-e4a5-437e-96ee-2d4034d9f75c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDea081abb-2ea9-4903-bcfa-5b6578de02fd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5c411084-9689-4ea2-84f1-b813794f1365","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7cd4a121-c21b-438b-b656-31e7bfc01d28","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDe3c95754-2986-4492-8a3f-dabf0b658cc5","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDe3c95754-2986-4492-8a3f-dabf0b658cc5"}},{"type":"GetParameter","id":"EIDe9989602-fefd-48f9-8bd4-0a0eb9c296cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID6ebf7e3d-f366-4a99-addc-6f5bc5599d8b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID6ebf7e3d-f366-4a99-addc-6f5bc5599d8b"}},{"type":"GetParameter","id":"EID453f863a-8a7a-4345-9fb1-dfceba30a469","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID949ca88d-6794-4e9a-82c8-841fe26bcd2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID949ca88d-6794-4e9a-82c8-841fe26bcd2f"}},{"type":"Message","id":"EID95ee2b4e-3508-49c7-9e25-da9133a9d33f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID95ee2b4e-3508-49c7-9e25-da9133a9d33f"}},{"type":"ServiceResponse","id":"EID3fa79c8c-d544-44a1-a238-f157db2bd91f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID3fa79c8c-d544-44a1-a238-f157db2bd91f"}},{"type":"Message","id":"EID39e258d3-d683-4965-9185-9dd50d176e20","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID39e258d3-d683-4965-9185-9dd50d176e20"}},{"type":"ServiceEndpoint","id":"EIDadf93fc9-ebfd-4da4-a0a7-c06265d5bddd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID233989d3-7293-4788-b41b-3d37f0599d7b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID233989d3-7293-4788-b41b-3d37f0599d7b"}},{"type":"GetParameter","id":"EID8451c208-267f-4549-85c9-fb4fc95d4afb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfb688a22-87d1-48f6-b890-8670b2d4276d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDfb688a22-87d1-48f6-b890-8670b2d4276d"}},{"type":"ServiceEndpoint","id":"EID5f362336-386c-46ca-9f9e-b6b2bbb879d8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf01c7543-9efa-4828-8133-1043d474abc0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDf01c7543-9efa-4828-8133-1043d474abc0"}},{"type":"Error","id":"EID0c4880c1-623b-4fd1-afc6-40905223a19f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID0c4880c1-623b-4fd1-afc6-40905223a19f"}},{"type":"GetParameter","id":"EID46d872f0-ecdd-447e-ba1f-2f6266217493","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa3bc0bf7-7348-41e1-935f-5e33e59aa432","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDce423365-6582-4c76-ab01-431a5b6b54e1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDce423365-6582-4c76-ab01-431a5b6b54e1"}},{"type":"Error","id":"EIDd82ef0a0-7ece-4b70-9fae-70da3d2c5e06","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDd82ef0a0-7ece-4b70-9fae-70da3d2c5e06"}},{"type":"ServiceEndpoint","id":"EIDfd57f304-67aa-4e4c-8965-fe0912d7af52","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID068789b1-0db5-4ab6-a868-17d452a55124","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID6552ad9e-8bb1-4ea5-95ea-14104de91e41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5a9a618f-e4e0-44b9-9b94-1ff9d75747ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID5c082ff0-24d3-4afe-8724-da0ab14118ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID222589c0-c7a4-430f-a6b9-68c5ba5c85c1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID222589c0-c7a4-430f-a6b9-68c5ba5c85c1"}},{"type":"ServiceEndpoint","id":"EIDe010b323-837a-4312-b7b7-d9e312c45762","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf0403790-390a-429b-ac9a-5269b3060885","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID4cc15129-02fe-4e87-a59c-2c3130e64cc7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID5e4d2fd3-c956-45dc-8e55-bae6879293f7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID5e4d2fd3-c956-45dc-8e55-bae6879293f7"}},{"type":"GetParameter","id":"EID981a29f8-1a77-400c-80c6-3ab53656819e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID75491de7-74b7-4381-9f57-3670b2a760a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID75491de7-74b7-4381-9f57-3670b2a760a1"}},{"type":"ServiceResponse","id":"EID6cbc6df1-028e-44e5-847b-74eefce4d1ac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID6cbc6df1-028e-44e5-847b-74eefce4d1ac"}},{"type":"ServiceEndpoint","id":"EID33b0d99d-fe3f-4dd4-9d4b-142e2e0197bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EIDed08693e-a990-402e-a2f6-4d88bf41a6bf","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDed08693e-a990-402e-a2f6-4d88bf41a6bf"}},{"type":"Message","id":"EID136a323d-3fa4-4a49-b929-5135781bdae8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID136a323d-3fa4-4a49-b929-5135781bdae8"}},{"type":"GetParameter","id":"EIDb3f89487-b6c2-4199-8353-3cba750bc6ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDe222dffa-eb6d-4d78-b417-bae5ed1e229f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3e3afb6c-fce0-49b7-b21c-77d1316219a9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID8bed56c6-6e96-4bed-933e-696f6839671b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID8bed56c6-6e96-4bed-933e-696f6839671b"}},{"type":"ServiceEndpoint","id":"EIDebacd5b2-526a-4efb-b366-fb8c8890b2b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf7be79cf-4697-4216-a8ba-8e6019248cb3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID68c2c118-9cb0-4bfb-820f-7c40d662d20b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID68c2c118-9cb0-4bfb-820f-7c40d662d20b"}},{"type":"ServiceResponse","id":"EID5905f9ae-0c8c-4fe4-8fe7-03a5cef6726d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID5905f9ae-0c8c-4fe4-8fe7-03a5cef6726d"}},{"type":"Message","id":"EID1b9e92a1-166d-4b90-a422-d10679f0f7bd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID1b9e92a1-166d-4b90-a422-d10679f0f7bd"}},{"type":"Error","id":"EIDd6ac0711-42d9-4a7f-ace8-7b961c5144bc","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDd6ac0711-42d9-4a7f-ace8-7b961c5144bc"}},{"type":"ServiceResponse","id":"EID40dc6011-2a2f-411b-b108-cdb9a574d1b8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID40dc6011-2a2f-411b-b108-cdb9a574d1b8"}},{"type":"ServiceResponse","id":"EID154f80db-3e0b-4de0-976f-c6b4b0c59c0c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID154f80db-3e0b-4de0-976f-c6b4b0c59c0c"}},{"type":"ServiceEndpoint","id":"EID476d0da6-957a-4374-8ef3-4d90d9acd60c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID34404964-b553-4b0e-95c8-c9498d0bf6f4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID34404964-b553-4b0e-95c8-c9498d0bf6f4"}},{"type":"GetParameter","id":"EID41d660bb-d11d-48fe-8957-80dd5f31cfe9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID5daaa41c-997c-4c9b-b860-1d75a1a6cbee","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID5daaa41c-997c-4c9b-b860-1d75a1a6cbee"}},{"type":"ServiceResponse","id":"EID0e2065be-8a6c-4566-b9fc-8f8451644762","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID0e2065be-8a6c-4566-b9fc-8f8451644762"}},{"type":"Error","id":"EID44198b6d-51ab-4653-ba63-49d346912496","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID44198b6d-51ab-4653-ba63-49d346912496"}},{"type":"GetParameter","id":"EIDf0ee1025-4d30-4aef-b803-01b8fb1f51e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID33a203ee-913f-4f87-9eb5-26ffeb9a0b1f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID56c3c40d-f151-4e7a-b2e4-fce3a5f1b480","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID56c3c40d-f151-4e7a-b2e4-fce3a5f1b480"}},{"type":"Message","id":"EID3592f796-63a4-4a83-946f-f8497d74d220","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID3592f796-63a4-4a83-946f-f8497d74d220"}},{"type":"Error","id":"EID332cc37a-8a20-4983-b86e-d7e32560542c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID332cc37a-8a20-4983-b86e-d7e32560542c"}},{"type":"GetParameter","id":"EID226ee917-9398-4159-9d89-71a5e4d4a08a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID20b77cdb-6add-42d6-9361-9a8fc5dc9f84","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID20b77cdb-6add-42d6-9361-9a8fc5dc9f84"}},{"type":"ServiceEndpoint","id":"EID099969fb-87a6-4b5d-8f8d-93f73facbfb1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc284696a-7ccb-433b-aa02-31badf2e1b5b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDc284696a-7ccb-433b-aa02-31badf2e1b5b"}},{"type":"ServiceResponse","id":"EID1884dc8d-81fc-4924-aac5-2e2247bc27a5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID1884dc8d-81fc-4924-aac5-2e2247bc27a5"}},{"type":"GetParameter","id":"EIDcdc27728-7502-4ecd-a7b1-c8ce4744604a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID02711bf5-814d-4f10-8868-1b3cebcf85c6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID02711bf5-814d-4f10-8868-1b3cebcf85c6"}},{"type":"GetParameter","id":"EID6d993672-0cd1-4cb3-95f0-76dad84a0b86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDa98a1b4c-909c-4692-9205-74ee5ff619e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe56a099b-3938-4b0d-a3e1-1fe9751f678e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDb6f0505d-66e6-4fae-93fb-26e247557e4b","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDb6f0505d-66e6-4fae-93fb-26e247557e4b"}},{"type":"ServiceResponse","id":"EIDc04a4b5c-217e-4872-b06b-89daa9bdb092","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDc04a4b5c-217e-4872-b06b-89daa9bdb092"}},{"type":"GetParameter","id":"EID54a07d2d-f946-4b20-aea7-86bf5bdf6364","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID5d785d74-36e3-4cfd-a809-aac701258cb7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc7fa2ac9-9011-4f31-97c8-0a3fd3ecbb9a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDc7fa2ac9-9011-4f31-97c8-0a3fd3ecbb9a"}},{"type":"Message","id":"EIDdb32f552-4236-42e1-b0a7-fbe895e693cb","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDdb32f552-4236-42e1-b0a7-fbe895e693cb"}},{"type":"GetParameter","id":"EID3b099922-9ecf-42b4-bc70-a39892f7cd0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID3766c8cd-5f39-49ad-9da9-0ca2be40c4e7","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID3766c8cd-5f39-49ad-9da9-0ca2be40c4e7"}},{"type":"GetParameter","id":"EIDf1d35738-ed37-4f90-b4de-f552a83c79fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID322a6d8c-924f-405b-bfc1-9b7f77823f41","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID322a6d8c-924f-405b-bfc1-9b7f77823f41"}},{"type":"ServiceResponse","id":"EID50398624-be8d-49aa-bca2-be6224e041fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID50398624-be8d-49aa-bca2-be6224e041fe"}},{"type":"Error","id":"EIDba3a9af2-2d60-438f-ab6e-1f6ae84577d6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDba3a9af2-2d60-438f-ab6e-1f6ae84577d6"}},{"type":"Error","id":"EID53b7c708-0f61-4e71-98bb-229432697911","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID53b7c708-0f61-4e71-98bb-229432697911"}},{"type":"Message","id":"EID637a72ad-ed02-4dce-9b3a-d227e6a56d13","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID637a72ad-ed02-4dce-9b3a-d227e6a56d13"}},{"type":"ServiceResponse","id":"EID92fa2798-889c-43ea-b4f6-8e7acf4e971e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID92fa2798-889c-43ea-b4f6-8e7acf4e971e"}},{"type":"ServiceEndpoint","id":"EID93d524dd-6f32-4914-929e-2603a225a262","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID7daf535b-6cfa-4a0d-bf8c-f1a13a5b8735","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID7daf535b-6cfa-4a0d-bf8c-f1a13a5b8735"}},{"type":"Message","id":"EID32ded535-26fd-4979-8022-30b3bb8e6432","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID32ded535-26fd-4979-8022-30b3bb8e6432"}},{"type":"Error","id":"EID8819c9d2-0337-4920-b8bc-804ed070608f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID8819c9d2-0337-4920-b8bc-804ed070608f"}},{"type":"GetParameter","id":"EID7914be53-5ec3-42e3-a79f-8c12ea796dd8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDff6e2c4b-0b89-405a-8be6-c43bb5b51cde","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EID98c5a7d8-1c5e-40fd-9289-35168c77c5de","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID98c5a7d8-1c5e-40fd-9289-35168c77c5de"}},{"type":"Message","id":"EID987c9d43-47af-4638-a2c3-da433a119196","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID987c9d43-47af-4638-a2c3-da433a119196"}},{"type":"Message","id":"EID532c742f-265a-4b85-805d-d952e5fbb081","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID532c742f-265a-4b85-805d-d952e5fbb081"}},{"type":"Message","id":"EID18facfac-22db-45bd-9d0d-d45fab65f7b5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID18facfac-22db-45bd-9d0d-d45fab65f7b5"}},{"type":"Message","id":"EID96f0367e-7fb0-4293-8cd8-15d373e26fb4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID96f0367e-7fb0-4293-8cd8-15d373e26fb4"}},{"type":"ServiceEndpoint","id":"EID3acd684c-550c-49ef-b194-a3daaa31bdb5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID1dba24c6-0a74-4d0b-a79d-3bd3be59ba1e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID1dba24c6-0a74-4d0b-a79d-3bd3be59ba1e"}},{"type":"GetParameter","id":"EID3f887b19-ec83-421c-8d4b-e45ffe2eac27","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID872d9fb9-5b79-4b07-b553-dd366795c499","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDfca936ba-8ee8-491e-a9c5-016a93aa7a5a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDfca936ba-8ee8-491e-a9c5-016a93aa7a5a"}},{"type":"ServiceResponse","id":"EID1c2c0e03-b506-4252-b9a8-8a39707942a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID1c2c0e03-b506-4252-b9a8-8a39707942a4"}},{"type":"GetParameter","id":"EIDf785e132-3ba3-4ce7-98e3-38f0b17ac7f8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfae967a9-0e74-49e0-95f8-b4a405763a9b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5f74d882-c13f-459f-9ce6-4a78cabb36ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDec9ff7e5-219e-4b91-8152-380a1003cb49","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDec9ff7e5-219e-4b91-8152-380a1003cb49"}},{"type":"Error","id":"EIDe76cfc3f-63fc-45cd-a8c4-321d2117fa07","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDe76cfc3f-63fc-45cd-a8c4-321d2117fa07"}},{"type":"ServiceResponse","id":"EIDb46fc374-be30-45db-9baf-43c82a2dc635","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDb46fc374-be30-45db-9baf-43c82a2dc635"}},{"type":"Error","id":"EID66371256-b380-4d22-bbbc-b36080015539","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID66371256-b380-4d22-bbbc-b36080015539"}},{"type":"ServiceEndpoint","id":"EIDb2ff38d3-9343-4d11-ac16-de73fc94dae3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID1034655f-7f2d-466c-a79f-5355070f1d02","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID20438d9f-a3c3-4f6f-b1f7-d1ba0f5ad9ba","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID20438d9f-a3c3-4f6f-b1f7-d1ba0f5ad9ba"}},{"type":"ServiceEndpoint","id":"EID47e2c346-2b71-44f8-9441-b447935ad439","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID10bd1179-fd5a-43da-bf15-d17f3217cb3d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID10bd1179-fd5a-43da-bf15-d17f3217cb3d"}},{"type":"ServiceResponse","id":"EID86ce4358-667c-4464-94a5-b231f4234657","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID86ce4358-667c-4464-94a5-b231f4234657"}},{"type":"ServiceEndpoint","id":"EID486bd3b9-2861-43c9-9005-91c3b2bf7298","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID27beb37f-b71b-47dc-a782-fd03b3280ee2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDa4762487-1715-4ca6-b042-9c22ff6630e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcedea490-b8a0-4fcd-b152-93ab6d8ca159","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID75a56caa-b0b7-48ee-87df-6c3738889060","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID75a56caa-b0b7-48ee-87df-6c3738889060"}},{"type":"ServiceResponse","id":"EID8169f841-e9a6-48f0-9c32-f6b1e098dec7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID8169f841-e9a6-48f0-9c32-f6b1e098dec7"}},{"type":"ServiceResponse","id":"EIDa9e3aa91-ce21-4d9f-871e-773f78beaac9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDa9e3aa91-ce21-4d9f-871e-773f78beaac9"}},{"type":"ServiceEndpoint","id":"EID811d97bc-391e-440e-b301-5a18614f0597","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6fa7ceba-8fee-4b2f-9a29-54a9d44bb34b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID1f6415bd-c61b-47c1-a483-e75b9c8b505f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EID1f6415bd-c61b-47c1-a483-e75b9c8b505f"}},{"type":"GetParameter","id":"EID53a7c74a-b44b-42ef-a651-0eaf1aa5b28b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb41eb495-fae0-4caa-81bc-6d48f5c52b42","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDdeb4269a-f60e-4977-be50-c00ebb966a80","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9f2d58a8-d8ba-4452-b18d-e82bca352d88","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDc9c37262-0af9-4e8b-8233-cada860022a2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcb1ff33f-d153-4c51-87be-90692114c163/Attachments/EIDc9c37262-0af9-4e8b-8233-cada860022a2"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:05:00Z","duration":11440,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.006
11:05:23.811 [print] EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:05:23.812 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:05:23.812 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:05:23.812 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:05:23.812 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:05:23.813 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f8b3e3a5-6aa7-4354-8d77-96db4a6dfc37.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:05:23.813 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf8b3e3a5-6aa7-4354-8d77-96db4a6dfc37/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.039
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.018
* def a = embedUrl ("../../" + jsonPath , status ) 0.001
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.001
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.004
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:05:23.882 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:05:23.883 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.008
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.002
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.001
50.139
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:08:10.948 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.079
11:08:10.948 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:08:16.012 response time in milliseconds: 4309.51
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:08:15 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:08:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e.json","testRuns":{"TestRun":{"id":"EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:13.092Z","testTasks":{"TestTask":{"id":"EID082333af-793d-413e-b8e4-84767dfc8fc0","parent":{"ref":"EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdbf1f64f-5cc4-49cd-8fd8-4004cdfcca1f"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdbf1f64f-5cc4-49cd-8fd8-4004cdfcca1f","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:11.391Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:12.705Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.006
11:08:16.034 [print] EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:08:16.034 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:08:16.035 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:08:16.035 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:08:16.035 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.011
11:08:16.047 [print] statuspath TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e
* print 'progresspath ', progresspath 0.000
11:08:16.048 [print] progresspath  TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
Given path progresspath 0.000
When method GET 0.524
11:08:16.048 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:16.572 response time in milliseconds: 522.72
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:08:16 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:08:16.572 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)",
    "28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:08:13 - Preparing 1 Test Task:",
    "28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)",
    "28.10.2020 11:08:13 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:08:13 -  with parameters: ",
    "28.10.2020 11:08:13 - etf.testcases = *",
    "28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:08:13 - Setting state to CREATED",
    "28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 38.009
11:08:16.573 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:17.086 response time in milliseconds: 512.82
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:08:17 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING"]}

11:08:17.087 retry condition not satisfied: response.val == response.max
11:08:17.087 sleeping before retry #1
11:08:22.088 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:22.612 response time in milliseconds: 522.83
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:08:22 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:17 - Starting TestRun.6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e at 2020-10-28T11:08:19Z","28.10.2020 11:08:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:19 - Project Properties: ","28.10.2020 11:08:19 - etf.testcases - * ","28.10.2020 11:08:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:19 - username -  ","28.10.2020 11:08:19 - authUser -  ","28.10.2020 11:08:19 - authMethod - basic ","28.10.2020 11:08:19 - TestRunTask initialized"]}

11:08:22.612 retry condition not satisfied: response.val == response.max
11:08:22.612 sleeping before retry #2
11:08:27.613 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:29.879 response time in milliseconds: 2265.46
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:08:29 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"85","max":"86","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:17 - Starting TestRun.6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e at 2020-10-28T11:08:19Z","28.10.2020 11:08:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:19 - Project Properties: ","28.10.2020 11:08:19 - etf.testcases - * ","28.10.2020 11:08:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:19 - username -  ","28.10.2020 11:08:19 - authUser -  ","28.10.2020 11:08:19 - authMethod - basic ","28.10.2020 11:08:19 - TestRunTask initialized","28.10.2020 11:08:22 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:22 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:24 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:08:29.880 retry condition not satisfied: response.val == response.max
11:08:29.880 sleeping before retry #3
11:08:34.881 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:35.389 response time in milliseconds: 507.71
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:08:35 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:17 - Starting TestRun.6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e at 2020-10-28T11:08:19Z","28.10.2020 11:08:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:19 - Project Properties: ","28.10.2020 11:08:19 - etf.testcases - * ","28.10.2020 11:08:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:19 - username -  ","28.10.2020 11:08:19 - authUser -  ","28.10.2020 11:08:19 - authMethod - basic ","28.10.2020 11:08:19 - TestRunTask initialized","28.10.2020 11:08:22 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:22 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:24 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:33 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:08:35.390 retry condition not satisfied: response.val == response.max
11:08:35.390 sleeping before retry #4
11:08:40.391 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:42.051 response time in milliseconds: 1552.37
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:08:41 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:17 - Starting TestRun.6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e at 2020-10-28T11:08:19Z","28.10.2020 11:08:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:19 - Project Properties: ","28.10.2020 11:08:19 - etf.testcases - * ","28.10.2020 11:08:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:19 - username -  ","28.10.2020 11:08:19 - authUser -  ","28.10.2020 11:08:19 - authMethod - basic ","28.10.2020 11:08:19 - TestRunTask initialized","28.10.2020 11:08:22 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:22 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:24 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:33 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:08:42.051 retry condition not satisfied: response.val == response.max
11:08:42.051 sleeping before retry #5
11:08:47.052 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:47.557 response time in milliseconds: 504.07
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:08:47 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:08:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:13 UTC 2020)","28.10.2020 11:08:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:13 - Preparing 1 Test Task:","28.10.2020 11:08:13 -  TestTask 1 (082333af-793d-413e-b8e4-84767dfc8fc0)","28.10.2020 11:08:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:13 -  with parameters: ","28.10.2020 11:08:13 - etf.testcases = *","28.10.2020 11:08:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:13 - Setting state to CREATED","28.10.2020 11:08:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:17 - Starting TestRun.6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e at 2020-10-28T11:08:19Z","28.10.2020 11:08:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:19 - Project Properties: ","28.10.2020 11:08:19 - etf.testcases - * ","28.10.2020 11:08:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:19 - username -  ","28.10.2020 11:08:19 - authUser -  ","28.10.2020 11:08:19 - authMethod - basic ","28.10.2020 11:08:19 - TestRunTask initialized","28.10.2020 11:08:22 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:22 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:24 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:08:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:08:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:31 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:33 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:08:47.561 retry condition not satisfied: response.val == response.max
11:08:47.561 sleeping before retry #6
11:08:52.562 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:54.581 response time in milliseconds: 2017.70
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:08:54 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:08:54.581 retry condition satisfied
* print response 0.000
11:08:54.581 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 6.475
11:08:54.582 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:01.045 response time in milliseconds: 5495.75
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Cache-Control: public, max-age=120
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:09:00 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Last-Modified: Wed, 28 Oct 2020 11:08:54 GMT
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e.json","testRuns":{"TestRun":{"id":"EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:13.092Z","testTasks":{"TestTask":{"id":"EID082333af-793d-413e-b8e4-84767dfc8fc0","parent":{"ref":"EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdbf1f64f-5cc4-49cd-8fd8-4004cdfcca1f"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID8a94d51a-deb2-4732-8f5a-45330d3ce573"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdbf1f64f-5cc4-49cd-8fd8-4004cdfcca1f","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:11.391Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:12.705Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID8a94d51a-deb2-4732-8f5a-45330d3ce573","testObject":{"ref":"EIDdbf1f64f-5cc4-49cd-8fd8-4004cdfcca1f"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee4f278-0175-1000-f865-8a29c088e620","testCaseResults":{"TestCaseResult":[{"id":"EID6ee4f278-0175-1000-ab82-cb7878bc8ff7","testStepResults":{"TestStepResult":[{"id":"EID6ee4f27d-0175-1000-16c4-19b2ea307a3f","parent":{"ref":"EID6ee4f278-0175-1000-ab82-cb7878bc8ff7"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:08:19Z","duration":12,"status":"PASSED"},{"id":"EID6ee4f28a-0175-1000-c7a1-68a5c3cfb438","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f335-0175-1000-f2e1-06345df4a9ca","parent":{"ref":"EID6ee4f28a-0175-1000-c7a1-68a5c3cfb438"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f335-0175-1000-9fc6-b291fc2cd35f","parent":{"ref":"EID6ee4f28a-0175-1000-c7a1-68a5c3cfb438"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f335-0175-1000-1b12-c5c02466706f","parent":{"ref":"EID6ee4f28a-0175-1000-c7a1-68a5c3cfb438"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f335-0175-1000-ab3b-4ead87e764fc","parent":{"ref":"EID6ee4f28a-0175-1000-c7a1-68a5c3cfb438"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID736f7a83-2cc0-41e0-abdb-67ca761e15cd"},{"ref":"EID190693d4-53ee-443a-a947-64d53ec43239"},{"ref":"EIDc9164c13-e3e0-4f29-a0c2-c28ac3783945"}]},"parent":{"ref":"EID6ee4f278-0175-1000-ab82-cb7878bc8ff7"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:08:19Z","duration":62,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f278-0175-1000-f865-8a29c088e620"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:08:19Z","duration":189,"status":"PASSED"},{"id":"EID6ee4f336-0175-1000-bc8d-32aaf300ff8f","testStepResults":{"TestStepResult":{"id":"EID6ee4f33e-0175-1000-5dd8-98197433fc77","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f3d6-0175-1000-808f-657120a25c56","parent":{"ref":"EID6ee4f33e-0175-1000-5dd8-98197433fc77"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:08:19Z","duration":1,"status":"PASSED"},{"id":"EID6ee4f3d7-0175-1000-afd9-e621c88de743","parent":{"ref":"EID6ee4f33e-0175-1000-5dd8-98197433fc77"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f3d7-0175-1000-af7a-c8d51ba74b0c","parent":{"ref":"EID6ee4f33e-0175-1000-5dd8-98197433fc77"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf5284abc-e754-4f53-a161-11ccf8f87c3c"},{"ref":"EIDc2ddccc2-2d17-4d25-9ec8-ad286bbf98bd"},{"ref":"EIDc2bcf4fc-6724-4f21-ac0d-6e7889581038"}]},"parent":{"ref":"EID6ee4f336-0175-1000-bc8d-32aaf300ff8f"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:08:19Z","duration":45,"status":"PASSED"}},"parent":{"ref":"EID6ee4f278-0175-1000-f865-8a29c088e620"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:08:19Z","duration":161,"status":"PASSED"}]},"parent":{"ref":"EID8a94d51a-deb2-4732-8f5a-45330d3ce573"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:08:19Z","duration":351,"status":"PASSED"},{"id":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54","testCaseResults":{"TestCaseResult":[{"id":"EID6ee4f3d7-0175-1000-4804-cc4d1c8a1baa","testStepResults":{"TestStepResult":[{"id":"EID6ee4f3d7-0175-1000-1e7d-4319221042ce","parent":{"ref":"EID6ee4f3d7-0175-1000-4804-cc4d1c8a1baa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:08:19Z","duration":45,"status":"PASSED"},{"id":"EID6ee4f3d7-0175-1000-1fe6-d89ce5c92bb0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f46c-0175-1000-e00b-3bb984458dfe","parent":{"ref":"EID6ee4f3d7-0175-1000-1fe6-d89ce5c92bb0"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f46c-0175-1000-a386-6ac0e8d33135","parent":{"ref":"EID6ee4f3d7-0175-1000-1fe6-d89ce5c92bb0"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f46c-0175-1000-728e-bb2b1618fc8d","parent":{"ref":"EID6ee4f3d7-0175-1000-1fe6-d89ce5c92bb0"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f46c-0175-1000-8d49-790e9d04a33f","parent":{"ref":"EID6ee4f3d7-0175-1000-1fe6-d89ce5c92bb0"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f46c-0175-1000-b716-a8284a2d14f2","parent":{"ref":"EID6ee4f3d7-0175-1000-1fe6-d89ce5c92bb0"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa6688671-2d81-4e14-a3af-f77c37ebc02a"},{"ref":"EID57217e3a-16f6-484a-886a-455a0f776f1b"},{"ref":"EIDb2b9fb1b-a176-49c2-93bf-75a075e055aa"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-4804-cc4d1c8a1baa"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:08:19Z","duration":34,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:08:19Z","duration":158,"status":"PASSED"},{"id":"EID6ee4f475-0175-1000-81e9-869d4aa2d354","testStepResults":{"TestStepResult":[{"id":"EID6ee4f475-0175-1000-7ace-11f62ca70928","attachments":{"attachment":[{"ref":"EID417c55ee-0fd8-47b8-a0f4-44a7a7e69993"},{"ref":"EIDe16610b2-c5df-40e2-b216-90e33fbb4c86"}]},"parent":{"ref":"EID6ee4f475-0175-1000-81e9-869d4aa2d354"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:08:19Z","duration":69,"status":"PASSED"},{"id":"EID6ee4f4e0-0175-1000-175a-08dee5768c50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f609-0175-1000-b8f4-48a5b64e23a1","parent":{"ref":"EID6ee4f4e0-0175-1000-175a-08dee5768c50"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f609-0175-1000-7dfd-0394ca714a79","parent":{"ref":"EID6ee4f4e0-0175-1000-175a-08dee5768c50"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f609-0175-1000-d507-b59a21008f79","parent":{"ref":"EID6ee4f4e0-0175-1000-175a-08dee5768c50"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f609-0175-1000-0a2a-fee296e560d0","parent":{"ref":"EID6ee4f4e0-0175-1000-175a-08dee5768c50"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfd6119c3-16a7-4766-94e8-641b23305d8b"},{"ref":"EIDe0221b76-358f-42cb-9196-021999801d7c"},{"ref":"EID63c18c7f-d16c-4624-a567-02bae9db7a6a"}]},"parent":{"ref":"EID6ee4f475-0175-1000-81e9-869d4aa2d354"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:08:20Z","duration":101,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:08:19Z","duration":414,"status":"PASSED"},{"id":"EID6ee4f617-0175-1000-f0a7-38486eafefef","testStepResults":{"TestStepResult":[{"id":"EID6ee4f617-0175-1000-d4c1-bbc0bf8a9fa9","attachments":{"attachment":[{"ref":"EID7ae95a25-5531-4c31-980e-86dd083b8ff2"},{"ref":"EID0049f189-edf1-49b0-935c-6939072aaf12"}]},"parent":{"ref":"EID6ee4f617-0175-1000-f0a7-38486eafefef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:08:20Z","duration":147,"status":"PASSED"},{"id":"EID6ee4f70d-0175-1000-4ea6-0b3e104b7b10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f86c-0175-1000-d6bf-4a94bf0e507e","parent":{"ref":"EID6ee4f70d-0175-1000-4ea6-0b3e104b7b10"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f86c-0175-1000-820a-75651e248bb4","parent":{"ref":"EID6ee4f70d-0175-1000-4ea6-0b3e104b7b10"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f86c-0175-1000-6c25-681d70869aff","parent":{"ref":"EID6ee4f70d-0175-1000-4ea6-0b3e104b7b10"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f86c-0175-1000-246f-cb88eab5deae","parent":{"ref":"EID6ee4f70d-0175-1000-4ea6-0b3e104b7b10"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f86c-0175-1000-57bb-44918f0ea76c","parent":{"ref":"EID6ee4f70d-0175-1000-4ea6-0b3e104b7b10"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf9c2caa9-4bb4-4d3d-92fd-7ce66d3afd95"},{"ref":"EID149d9b7b-20fc-4391-8448-0f160b626a12"},{"ref":"EID8ce28935-ab0c-4748-b826-a10c84634ace"}]},"parent":{"ref":"EID6ee4f617-0175-1000-f0a7-38486eafefef"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:08:20Z","duration":238,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:08:20Z","duration":597,"status":"PASSED"},{"id":"EID6ee4f86c-0175-1000-efc8-86186284ef3e","testStepResults":{"TestStepResult":[{"id":"EID6ee4f86c-0175-1000-e202-190a12521227","attachments":{"attachment":[{"ref":"EID43c47a68-115f-47ae-8fe7-117a40fa5045"},{"ref":"EIDcdf194d9-fb84-4073-8724-287dd9124d46"}]},"parent":{"ref":"EID6ee4f86c-0175-1000-efc8-86186284ef3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:08:20Z","duration":116,"status":"PASSED"},{"id":"EID6ee4f913-0175-1000-5405-6f28db5826ca","parent":{"ref":"EID6ee4f86c-0175-1000-efc8-86186284ef3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f913-0175-1000-d413-2f1cbd238484","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4fa9c-0175-1000-35f3-2cbfd173d3cd","parent":{"ref":"EID6ee4f913-0175-1000-d413-2f1cbd238484"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa9c-0175-1000-1164-3ecb48a386e4","parent":{"ref":"EID6ee4f913-0175-1000-d413-2f1cbd238484"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa9c-0175-1000-31ef-ab4ff63b1c0f","parent":{"ref":"EID6ee4f913-0175-1000-d413-2f1cbd238484"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa9c-0175-1000-cbd9-469c1139e001","parent":{"ref":"EID6ee4f913-0175-1000-d413-2f1cbd238484"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID757f8fc8-3fac-46e0-9a70-215c51ebc2a4"},{"ref":"EID44d765e1-a3bb-468b-921c-e2a22401deb5"},{"ref":"EIDc974feaa-6437-4315-b268-bc349dd069be"}]},"parent":{"ref":"EID6ee4f86c-0175-1000-efc8-86186284ef3e"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:08:21Z","duration":252,"status":"PASSED"},{"id":"EID6ee4faa5-0175-1000-072d-2c7fafb15e16","attachments":{"attachment":{"ref":"EIDff034499-28fd-4603-9c75-550d5f91a5df"}},"parent":{"ref":"EID6ee4f86c-0175-1000-efc8-86186284ef3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":1,"status":"PASSED"},{"id":"EID6ee4fab1-0175-1000-7a59-42088bf5158a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4fb97-0175-1000-3f50-fe313f2bb5dc","parent":{"ref":"EID6ee4fab1-0175-1000-7a59-42088bf5158a"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fb97-0175-1000-3d8d-621a6808e1f2","parent":{"ref":"EID6ee4fab1-0175-1000-7a59-42088bf5158a"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fb97-0175-1000-8698-1dbfae4998c1","parent":{"ref":"EID6ee4fab1-0175-1000-7a59-42088bf5158a"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fb97-0175-1000-7ec8-ac4f825db384","parent":{"ref":"EID6ee4fab1-0175-1000-7a59-42088bf5158a"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fb97-0175-1000-ca8c-4b880746bcc2","parent":{"ref":"EID6ee4fab1-0175-1000-7a59-42088bf5158a"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1b84b2d-d6a9-4e0b-91ad-0e96b899aa80"},{"ref":"EID7b68aa6b-2907-4ca0-bab5-8bfefe9b2d14"},{"ref":"EID5c033fbd-c12c-4a76-b1ed-558e47c3ed7d"}]},"parent":{"ref":"EID6ee4f86c-0175-1000-efc8-86186284ef3e"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:08:21Z","duration":90,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:08:20Z","duration":811,"status":"PASSED"},{"id":"EID6ee4fb97-0175-1000-bc90-23c475b088ba","testStepResults":{"TestStepResult":[{"id":"EID6ee4fb97-0175-1000-2cf8-52aa6027beeb","attachments":{"attachment":[{"ref":"EIDc28a887c-bc01-4a3f-9d13-144e1363023c"},{"ref":"EIDeaa49509-20b8-4011-9e31-b21933eedce5"}]},"parent":{"ref":"EID6ee4fb97-0175-1000-bc90-23c475b088ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":113,"status":"PASSED"},{"id":"EID6ee4fc38-0175-1000-7519-e08ee9e3bdcf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4fcc6-0175-1000-3e72-890eb2663d0a","parent":{"ref":"EID6ee4fc38-0175-1000-7519-e08ee9e3bdcf"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fcc6-0175-1000-639b-b96bf6169f93","parent":{"ref":"EID6ee4fc38-0175-1000-7519-e08ee9e3bdcf"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fcc6-0175-1000-23c0-cbae21d856a5","parent":{"ref":"EID6ee4fc38-0175-1000-7519-e08ee9e3bdcf"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fcc6-0175-1000-27a8-639c2c22d77d","parent":{"ref":"EID6ee4fc38-0175-1000-7519-e08ee9e3bdcf"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID17ac865b-dd16-4c43-b393-356d1b704fe3"},{"ref":"EID37961803-f30e-444d-8840-fc1e54e2f020"},{"ref":"EIDf8aead8f-bc6d-46fd-a48d-44fb42ac1f45"}]},"parent":{"ref":"EID6ee4fb97-0175-1000-bc90-23c475b088ba"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:08:21Z","duration":27,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:08:21Z","duration":303,"status":"PASSED"},{"id":"EID6ee4fcc6-0175-1000-23c9-7b0a30dac92d","testStepResults":{"TestStepResult":[{"id":"EID6ee4fcc6-0175-1000-6864-2d08c67c0506","attachments":{"attachment":[{"ref":"EID14c554f4-f69f-4ea0-99d0-80a701efb793"},{"ref":"EIDeb21b3b4-c277-4bd6-9a09-3538fe42bb10"}]},"parent":{"ref":"EID6ee4fcc6-0175-1000-23c9-7b0a30dac92d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:08:22Z","duration":226,"status":"PASSED"},{"id":"EID6ee4fe1b-0175-1000-44f9-3bfddc841b72","parent":{"ref":"EID6ee4fcc6-0175-1000-23c9-7b0a30dac92d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fe1b-0175-1000-7648-b4ae145f1834","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4fec3-0175-1000-c13d-80bbdd1a8c5a","parent":{"ref":"EID6ee4fe1b-0175-1000-7648-b4ae145f1834"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fec3-0175-1000-d7c1-453499044174","parent":{"ref":"EID6ee4fe1b-0175-1000-7648-b4ae145f1834"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fec3-0175-1000-1b30-1e12646db8cd","parent":{"ref":"EID6ee4fe1b-0175-1000-7648-b4ae145f1834"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fec3-0175-1000-755f-b5e16a5f8aac","parent":{"ref":"EID6ee4fe1b-0175-1000-7648-b4ae145f1834"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID25180a38-06ac-4ff5-8e8e-992bbcb6edbf"},{"ref":"EID50ae7caf-f649-423a-bca6-4d33d57aa4a1"},{"ref":"EID8c488b09-2104-4eee-b231-52c753347733"}]},"parent":{"ref":"EID6ee4fcc6-0175-1000-23c9-7b0a30dac92d"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:08:22Z","duration":81,"status":"PASSED"},{"id":"EID6ee4fec3-0175-1000-f610-70eef8502cf3","attachments":{"attachment":{"ref":"EID0b7a9946-0376-4fb6-b066-78258e4c34b4"}},"parent":{"ref":"EID6ee4fcc6-0175-1000-23c9-7b0a30dac92d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:08:22Z","duration":2,"status":"PASSED"},{"id":"EID6ee4fed0-0175-1000-cc03-f5ad90296d91","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50033-0175-1000-b0ea-d826327c54a1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee4fed0-0175-1000-cc03-f5ad90296d91"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:08:22Z","duration":13,"status":"FAILED"},{"id":"EID6ee50040-0175-1000-944e-a4b565a9fb35","parent":{"ref":"EID6ee4fed0-0175-1000-cc03-f5ad90296d91"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee50040-0175-1000-6417-8670b3f37f10","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee4fed0-0175-1000-cc03-f5ad90296d91"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:08:22Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDef5ab09a-d1a2-4f92-847c-47c5330e296b"},{"ref":"EIDe3f17cf9-a127-4c88-8a05-417ac6e43776"},{"ref":"EIDb8092433-bff2-4348-8375-d48395676819"}]},"parent":{"ref":"EID6ee4fcc6-0175-1000-23c9-7b0a30dac92d"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:08:22Z","duration":299,"status":"FAILED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:08:22Z","duration":898,"status":"FAILED"},{"id":"EID6ee50049-0175-1000-4159-5fd5155668e3","testStepResults":{"TestStepResult":[{"id":"EID6ee50049-0175-1000-bb45-f0b6df9ce9cf","attachments":{"attachment":[{"ref":"EID94e67ca9-3a6e-45c2-9dd9-84faa6f365ba"},{"ref":"EID0f12c500-34fe-4cde-b89e-a5996829a910"}]},"parent":{"ref":"EID6ee50049-0175-1000-4159-5fd5155668e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:08:22Z","duration":168,"status":"PASSED"},{"id":"EID6ee50128-0175-1000-0b35-a29005fa162e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5024f-0175-1000-3dda-5c9091d606fa","parent":{"ref":"EID6ee50128-0175-1000-0b35-a29005fa162e"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50250-0175-1000-865d-6331ab216047","parent":{"ref":"EID6ee50128-0175-1000-0b35-a29005fa162e"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50250-0175-1000-afb7-530a180472ac","parent":{"ref":"EID6ee50128-0175-1000-0b35-a29005fa162e"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50250-0175-1000-0e4e-cd375f0dd68f","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee50128-0175-1000-0b35-a29005fa162e"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDb1a9af4d-4aa7-4888-a2e4-d2f8016004d5"},{"ref":"EIDeb292933-08a3-400c-8952-5bdd8cdb03e6"},{"ref":"EID1476dbc0-89b3-4e74-b601-e3261a2992f8"}]},"parent":{"ref":"EID6ee50049-0175-1000-4159-5fd5155668e3"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:08:23Z","duration":80,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:08:22Z","duration":519,"status":"PASSED_MANUAL"},{"id":"EID6ee50250-0175-1000-15e4-fba5e74d4bb1","testStepResults":{"TestStepResult":{"id":"EID6ee50250-0175-1000-293e-bdee50e0a46d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee502eb-0175-1000-a124-a3a4b39ce380","parent":{"ref":"EID6ee50250-0175-1000-293e-bdee50e0a46d"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee502eb-0175-1000-0b63-e758cf214460","parent":{"ref":"EID6ee50250-0175-1000-293e-bdee50e0a46d"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee502eb-0175-1000-dc9e-f5887b64f967","parent":{"ref":"EID6ee50250-0175-1000-293e-bdee50e0a46d"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee502eb-0175-1000-2c16-bd574a93d057","parent":{"ref":"EID6ee50250-0175-1000-293e-bdee50e0a46d"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8a42cffd-7dc9-4ae8-9f4a-49cdccc5e3c5"},{"ref":"EID72e392cd-96dc-46c0-b4aa-16b29d62138d"},{"ref":"EID82d458ca-cbc6-40ae-b48a-ba06e8ac0218"}]},"parent":{"ref":"EID6ee50250-0175-1000-15e4-fba5e74d4bb1"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:08:23Z","duration":36,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:08:23Z","duration":155,"status":"PASSED"},{"id":"EID6ee502eb-0175-1000-54bf-a4d44026f508","testStepResults":{"TestStepResult":{"id":"EID6ee502eb-0175-1000-8420-9103e8b38340","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee503a2-0175-1000-d239-92148b42d403","parent":{"ref":"EID6ee502eb-0175-1000-8420-9103e8b38340"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee503a2-0175-1000-3d56-7e5fc55b3fde","parent":{"ref":"EID6ee502eb-0175-1000-8420-9103e8b38340"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee503a2-0175-1000-db5a-ab2490dabef4","parent":{"ref":"EID6ee502eb-0175-1000-8420-9103e8b38340"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee503a2-0175-1000-ee43-102d916f30df","parent":{"ref":"EID6ee502eb-0175-1000-8420-9103e8b38340"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID09a585c5-f65d-40b9-aca3-99cd7b11e416"},{"ref":"EID27080af2-f0cc-44ba-afd7-289e42ada530"},{"ref":"EID44bf5be8-9e98-4c58-9988-ea30e7df1715"}]},"parent":{"ref":"EID6ee502eb-0175-1000-54bf-a4d44026f508"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:08:23Z","duration":78,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:08:23Z","duration":183,"status":"PASSED"},{"id":"EID6ee503a2-0175-1000-9287-0badfb26799f","testStepResults":{"TestStepResult":{"id":"EID6ee503a2-0175-1000-ab6b-be1dddf7d62d","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDbd59d13a-72ee-4d91-ba79-c936caf08799"},{"ref":"EIDae46c3df-13cc-455d-98aa-3a8f9387375d"},{"ref":"EID6bc1321e-e947-4c4d-88dc-6017e9e3162c"},{"ref":"EID50f18df1-cd33-47c6-8194-d796aeb5c395"},{"ref":"EID2d77fe2e-8350-4fb9-b41c-7df4541843ca"},{"ref":"EID3c9a83f3-ece9-4ea5-bfac-220f3c810e01"},{"ref":"EID4dc29784-baf2-41e8-a403-45fb115bd754"},{"ref":"EID89e5f910-bc65-484d-b196-2d02f81cdc0d"},{"ref":"EIDf4647dfb-bffe-44ea-8591-fe61e740e766"}]},"parent":{"ref":"EID6ee503a2-0175-1000-9287-0badfb26799f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:08:23Z","duration":611,"status":"SKIPPED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:08:23Z","duration":740,"status":"SKIPPED"},{"id":"EID6ee50686-0175-1000-2027-21ebd691226a","testStepResults":{"TestStepResult":{"id":"EID6ee50686-0175-1000-60ed-a92d79501384","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50756-0175-1000-88cc-dbb71daef50b","parent":{"ref":"EID6ee50686-0175-1000-60ed-a92d79501384"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:08:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee50756-0175-1000-ccff-3a4c040d1444","parent":{"ref":"EID6ee50686-0175-1000-60ed-a92d79501384"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:08:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee50756-0175-1000-4a10-1fc05ac00481","parent":{"ref":"EID6ee50686-0175-1000-60ed-a92d79501384"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:08:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee50756-0175-1000-bc9a-873e96601887","parent":{"ref":"EID6ee50686-0175-1000-60ed-a92d79501384"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:08:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2cdd0b68-057e-444b-89d2-bc0772ed682d"},{"ref":"EID5ae97339-59ea-4efc-8867-b6353ecc0bad"},{"ref":"EID35f51a87-741b-4205-94fb-23f09d99dd8b"}]},"parent":{"ref":"EID6ee50686-0175-1000-2027-21ebd691226a"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:08:24Z","duration":73,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:08:24Z","duration":209,"status":"PASSED"},{"id":"EID6ee50757-0175-1000-09e3-171a46502047","testStepResults":{"TestStepResult":{"id":"EID6ee50757-0175-1000-a16e-a1c7921f7f76","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50842-0175-1000-8123-0afc36d358c7","parent":{"ref":"EID6ee50757-0175-1000-a16e-a1c7921f7f76"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50842-0175-1000-6974-3503c2a5a2d8","parent":{"ref":"EID6ee50757-0175-1000-a16e-a1c7921f7f76"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50842-0175-1000-0b32-dac54f21d70c","parent":{"ref":"EID6ee50757-0175-1000-a16e-a1c7921f7f76"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50842-0175-1000-7f64-1512b78957eb","parent":{"ref":"EID6ee50757-0175-1000-a16e-a1c7921f7f76"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50842-0175-1000-a5b8-4e3f48acfbbc","parent":{"ref":"EID6ee50757-0175-1000-a16e-a1c7921f7f76"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50842-0175-1000-be14-a4fdf31d2977","parent":{"ref":"EID6ee50757-0175-1000-a16e-a1c7921f7f76"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3c173314-b83e-454b-a803-ed349faf2816"},{"ref":"EID7ce9bfd2-958c-44fe-86c2-77222fd6a15f"},{"ref":"EID1a87dca8-1700-4307-9c17-33a91f82a8e9"}]},"parent":{"ref":"EID6ee50757-0175-1000-09e3-171a46502047"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:08:24Z","duration":118,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:08:24Z","duration":244,"status":"PASSED"},{"id":"EID6ee5084b-0175-1000-ed65-c8275572f944","testStepResults":{"TestStepResult":{"id":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee509a2-0175-1000-cb4e-1cec34555d54","parent":{"ref":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee509a2-0175-1000-9eec-ca17bfd825f9","parent":{"ref":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee509a2-0175-1000-19d8-91b733ca3d8e","parent":{"ref":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee509a2-0175-1000-84b3-cc57d0816e61","parent":{"ref":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee509a2-0175-1000-d547-47ab7a26fb79","parent":{"ref":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee509a2-0175-1000-ecd6-c01c1e9b530a","parent":{"ref":"EID6ee5084b-0175-1000-c1ad-36d57edf9f1f"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID977ebd02-06ec-4454-8a89-5e7b9ee16cc0"},{"ref":"EID87af0410-82d3-45f7-91ea-731d5bd23e71"},{"ref":"EID13c4688d-5974-4047-aa69-0c951766d07d"}]},"parent":{"ref":"EID6ee5084b-0175-1000-ed65-c8275572f944"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:08:25Z","duration":109,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:08:25Z","duration":343,"status":"PASSED"},{"id":"EID6ee509a2-0175-1000-4222-976cab3ed3bb","testStepResults":{"TestStepResult":{"id":"EID6ee509a2-0175-1000-b139-ee07ce4b9d55","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50a4c-0175-1000-6800-20e587feac87","parent":{"ref":"EID6ee509a2-0175-1000-b139-ee07ce4b9d55"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50a4c-0175-1000-e794-843b42963ae5","parent":{"ref":"EID6ee509a2-0175-1000-b139-ee07ce4b9d55"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50a4c-0175-1000-e944-9346c152d754","parent":{"ref":"EID6ee509a2-0175-1000-b139-ee07ce4b9d55"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee50a4c-0175-1000-c33b-c7f8caaab873","parent":{"ref":"EID6ee509a2-0175-1000-b139-ee07ce4b9d55"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:08:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67972189-5964-4d09-8191-d1752c7e1a31"},{"ref":"EID1b946160-7530-40af-83c7-dabb2920b743"},{"ref":"EID69d1566e-0b9e-4e79-96a8-7ef22ebe3e86"}]},"parent":{"ref":"EID6ee509a2-0175-1000-4222-976cab3ed3bb"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:08:25Z","duration":70,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:08:25Z","duration":179,"status":"PASSED"},{"id":"EID6ee50a55-0175-1000-7ceb-714d333ab9cf","testStepResults":{"TestStepResult":[{"id":"EID6ee50a55-0175-1000-bf3d-3d898d0e15de","attachments":{"attachment":[{"ref":"EID35be7f29-96ab-49b5-9596-b9d264a5d81d"},{"ref":"EIDa8e70adf-16da-4b81-aea9-f59a5619954b"},{"ref":"EID40ba1c55-82d4-4d2a-850b-bcbfdf145afd"},{"ref":"EIDcbd7da5f-62f5-4b33-bbe8-5c428badb854"}]},"parent":{"ref":"EID6ee50a55-0175-1000-7ceb-714d333ab9cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:08:25Z","duration":522,"status":"PASSED"},{"id":"EID6ee50cad-0175-1000-7e50-55c592b99211","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50da7-0175-1000-f618-ea616a854785","parent":{"ref":"EID6ee50cad-0175-1000-7e50-55c592b99211"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50da7-0175-1000-4ca9-7c533892ca14","parent":{"ref":"EID6ee50cad-0175-1000-7e50-55c592b99211"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50da7-0175-1000-2ddb-157f5c15f8d9","parent":{"ref":"EID6ee50cad-0175-1000-7e50-55c592b99211"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50da7-0175-1000-b89b-926dbeb38e63","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee50cad-0175-1000-7e50-55c592b99211"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID03cbf5c1-90af-41cb-abbc-b9286fce0eb6"},{"ref":"EID34cab4b1-e573-4ee4-bb54-9649d004b1c5"},{"ref":"EID0bf3c384-c140-4efb-a1f9-81f1e0c416fd"}]},"parent":{"ref":"EID6ee50a55-0175-1000-7ceb-714d333ab9cf"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:08:26Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:08:25Z","duration":850,"status":"FAILED"},{"id":"EID6ee50da7-0175-1000-c167-2a1936b8642d","testStepResults":{"TestStepResult":{"id":"EID6ee50da7-0175-1000-ee4b-14ae36129c10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50ef5-0175-1000-18bb-a0784dae53cf","parent":{"ref":"EID6ee50da7-0175-1000-ee4b-14ae36129c10"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50ef5-0175-1000-15cf-bc4899ea79eb","parent":{"ref":"EID6ee50da7-0175-1000-ee4b-14ae36129c10"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50ef5-0175-1000-dc11-111fff20a05c","parent":{"ref":"EID6ee50da7-0175-1000-ee4b-14ae36129c10"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50ef5-0175-1000-ff32-c0db12c190f0","parent":{"ref":"EID6ee50da7-0175-1000-ee4b-14ae36129c10"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1104bb7-f628-4eae-b571-a642fdc772a6"},{"ref":"EID21b54437-4692-4b50-a8db-1705a28c22cf"},{"ref":"EID2e740fea-c15e-4a41-8e3f-59021a61fd50"}]},"parent":{"ref":"EID6ee50da7-0175-1000-c167-2a1936b8642d"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:08:26Z","duration":30,"status":"PASSED"}},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:08:26Z","duration":334,"status":"PASSED"},{"id":"EID6ee50ef5-0175-1000-e734-d6343ee5c050","testStepResults":{"TestStepResult":[{"id":"EID6ee50ef5-0175-1000-5268-f2648af6d801","parent":{"ref":"EID6ee50ef5-0175-1000-e734-d6343ee5c050"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50f16-0175-1000-4da1-df17f6693cdc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50fdc-0175-1000-e345-ef96eec106d4","parent":{"ref":"EID6ee50f16-0175-1000-4da1-df17f6693cdc"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50fdc-0175-1000-72e0-9a56e7d51ffc","parent":{"ref":"EID6ee50f16-0175-1000-4da1-df17f6693cdc"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50fdc-0175-1000-7575-fc514df9842e","parent":{"ref":"EID6ee50f16-0175-1000-4da1-df17f6693cdc"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50fdc-0175-1000-6fe1-19c75b1bafc8","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee50f16-0175-1000-4da1-df17f6693cdc"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfbca3e7d-f60a-4728-a24c-999720585537"},{"ref":"EID2b3effc3-b0ce-4289-a4bf-d7c192aca461"},{"ref":"EID292d41a3-00b2-41ff-96bc-ef51a8d2d39b"}]},"parent":{"ref":"EID6ee50ef5-0175-1000-e734-d6343ee5c050"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:08:26Z","duration":85,"status":"FAILED"}]},"parent":{"ref":"EID6ee4f3d7-0175-1000-469d-370e5edbfa54"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:08:26Z","duration":231,"status":"FAILED"}]},"parent":{"ref":"EID8a94d51a-deb2-4732-8f5a-45330d3ce573"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:08:19Z","duration":7173,"status":"FAILED"},{"id":"EID6ee50fdc-0175-1000-b160-3c6685eb8351","testCaseResults":{"TestCaseResult":[{"id":"EID6ee50fdd-0175-1000-3390-d4eb76910b09","testStepResults":{"TestStepResult":[{"id":"EID6ee50fdd-0175-1000-90ab-56a45ff304b2","parent":{"ref":"EID6ee50fdd-0175-1000-3390-d4eb76910b09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:08:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee50fdd-0175-1000-251f-ad97d7a97b0f","parent":{"ref":"EID6ee50fdd-0175-1000-3390-d4eb76910b09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:08:26Z","duration":30,"status":"PASSED"},{"id":"EID6ee50fdd-0175-1000-ac3a-c411663eadee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51b8f-0175-1000-8f7e-1ad9f46a8ec0","parent":{"ref":"EID6ee50fdd-0175-1000-ac3a-c411663eadee"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:08:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee51b8f-0175-1000-a61b-4f767dc2acff","parent":{"ref":"EID6ee50fdd-0175-1000-ac3a-c411663eadee"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:08:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee51b8f-0175-1000-f1d8-9e16806a52f4","parent":{"ref":"EID6ee50fdd-0175-1000-ac3a-c411663eadee"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:08:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5eafd656-aca1-47af-955c-cae65e1ad4ba"},{"ref":"EIDfbd29e30-3390-48d2-8e3e-7c811c841785"},{"ref":"EID7c8fd438-3451-47ec-a4ba-b18ae6f4ee2b"}]},"parent":{"ref":"EID6ee50fdd-0175-1000-3390-d4eb76910b09"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:08:26Z","duration":110,"status":"PASSED"},{"id":"EID6ee51b9a-0175-1000-3c39-89217a9a1aaa","attachments":{"attachment":{"ref":"EID6e3ca10a-c77a-4261-aefa-30245cdc5064"}},"parent":{"ref":"EID6ee50fdd-0175-1000-3390-d4eb76910b09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:08:29Z","duration":1,"status":"PASSED"},{"id":"EID6ee51ba8-0175-1000-0672-e67492193c00","parent":{"ref":"EID6ee50fdd-0175-1000-3390-d4eb76910b09"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:08:29Z","duration":54,"status":"PASSED"}]},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:08:26Z","duration":3073,"status":"PASSED"},{"id":"EID6ee51bde-0175-1000-3d25-32e4f5f7903b","testStepResults":{"TestStepResult":[{"id":"EID6ee51bde-0175-1000-1a87-46797bc89490","parent":{"ref":"EID6ee51bde-0175-1000-3d25-32e4f5f7903b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:08:30Z","duration":45,"status":"PASSED"},{"id":"EID6ee51bde-0175-1000-bad0-e865319ce474","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51c7a-0175-1000-44f5-5ff030a885ba","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51bde-0175-1000-bad0-e865319ce474"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:08:30Z","duration":10,"status":"FAILED"},{"id":"EID6ee51c84-0175-1000-106d-879187dd43c2","parent":{"ref":"EID6ee51bde-0175-1000-bad0-e865319ce474"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51c84-0175-1000-60d5-2a10ee160c4f","parent":{"ref":"EID6ee51bde-0175-1000-bad0-e865319ce474"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51c84-0175-1000-0475-1d70f7ac17b2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee51bde-0175-1000-bad0-e865319ce474"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:08:30Z","duration":1,"status":"FAILED"},{"id":"EID6ee51c85-0175-1000-0ab1-b5e29e426f73","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee51bde-0175-1000-bad0-e865319ce474"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1e132c8e-1499-4a2b-8661-ffea6271922c"},{"ref":"EID04d981b6-32b7-43b7-a0c8-301684619577"},{"ref":"EIDe38a3057-6246-40da-b612-d6d318003e4b"}]},"parent":{"ref":"EID6ee51bde-0175-1000-3d25-32e4f5f7903b"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:08:30Z","duration":33,"status":"FAILED"}]},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:08:30Z","duration":167,"status":"FAILED"},{"id":"EID6ee51c85-0175-1000-e6f1-5b20ad6e71a2","testStepResults":{"TestStepResult":{"id":"EID6ee51c8d-0175-1000-7d81-54dbb7c30c6f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51d1b-0175-1000-b245-d71bd26becbb","parent":{"ref":"EID6ee51c8d-0175-1000-7d81-54dbb7c30c6f"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51d1b-0175-1000-35a7-05ca07318bc5","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51c8d-0175-1000-7d81-54dbb7c30c6f"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:08:30Z","duration":71,"status":"FAILED"},{"id":"EID6ee51d62-0175-1000-1a86-9ebd79173b1e","parent":{"ref":"EID6ee51c8d-0175-1000-7d81-54dbb7c30c6f"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb2c9f00a-c682-4ecf-a52d-760b2dca0652"},{"ref":"EID33e26957-73c8-434b-a179-0bcecd8a7246"},{"ref":"EIDeb36ab78-d9e6-4c35-89a6-2bbcb9f4724c"}]},"parent":{"ref":"EID6ee51c85-0175-1000-e6f1-5b20ad6e71a2"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:08:30Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:08:30Z","duration":221,"status":"FAILED"},{"id":"EID6ee51d62-0175-1000-fea3-4bf5f1f1d384","testStepResults":{"TestStepResult":{"id":"EID6ee51d62-0175-1000-10e7-dc00ab35d25d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51dd8-0175-1000-31d8-d4860cb44ade","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee51d62-0175-1000-10e7-dc00ab35d25d"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"FAILED"},{"id":"EID6ee51dd8-0175-1000-865b-9390a3716b2c","parent":{"ref":"EID6ee51d62-0175-1000-10e7-dc00ab35d25d"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51dd8-0175-1000-c42b-8e22daa042f7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51d62-0175-1000-10e7-dc00ab35d25d"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:08:30Z","duration":10,"status":"FAILED"},{"id":"EID6ee51de2-0175-1000-663e-beff3d554857","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee51d62-0175-1000-10e7-dc00ab35d25d"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:08:30Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3f5f3c37-4e2d-4f20-aa88-77f3a144956f"},{"ref":"EIDf292bfab-8f46-462c-b5ff-716314c47836"},{"ref":"EIDe33d5c21-d2ac-4983-8b11-3a66d6d1535d"}]},"parent":{"ref":"EID6ee51d62-0175-1000-fea3-4bf5f1f1d384"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:08:30Z","duration":50,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:08:30Z","duration":129,"status":"FAILED"},{"id":"EID6ee51de3-0175-1000-8387-16dacc7b98ff","testStepResults":{"TestStepResult":{"id":"EID6ee51de3-0175-1000-9847-4750006478f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51e3a-0175-1000-eec3-a4470ee1e582","parent":{"ref":"EID6ee51de3-0175-1000-9847-4750006478f7"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51e3a-0175-1000-dbf8-a3b9ac1589e0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51de3-0175-1000-9847-4750006478f7"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:08:30Z","duration":11,"status":"FAILED"},{"id":"EID6ee51e45-0175-1000-202e-c9efe4eeccfe","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee51de3-0175-1000-9847-4750006478f7"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDec217907-6b15-462d-9ee5-f9ada32e9186"},{"ref":"EIDdab96537-0f85-480e-bd9e-71a622699ccc"},{"ref":"EID1e6e5666-45ff-4969-8dcd-663f31f02c6e"}]},"parent":{"ref":"EID6ee51de3-0175-1000-8387-16dacc7b98ff"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:08:30Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:08:30Z","duration":98,"status":"FAILED"},{"id":"EID6ee51e45-0175-1000-07fd-20ae56535a5d","testStepResults":{"TestStepResult":{"id":"EID6ee51e45-0175-1000-b76f-c1ed86e445b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51ea2-0175-1000-711e-13177bea081f","parent":{"ref":"EID6ee51e45-0175-1000-b76f-c1ed86e445b5"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51ea2-0175-1000-d0d5-1bd22b8ee6c4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51e45-0175-1000-b76f-c1ed86e445b5"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:08:30Z","duration":16,"status":"FAILED"},{"id":"EID6ee51eb2-0175-1000-4775-7be47d422671","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee51e45-0175-1000-b76f-c1ed86e445b5"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID6253e902-0290-4507-87f2-70b8cac5b4c6"},{"ref":"EID7690cb8e-8760-4669-955a-8b9e9d95da4a"},{"ref":"EIDb40e3f90-98d1-4597-988b-14dea2cc9053"}]},"parent":{"ref":"EID6ee51e45-0175-1000-07fd-20ae56535a5d"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:08:30Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:08:30Z","duration":109,"status":"FAILED"},{"id":"EID6ee51eb2-0175-1000-5093-f5c4c4b79475","testStepResults":{"TestStepResult":{"id":"EID6ee51eb2-0175-1000-a917-dfc4093bb4b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee51f71-0175-1000-e65f-23f05c131dd0","parent":{"ref":"EID6ee51eb2-0175-1000-a917-dfc4093bb4b0"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51f71-0175-1000-181d-572fbf1d87fa","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51eb2-0175-1000-a917-dfc4093bb4b0"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:08:30Z","duration":16,"status":"FAILED"},{"id":"EID6ee51f81-0175-1000-a33e-ea1f0c159f77","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee51eb2-0175-1000-a917-dfc4093bb4b0"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"FAILED"},{"id":"EID6ee51f81-0175-1000-4add-1aad9ea51c25","parent":{"ref":"EID6ee51eb2-0175-1000-a917-dfc4093bb4b0"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee51f81-0175-1000-1ef8-2b9f8018bfb3","parent":{"ref":"EID6ee51eb2-0175-1000-a917-dfc4093bb4b0"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:08:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d31377b-5350-4bec-a8c9-d87d0a288e85"},{"ref":"EID6082d557-b219-44d4-aa47-59289e94c542"},{"ref":"EIDcde549ab-07cf-4b10-8ef5-c56fa117fc1b"}]},"parent":{"ref":"EID6ee51eb2-0175-1000-5093-f5c4c4b79475"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:08:30Z","duration":55,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:08:30Z","duration":207,"status":"FAILED"},{"id":"EID6ee51f81-0175-1000-d09f-0f51ad8dfff3","testStepResults":{"TestStepResult":{"id":"EID6ee51f81-0175-1000-75dc-357146a117c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52000-0175-1000-673b-1787fba75083","parent":{"ref":"EID6ee51f81-0175-1000-75dc-357146a117c9"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee52000-0175-1000-b9c8-869930805e92","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee51f81-0175-1000-75dc-357146a117c9"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:08:31Z","duration":11,"status":"FAILED"},{"id":"EID6ee5200b-0175-1000-c756-2c110500f809","parent":{"ref":"EID6ee51f81-0175-1000-75dc-357146a117c9"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc3a19c5b-75d1-4c48-a09e-f393c37701c9"},{"ref":"EID1ef30eda-53cf-42e7-a1c8-98e3eb8e07de"},{"ref":"EIDaa42eb88-311a-40dd-b79c-40cd2f6292ae"}]},"parent":{"ref":"EID6ee51f81-0175-1000-d09f-0f51ad8dfff3"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:08:30Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:08:30Z","duration":138,"status":"FAILED"},{"id":"EID6ee5200c-0175-1000-4bb0-3ad66d57284a","testStepResults":{"TestStepResult":{"id":"EID6ee5200c-0175-1000-0969-814b7421a3c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52084-0175-1000-5c7e-fb771ad24fa7","parent":{"ref":"EID6ee5200c-0175-1000-0969-814b7421a3c1"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee52084-0175-1000-05c0-3cb3bfd1a520","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee5200c-0175-1000-0969-814b7421a3c1"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:08:31Z","duration":68,"status":"FAILED"},{"id":"EID6ee520c8-0175-1000-16bf-9a8aed2d5c2d","parent":{"ref":"EID6ee5200c-0175-1000-0969-814b7421a3c1"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1c0c0387-e96d-4839-b7e5-5a246966e916"},{"ref":"EID0ca237fb-47ec-4590-9d8d-53367b10e261"},{"ref":"EID89d73b2c-6cef-4dfa-89ea-9c51db47c037"}]},"parent":{"ref":"EID6ee5200c-0175-1000-4bb0-3ad66d57284a"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:08:31Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:08:31Z","duration":188,"status":"FAILED"},{"id":"EID6ee520c9-0175-1000-695c-7eafd016324c","testStepResults":{"TestStepResult":{"id":"EID6ee520c9-0175-1000-9c6e-bc3b664479c0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52126-0175-1000-e17c-c48a2fbbb9ce","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee520c9-0175-1000-9c6e-bc3b664479c0"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:08:31Z","duration":11,"status":"FAILED"},{"id":"EID6ee52131-0175-1000-a804-32738215d57a","parent":{"ref":"EID6ee520c9-0175-1000-9c6e-bc3b664479c0"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee52131-0175-1000-3386-e6b7ba853d86","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee520c9-0175-1000-9c6e-bc3b664479c0"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"FAILED"},{"id":"EID6ee52131-0175-1000-b343-eec7ad3b73bf","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee520c9-0175-1000-9c6e-bc3b664479c0"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdcef7c4a-9420-4b7f-af1d-3a9104314c3c"},{"ref":"EIDf8f94c19-e4b7-4cd5-a872-5e78c32482a4"},{"ref":"EIDbbe7ee4e-cae9-42b0-844f-6e6a65487ab5"}]},"parent":{"ref":"EID6ee520c9-0175-1000-695c-7eafd016324c"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:08:31Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:08:31Z","duration":105,"status":"FAILED"},{"id":"EID6ee52132-0175-1000-57ae-3761cf01e8df","testStepResults":{"TestStepResult":{"id":"EID6ee52132-0175-1000-a411-ae9670e3d38d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52199-0175-1000-7dfe-8524dd695642","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee52132-0175-1000-a411-ae9670e3d38d"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:08:31Z","duration":13,"status":"FAILED"},{"id":"EID6ee521a6-0175-1000-2590-c5674160f318","parent":{"ref":"EID6ee52132-0175-1000-a411-ae9670e3d38d"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee521a6-0175-1000-0fce-06137df237cf","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee52132-0175-1000-a411-ae9670e3d38d"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"FAILED"},{"id":"EID6ee521a6-0175-1000-a48b-a99addca8995","parent":{"ref":"EID6ee52132-0175-1000-a411-ae9670e3d38d"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID197f3b4a-2302-4809-8e00-ffe9307d93b0"},{"ref":"EID3fb8efdd-1829-4851-8f49-00af1f40799b"},{"ref":"EID603453ae-aed6-47e1-b562-7ed6707875ce"}]},"parent":{"ref":"EID6ee52132-0175-1000-57ae-3761cf01e8df"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:08:31Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:08:31Z","duration":116,"status":"FAILED"},{"id":"EID6ee521a6-0175-1000-4f34-6efdc01e574a","testStepResults":{"TestStepResult":[{"id":"EID6ee521a6-0175-1000-e7b5-274459a98a56","parent":{"ref":"EID6ee521a6-0175-1000-4f34-6efdc01e574a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee521a7-0175-1000-bb45-baf60cb22153","parent":{"ref":"EID6ee521a6-0175-1000-4f34-6efdc01e574a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:08:31Z","duration":79,"status":"PASSED"},{"id":"EID6ee521a7-0175-1000-190f-5d513a704516","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52267-0175-1000-2eb3-670f1cbd2fda","parent":{"ref":"EID6ee521a7-0175-1000-190f-5d513a704516"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee52267-0175-1000-dbe2-e8ed9ae3b796","parent":{"ref":"EID6ee521a7-0175-1000-190f-5d513a704516"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee52267-0175-1000-1f5f-2667447c87d0","parent":{"ref":"EID6ee521a7-0175-1000-190f-5d513a704516"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee52267-0175-1000-6c72-e32b6bcfe468","parent":{"ref":"EID6ee521a7-0175-1000-190f-5d513a704516"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:08:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID71929f44-4f2b-4eaf-bcce-e18ed32ea996"},{"ref":"EIDafa8be8b-21c7-41ca-baec-effbf0000d57"},{"ref":"EID427a4a20-3fb6-4cbf-92ea-c2f7a788e17e"}]},"parent":{"ref":"EID6ee521a6-0175-1000-4f34-6efdc01e574a"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:08:31Z","duration":76,"status":"PASSED"},{"id":"EID6ee524e4-0175-1000-1496-5265a8367e22","attachments":{"attachment":{"ref":"EID4b4625ec-97ee-4ab5-b9e6-6ec07fc99b82"}},"parent":{"ref":"EID6ee521a6-0175-1000-4f34-6efdc01e574a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:08:32Z","duration":6,"status":"PASSED"},{"id":"EID6ee524f8-0175-1000-5a40-94db24aa430a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52580-0175-1000-775d-9b471ebb77e2","parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:08:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee52580-0175-1000-ed7c-04be55629d35","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:08:32Z","duration":10,"status":"FAILED"},{"id":"EID6ee5258b-0175-1000-30a8-bcd73835f9c7","parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:08:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee5258b-0175-1000-d26c-c3e1edd3ed77","parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:08:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee5258b-0175-1000-04d2-3b7d7ba7bad7","parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:08:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee5258b-0175-1000-fc70-9c44ec4c12ff","parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:08:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee5258b-0175-1000-6e63-6d78c918ae62","parent":{"ref":"EID6ee524f8-0175-1000-5a40-94db24aa430a"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:08:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96b2bef8-67b1-47fb-8d4f-c9ae8d4bc432"},{"ref":"EID7c7aa7a7-a7c2-4aaf-b91e-712c73b9f4bc"},{"ref":"EID264b6649-41d3-42c3-a66d-9626511660aa"}]},"parent":{"ref":"EID6ee521a6-0175-1000-4f34-6efdc01e574a"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:08:32Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:08:31Z","duration":1010,"status":"FAILED"},{"id":"EID6ee52598-0175-1000-7be4-05bec4ba6eb7","testStepResults":{"TestStepResult":[{"id":"EID6ee52598-0175-1000-947d-547075583932","parent":{"ref":"EID6ee52598-0175-1000-7be4-05bec4ba6eb7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:08:32Z","duration":1,"status":"PASSED"},{"id":"EID6ee525a3-0175-1000-0922-851dd282bd98","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52800-0175-1000-4f37-0b27258005ff","parent":{"ref":"EID6ee525a3-0175-1000-0922-851dd282bd98"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52800-0175-1000-790b-5991b8f2c438","parent":{"ref":"EID6ee525a3-0175-1000-0922-851dd282bd98"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52800-0175-1000-764e-cb8f5f6b2d28","parent":{"ref":"EID6ee525a3-0175-1000-0922-851dd282bd98"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52800-0175-1000-ff59-1c4abf2e9fa7","parent":{"ref":"EID6ee525a3-0175-1000-0922-851dd282bd98"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6b43f235-678a-469f-9dbb-9ff78147ddca"},{"ref":"EID4b99ba86-0070-4996-af33-8a234635258b"},{"ref":"EIDbc272ce1-a6ae-4a4b-96d7-75277c5ce497"}]},"parent":{"ref":"EID6ee52598-0175-1000-7be4-05bec4ba6eb7"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:08:32Z","duration":463,"status":"PASSED"},{"id":"EID6ee52800-0175-1000-b0d6-d100d84ba3a0","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee52811-0175-1000-0a6a-5f3fbdb6436e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5290c-0175-1000-a7ee-82083418e648","parent":{"ref":"EID6ee52811-0175-1000-0a6a-5f3fbdb6436e"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee5290c-0175-1000-bebf-ce94a0392806","parent":{"ref":"EID6ee52811-0175-1000-0a6a-5f3fbdb6436e"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee5290c-0175-1000-0d7e-b612f4cdc43c","parent":{"ref":"EID6ee52811-0175-1000-0a6a-5f3fbdb6436e"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc3d3b47e-54e5-48d4-8e6a-0432648f1e56"},{"ref":"EID65217f7f-5760-4f59-be5a-3192eeb2ca55"},{"ref":"EIDeaf59048-705d-4eeb-a0e6-25457b5d3375"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:33Z","duration":147,"status":"PASSED"},{"id":"EID6ee52917-0175-1000-a7d2-d10689e459e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52974-0175-1000-873b-136137c576a8","parent":{"ref":"EID6ee52917-0175-1000-a7d2-d10689e459e2"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52974-0175-1000-24c4-bab060b6227b","parent":{"ref":"EID6ee52917-0175-1000-a7d2-d10689e459e2"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52974-0175-1000-2456-dc3f729ca5ee","parent":{"ref":"EID6ee52917-0175-1000-a7d2-d10689e459e2"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48e7a0ef-f2b2-4046-b96e-9b6c0ee7e36a"},{"ref":"EIDc78bd75c-0121-4df9-8f58-b92bf3541d4d"},{"ref":"EID74718bdc-6027-4678-ac7d-327bfe900a9a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:33Z","duration":40,"status":"PASSED"},{"id":"EID6ee5297e-0175-1000-463b-5f8330c65696","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee529d5-0175-1000-4c39-24253402ba97","parent":{"ref":"EID6ee5297e-0175-1000-463b-5f8330c65696"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee529d5-0175-1000-8867-b30e6682762a","parent":{"ref":"EID6ee5297e-0175-1000-463b-5f8330c65696"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee529d5-0175-1000-8bb0-c10ae581b9d6","parent":{"ref":"EID6ee5297e-0175-1000-463b-5f8330c65696"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8437711d-b657-4055-856e-bc23106e8d85"},{"ref":"EID159d47f7-1338-4cde-8b95-046f0b114d7c"},{"ref":"EID9f27b7d5-43b9-4b55-be6f-2cebeec9d67d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:33Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6ee52598-0175-1000-7be4-05bec4ba6eb7"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:08:33Z","duration":470,"status":"PASSED"},{"id":"EID6ee529d6-0175-1000-c6e1-36600d50cf7c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52a34-0175-1000-e757-9ac89eb32526","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee529d6-0175-1000-c6e1-36600d50cf7c"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:08:33Z","duration":11,"status":"FAILED"},{"id":"EID6ee52a3f-0175-1000-d9ba-50f1a6b84d2a","parent":{"ref":"EID6ee529d6-0175-1000-c6e1-36600d50cf7c"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52a3f-0175-1000-5975-52e7a1040db8","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee529d6-0175-1000-c6e1-36600d50cf7c"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"FAILED"},{"id":"EID6ee52a3f-0175-1000-d197-239112504497","parent":{"ref":"EID6ee529d6-0175-1000-c6e1-36600d50cf7c"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID826e6c21-d4d0-44a1-9cf1-6ebf817eda63"},{"ref":"EIDdbd142ff-af31-4478-bed8-61f6af5c857e"},{"ref":"EIDadd8cf66-967b-4b81-bcfc-97dd9aec95d4"}]},"parent":{"ref":"EID6ee52598-0175-1000-7be4-05bec4ba6eb7"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:08:33Z","duration":28,"status":"FAILED"}]},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:08:32Z","duration":1191,"status":"FAILED"},{"id":"EID6ee52a3f-0175-1000-34be-5d14c791d649","testStepResults":{"TestStepResult":{"id":"EID6ee52a3f-0175-1000-3595-44dcaa4241ef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52a9d-0175-1000-b025-5204da0028b1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee52a3f-0175-1000-3595-44dcaa4241ef"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:08:33Z","duration":12,"status":"FAILED"},{"id":"EID6ee52aa9-0175-1000-8c95-e170723ce8b4","parent":{"ref":"EID6ee52a3f-0175-1000-3595-44dcaa4241ef"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee52aa9-0175-1000-ef08-eaebdceabee4","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee52a3f-0175-1000-3595-44dcaa4241ef"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"FAILED"},{"id":"EID6ee52aa9-0175-1000-ec30-7cfb53868819","parent":{"ref":"EID6ee52a3f-0175-1000-3595-44dcaa4241ef"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7401894e-bc24-4701-b705-922ac5017441"},{"ref":"EID9c588497-ec14-4e35-8ede-7995a4eee281"},{"ref":"EIDe69aedc2-6875-494f-933e-b958679ca17c"}]},"parent":{"ref":"EID6ee52a3f-0175-1000-34be-5d14c791d649"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:08:33Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6ee50fdc-0175-1000-b160-3c6685eb8351"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:08:33Z","duration":118,"status":"FAILED"}]},"parent":{"ref":"EID8a94d51a-deb2-4732-8f5a-45330d3ce573"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:08:26Z","duration":6873,"status":"FAILED"},{"id":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166","testCaseResults":{"TestCaseResult":[{"id":"EID6ee52ab5-0175-1000-7aae-21ae89b42090","testStepResults":{"TestStepResult":{"id":"EID6ee52ab6-0175-1000-5d4d-06ca1cd798fe","parent":{"ref":"EID6ee52ab5-0175-1000-7aae-21ae89b42090"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":608,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:08:33Z","duration":1,"status":"SKIPPED"},{"id":"EID6ee52abe-0175-1000-e87d-a1dc8752aea1","testStepResults":{"TestStepResult":{"id":"EID6ee52abe-0175-1000-9f77-19cf08b367a9","parent":{"ref":"EID6ee52abe-0175-1000-e87d-a1dc8752aea1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":608,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:08:33Z","duration":1,"status":"SKIPPED"},{"id":"EID6ee52abf-0175-1000-2977-cfe06059cefd","testStepResults":{"TestStepResult":{"id":"EID6ee52abf-0175-1000-001a-19af83889cd1","parent":{"ref":"EID6ee52abf-0175-1000-2977-cfe06059cefd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":608,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee52abf-0175-1000-aa54-d039e61c0fd3","testStepResults":{"TestStepResult":{"id":"EID6ee52abf-0175-1000-aea7-9f9f0630d8be","parent":{"ref":"EID6ee52abf-0175-1000-aa54-d039e61c0fd3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":608,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee52abf-0175-1000-4121-e9fbb6da8361","testStepResults":{"TestStepResult":{"id":"EID6ee52abf-0175-1000-5c2d-ffa50ffa934c","parent":{"ref":"EID6ee52abf-0175-1000-4121-e9fbb6da8361"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":608,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee52abf-0175-1000-2a99-796b076667cd","testStepResults":{"TestStepResult":{"id":"EID6ee52abf-0175-1000-e165-35e82a0539de","parent":{"ref":"EID6ee52abf-0175-1000-2a99-796b076667cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":608,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:08:33Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee52abf-0175-1000-7034-e8e06894f834","testStepResults":{"TestStepResult":{"id":"EID6ee52aca-0175-1000-7546-e42fe16cb892","parent":{"ref":"EID6ee52abf-0175-1000-7034-e8e06894f834"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:08:33Z","duration":609,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52ab5-0175-1000-dbd0-a1421ecf8166"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:08:33Z","duration":12,"status":"SKIPPED"}]},"parent":{"ref":"EID8a94d51a-deb2-4732-8f5a-45330d3ce573"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:08:33Z","duration":22,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EID89d73b2c-6cef-4dfa-89ea-9c51db47c037","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDfbd29e30-3390-48d2-8e3e-7c811c841785","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDfbd29e30-3390-48d2-8e3e-7c811c841785"}},{"type":"Error","id":"EIDfbccdec3-139b-478b-b2cf-582edc01f04c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDfbccdec3-139b-478b-b2cf-582edc01f04c"}},{"type":"Message","id":"EID89e5f910-bc65-484d-b196-2d02f81cdc0d","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID89e5f910-bc65-484d-b196-2d02f81cdc0d"}},{"type":"GetParameter","id":"EID1a87dca8-1700-4307-9c17-33a91f82a8e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID21b54437-4692-4b50-a8db-1705a28c22cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID21b54437-4692-4b50-a8db-1705a28c22cf"}},{"type":"ServiceEndpoint","id":"EIDb1a9af4d-4aa7-4888-a2e4-d2f8016004d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID5ae97339-59ea-4efc-8867-b6353ecc0bad","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID5ae97339-59ea-4efc-8867-b6353ecc0bad"}},{"type":"ServiceResponse","id":"EID6082d557-b219-44d4-aa47-59289e94c542","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID6082d557-b219-44d4-aa47-59289e94c542"}},{"type":"ServiceResponse","id":"EID7c7aa7a7-a7c2-4aaf-b91e-712c73b9f4bc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID7c7aa7a7-a7c2-4aaf-b91e-712c73b9f4bc"}},{"type":"GetParameter","id":"EID7c8fd438-3451-47ec-a4ba-b18ae6f4ee2b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDa1f986bc-ce54-4e0c-9372-99f09f6e190b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDa1f986bc-ce54-4e0c-9372-99f09f6e190b"}},{"type":"ServiceEndpoint","id":"EID09a585c5-f65d-40b9-aca3-99cd7b11e416","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf8aead8f-bc6d-46fd-a48d-44fb42ac1f45","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID44bf5be8-9e98-4c58-9988-ea30e7df1715","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcde549ab-07cf-4b10-8ef5-c56fa117fc1b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDae46c3df-13cc-455d-98aa-3a8f9387375d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDae46c3df-13cc-455d-98aa-3a8f9387375d"}},{"type":"ServiceEndpoint","id":"EIDfd6119c3-16a7-4766-94e8-641b23305d8b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDcbd7da5f-62f5-4b33-bbe8-5c428badb854","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDcbd7da5f-62f5-4b33-bbe8-5c428badb854"}},{"type":"ServiceResponse","id":"EID72e392cd-96dc-46c0-b4aa-16b29d62138d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID72e392cd-96dc-46c0-b4aa-16b29d62138d"}},{"type":"ServiceEndpoint","id":"EID977ebd02-06ec-4454-8a89-5e7b9ee16cc0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6e3ca10a-c77a-4261-aefa-30245cdc5064","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID6e3ca10a-c77a-4261-aefa-30245cdc5064"}},{"type":"GetParameter","id":"EIDaa42eb88-311a-40dd-b79c-40cd2f6292ae","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDef5ab09a-d1a2-4f92-847c-47c5330e296b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf1b84b2d-d6a9-4e0b-91ad-0e96b899aa80","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EID94e67ca9-3a6e-45c2-9dd9-84faa6f365ba","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID94e67ca9-3a6e-45c2-9dd9-84faa6f365ba"}},{"type":"Error","id":"EID8fe95f56-3471-4d2e-a728-1ad7b58a8d98","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID8fe95f56-3471-4d2e-a728-1ad7b58a8d98"}},{"type":"ServiceResponse","id":"EIDafa8be8b-21c7-41ca-baec-effbf0000d57","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDafa8be8b-21c7-41ca-baec-effbf0000d57"}},{"type":"Message","id":"EID2d77fe2e-8350-4fb9-b41c-7df4541843ca","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID2d77fe2e-8350-4fb9-b41c-7df4541843ca"}},{"type":"GetParameter","id":"EID2e740fea-c15e-4a41-8e3f-59021a61fd50","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe69aedc2-6875-494f-933e-b958679ca17c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID736f7a83-2cc0-41e0-abdb-67ca761e15cd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8c488b09-2104-4eee-b231-52c753347733","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID65217f7f-5760-4f59-be5a-3192eeb2ca55","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID65217f7f-5760-4f59-be5a-3192eeb2ca55"}},{"type":"Message","id":"EIDcdf194d9-fb84-4073-8724-287dd9124d46","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDcdf194d9-fb84-4073-8724-287dd9124d46"}},{"type":"ServiceResponse","id":"EIDe3f17cf9-a127-4c88-8a05-417ac6e43776","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDe3f17cf9-a127-4c88-8a05-417ac6e43776"}},{"type":"GetParameter","id":"EID63c18c7f-d16c-4624-a567-02bae9db7a6a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2b3effc3-b0ce-4289-a4bf-d7c192aca461","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID2b3effc3-b0ce-4289-a4bf-d7c192aca461"}},{"type":"GetParameter","id":"EIDe33d5c21-d2ac-4983-8b11-3a66d6d1535d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDf5284abc-e754-4f53-a161-11ccf8f87c3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc974feaa-6437-4315-b268-bc349dd069be","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDc28a887c-bc01-4a3f-9d13-144e1363023c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDc28a887c-bc01-4a3f-9d13-144e1363023c"}},{"type":"GetParameter","id":"EIDeaf59048-705d-4eeb-a0e6-25457b5d3375","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID3c9a83f3-ece9-4ea5-bfac-220f3c810e01","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID3c9a83f3-ece9-4ea5-bfac-220f3c810e01"}},{"type":"Message","id":"EIDf4647dfb-bffe-44ea-8591-fe61e740e766","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDf4647dfb-bffe-44ea-8591-fe61e740e766"}},{"type":"GetParameter","id":"EID82d458ca-cbc6-40ae-b48a-ba06e8ac0218","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID35be7f29-96ab-49b5-9596-b9d264a5d81d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID35be7f29-96ab-49b5-9596-b9d264a5d81d"}},{"type":"GetParameter","id":"EID8ce28935-ab0c-4748-b826-a10c84634ace","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID34cab4b1-e573-4ee4-bb54-9649d004b1c5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID34cab4b1-e573-4ee4-bb54-9649d004b1c5"}},{"type":"ServiceEndpoint","id":"EID1c0c0387-e96d-4839-b7e5-5a246966e916","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID5d31377b-5350-4bec-a8c9-d87d0a288e85","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9f27b7d5-43b9-4b55-be6f-2cebeec9d67d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Error","id":"EIDe5905fcd-2bef-43d5-9d22-4392ec68571d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDe5905fcd-2bef-43d5-9d22-4392ec68571d"}},{"type":"ServiceEndpoint","id":"EID7401894e-bc24-4701-b705-922ac5017441","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDe16610b2-c5df-40e2-b216-90e33fbb4c86","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDe16610b2-c5df-40e2-b216-90e33fbb4c86"}},{"type":"ServiceResponse","id":"EID149d9b7b-20fc-4391-8448-0f160b626a12","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID149d9b7b-20fc-4391-8448-0f160b626a12"}},{"type":"Message","id":"EID0f12c500-34fe-4cde-b89e-a5996829a910","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID0f12c500-34fe-4cde-b89e-a5996829a910"}},{"type":"GetParameter","id":"EID13c4688d-5974-4047-aa69-0c951766d07d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9c588497-ec14-4e35-8ede-7995a4eee281","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID9c588497-ec14-4e35-8ede-7995a4eee281"}},{"type":"ServiceEndpoint","id":"EID8437711d-b657-4055-856e-bc23106e8d85","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDdab96537-0f85-480e-bd9e-71a622699ccc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDdab96537-0f85-480e-bd9e-71a622699ccc"}},{"type":"ServiceResponse","id":"EIDeb292933-08a3-400c-8952-5bdd8cdb03e6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDeb292933-08a3-400c-8952-5bdd8cdb03e6"}},{"type":"ServiceEndpoint","id":"EID6253e902-0290-4507-87f2-70b8cac5b4c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDbc272ce1-a6ae-4a4b-96d7-75277c5ce497","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID8a42cffd-7dc9-4ae8-9f4a-49cdccc5e3c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6b43f235-678a-469f-9dbb-9ff78147ddca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDb2c9f00a-c682-4ecf-a52d-760b2dca0652","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDff034499-28fd-4603-9c75-550d5f91a5df","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDff034499-28fd-4603-9c75-550d5f91a5df"}},{"type":"GetParameter","id":"EID603453ae-aed6-47e1-b562-7ed6707875ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDc3d3b47e-54e5-48d4-8e6a-0432648f1e56","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EIDdbd142ff-af31-4478-bed8-61f6af5c857e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDdbd142ff-af31-4478-bed8-61f6af5c857e"}},{"type":"GetParameter","id":"EIDadd8cf66-967b-4b81-bcfc-97dd9aec95d4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID37961803-f30e-444d-8840-fc1e54e2f020","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID37961803-f30e-444d-8840-fc1e54e2f020"}},{"type":"Error","id":"EID1a6e7cbb-b9b7-4f4e-8137-8ea93220293b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID1a6e7cbb-b9b7-4f4e-8137-8ea93220293b"}},{"type":"LogFile","id":"EIDc49ee161-cf52-479f-bd58-50a4936d3c42","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDc49ee161-cf52-479f-bd58-50a4936d3c42"}},{"type":"Error","id":"EID2c32a2a5-4649-4000-9c2e-732258258d65","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID2c32a2a5-4649-4000-9c2e-732258258d65"}},{"type":"ServiceEndpoint","id":"EIDc3a19c5b-75d1-4c48-a09e-f393c37701c9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID57217e3a-16f6-484a-886a-455a0f776f1b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID57217e3a-16f6-484a-886a-455a0f776f1b"}},{"type":"Error","id":"EID097d0e65-6d2b-4640-8736-0ec6eb88b163","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID097d0e65-6d2b-4640-8736-0ec6eb88b163"}},{"type":"ServiceEndpoint","id":"EIDdcef7c4a-9420-4b7f-af1d-3a9104314c3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID1476dbc0-89b3-4e74-b601-e3261a2992f8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0ca237fb-47ec-4590-9d8d-53367b10e261","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID0ca237fb-47ec-4590-9d8d-53367b10e261"}},{"type":"ServiceResponse","id":"EID3fb8efdd-1829-4851-8f49-00af1f40799b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID3fb8efdd-1829-4851-8f49-00af1f40799b"}},{"type":"GetParameter","id":"EID292d41a3-00b2-41ff-96bc-ef51a8d2d39b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID50ae7caf-f649-423a-bca6-4d33d57aa4a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID50ae7caf-f649-423a-bca6-4d33d57aa4a1"}},{"type":"GetParameter","id":"EIDeb36ab78-d9e6-4c35-89a6-2bbcb9f4724c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDb2b9fb1b-a176-49c2-93bf-75a075e055aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4dc29784-baf2-41e8-a403-45fb115bd754","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID4dc29784-baf2-41e8-a403-45fb115bd754"}},{"type":"Error","id":"EIDc72f729e-cfcd-4d8c-8958-53fa39117337","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDc72f729e-cfcd-4d8c-8958-53fa39117337"}},{"type":"GetParameter","id":"EID427a4a20-3fb6-4cbf-92ea-c2f7a788e17e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID03cbf5c1-90af-41cb-abbc-b9286fce0eb6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe0221b76-358f-42cb-9196-021999801d7c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDe0221b76-358f-42cb-9196-021999801d7c"}},{"type":"ServiceResponse","id":"EID1ef30eda-53cf-42e7-a1c8-98e3eb8e07de","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID1ef30eda-53cf-42e7-a1c8-98e3eb8e07de"}},{"type":"GetParameter","id":"EID35f51a87-741b-4205-94fb-23f09d99dd8b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID33e26957-73c8-434b-a179-0bcecd8a7246","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID33e26957-73c8-434b-a179-0bcecd8a7246"}},{"type":"ServiceEndpoint","id":"EIDa6688671-2d81-4e14-a3af-f77c37ebc02a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5c033fbd-c12c-4a76-b1ed-558e47c3ed7d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDe38a3057-6246-40da-b612-d6d318003e4b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDf292bfab-8f46-462c-b5ff-716314c47836","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDf292bfab-8f46-462c-b5ff-716314c47836"}},{"type":"GetParameter","id":"EID264b6649-41d3-42c3-a66d-9626511660aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID40ba1c55-82d4-4d2a-850b-bcbfdf145afd","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID40ba1c55-82d4-4d2a-850b-bcbfdf145afd"}},{"type":"ServiceResponse","id":"EIDf8f94c19-e4b7-4cd5-a872-5e78c32482a4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDf8f94c19-e4b7-4cd5-a872-5e78c32482a4"}},{"type":"ServiceResponse","id":"EID7b68aa6b-2907-4ca0-bab5-8bfefe9b2d14","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID7b68aa6b-2907-4ca0-bab5-8bfefe9b2d14"}},{"type":"GetParameter","id":"EIDbbe7ee4e-cae9-42b0-844f-6e6a65487ab5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDe17e4f52-adb9-4d35-88dd-e580aa13f4de","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDe17e4f52-adb9-4d35-88dd-e580aa13f4de"}},{"type":"Error","id":"EID3abc2927-220e-43ee-85b9-a5134f5e08eb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID3abc2927-220e-43ee-85b9-a5134f5e08eb"}},{"type":"ServiceResponse","id":"EID27080af2-f0cc-44ba-afd7-289e42ada530","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID27080af2-f0cc-44ba-afd7-289e42ada530"}},{"type":"ServiceEndpoint","id":"EID1e132c8e-1499-4a2b-8661-ffea6271922c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID0bf3c384-c140-4efb-a1f9-81f1e0c416fd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa8e70adf-16da-4b81-aea9-f59a5619954b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDa8e70adf-16da-4b81-aea9-f59a5619954b"}},{"type":"ServiceResponse","id":"EID87af0410-82d3-45f7-91ea-731d5bd23e71","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID87af0410-82d3-45f7-91ea-731d5bd23e71"}},{"type":"ServiceEndpoint","id":"EID67972189-5964-4d09-8191-d1752c7e1a31","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID17ac865b-dd16-4c43-b393-356d1b704fe3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID71929f44-4f2b-4eaf-bcce-e18ed32ea996","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6bc1321e-e947-4c4d-88dc-6017e9e3162c","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID6bc1321e-e947-4c4d-88dc-6017e9e3162c"}},{"type":"ServiceEndpoint","id":"EID3c173314-b83e-454b-a803-ed349faf2816","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDeb21b3b4-c277-4bd6-9a09-3538fe42bb10","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDeb21b3b4-c277-4bd6-9a09-3538fe42bb10"}},{"type":"Message","id":"EID43c47a68-115f-47ae-8fe7-117a40fa5045","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID43c47a68-115f-47ae-8fe7-117a40fa5045"}},{"type":"ServiceEndpoint","id":"EID48e7a0ef-f2b2-4046-b96e-9b6c0ee7e36a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Error","id":"EID012f3900-c11e-41ed-a12a-c77c0d343828","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID012f3900-c11e-41ed-a12a-c77c0d343828"}},{"type":"Message","id":"EID4b4625ec-97ee-4ab5-b9e6-6ec07fc99b82","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID4b4625ec-97ee-4ab5-b9e6-6ec07fc99b82"}},{"type":"Message","id":"EID417c55ee-0fd8-47b8-a0f4-44a7a7e69993","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID417c55ee-0fd8-47b8-a0f4-44a7a7e69993"}},{"type":"GetParameter","id":"EIDb8092433-bff2-4348-8375-d48395676819","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID7690cb8e-8760-4669-955a-8b9e9d95da4a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID7690cb8e-8760-4669-955a-8b9e9d95da4a"}},{"type":"ServiceEndpoint","id":"EID197f3b4a-2302-4809-8e00-ffe9307d93b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID757f8fc8-3fac-46e0-9a70-215c51ebc2a4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID66b89ebe-30d1-4fc5-b1a5-4e61db80d35c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID66b89ebe-30d1-4fc5-b1a5-4e61db80d35c"}},{"type":"ServiceResponse","id":"EID190693d4-53ee-443a-a947-64d53ec43239","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID190693d4-53ee-443a-a947-64d53ec43239"}},{"type":"GetParameter","id":"EID74718bdc-6027-4678-ac7d-327bfe900a9a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDf9c2caa9-4bb4-4d3d-92fd-7ce66d3afd95","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2cdd0b68-057e-444b-89d2-bc0772ed682d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa1104bb7-f628-4eae-b571-a642fdc772a6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID159d47f7-1338-4cde-8b95-046f0b114d7c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID159d47f7-1338-4cde-8b95-046f0b114d7c"}},{"type":"GetParameter","id":"EIDc2bcf4fc-6724-4f21-ac0d-6e7889581038","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID44d765e1-a3bb-468b-921c-e2a22401deb5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID44d765e1-a3bb-468b-921c-e2a22401deb5"}},{"type":"ServiceEndpoint","id":"EIDfbca3e7d-f60a-4728-a24c-999720585537","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID14c554f4-f69f-4ea0-99d0-80a701efb793","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID14c554f4-f69f-4ea0-99d0-80a701efb793"}},{"type":"ServiceResponse","id":"EID04d981b6-32b7-43b7-a0c8-301684619577","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID04d981b6-32b7-43b7-a0c8-301684619577"}},{"type":"ServiceEndpoint","id":"EID5eafd656-aca1-47af-955c-cae65e1ad4ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDbd59d13a-72ee-4d91-ba79-c936caf08799","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDbd59d13a-72ee-4d91-ba79-c936caf08799"}},{"type":"ServiceEndpoint","id":"EID3f5f3c37-4e2d-4f20-aa88-77f3a144956f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDb40e3f90-98d1-4597-988b-14dea2cc9053","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDc9164c13-e3e0-4f29-a0c2-c28ac3783945","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0b7a9946-0376-4fb6-b066-78258e4c34b4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID0b7a9946-0376-4fb6-b066-78258e4c34b4"}},{"type":"ServiceResponse","id":"EID7ce9bfd2-958c-44fe-86c2-77222fd6a15f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID7ce9bfd2-958c-44fe-86c2-77222fd6a15f"}},{"type":"Message","id":"EID7ae95a25-5531-4c31-980e-86dd083b8ff2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID7ae95a25-5531-4c31-980e-86dd083b8ff2"}},{"type":"Message","id":"EID0049f189-edf1-49b0-935c-6939072aaf12","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID0049f189-edf1-49b0-935c-6939072aaf12"}},{"type":"GetParameter","id":"EID69d1566e-0b9e-4e79-96a8-7ef22ebe3e86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4b99ba86-0070-4996-af33-8a234635258b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID4b99ba86-0070-4996-af33-8a234635258b"}},{"type":"Message","id":"EIDeaa49509-20b8-4011-9e31-b21933eedce5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDeaa49509-20b8-4011-9e31-b21933eedce5"}},{"type":"ServiceEndpoint","id":"EID25180a38-06ac-4ff5-8e8e-992bbcb6edbf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID96b2bef8-67b1-47fb-8d4f-c9ae8d4bc432","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID50f18df1-cd33-47c6-8194-d796aeb5c395","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID50f18df1-cd33-47c6-8194-d796aeb5c395"}},{"type":"ServiceResponse","id":"EIDc2ddccc2-2d17-4d25-9ec8-ad286bbf98bd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDc2ddccc2-2d17-4d25-9ec8-ad286bbf98bd"}},{"type":"Error","id":"EID92e7b60a-6389-49b8-89ce-177169ff0118","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID92e7b60a-6389-49b8-89ce-177169ff0118"}},{"type":"ServiceResponse","id":"EID1b946160-7530-40af-83c7-dabb2920b743","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID1b946160-7530-40af-83c7-dabb2920b743"}},{"type":"GetParameter","id":"EID1e6e5666-45ff-4969-8dcd-663f31f02c6e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID826e6c21-d4d0-44a1-9cf1-6ebf817eda63","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDec217907-6b15-462d-9ee5-f9ada32e9186","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID26d45c4d-3fb6-4686-861e-6c7697cc6d72","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EID26d45c4d-3fb6-4686-861e-6c7697cc6d72"}},{"type":"ServiceResponse","id":"EIDc78bd75c-0121-4df9-8f58-b92bf3541d4d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8a94d51a-deb2-4732-8f5a-45330d3ce573/Attachments/EIDc78bd75c-0121-4df9-8f58-b92bf3541d4d"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:08:19Z","duration":14490,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:09:01.060 [print] EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:09:01.060 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:09:01.060 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:09:01.060 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:09:01.060 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:09:01.060 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:09:01.060 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID6d8141b2-7a83-4a3e-8fd0-e6af0ea0a09e/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.016
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:09:01.084 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:09:01.084 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.005
0.568
* print "testing url:" + metadata.url 0.000
11:14:01.043 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 0.568
11:14:01.044 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:01.612 response time in milliseconds: 567.40
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:01 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223AC94008691
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.598
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.598
11:14:01.619 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:02.213 response time in milliseconds: 593.40
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:01 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223ACB590A587
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:14:02.214 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.486
* print "testing url:" + metadata.url 0.000
11:09:01.123 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.486
11:09:01.123 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:01.609 response time in milliseconds: 485.28
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 6231
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:09:01 GMT
1 < Etag: "b86e14386658017070838b55827b24a4-1"
1 < Last-Modified: Thu, 16 Apr 2020 04:22:44 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422366C3431FE3
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.387
Given url metadata.url 0.000
When method HEAD 0.386
11:09:01.621 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:02.007 response time in milliseconds: 385.90
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 6231
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:09:01 GMT
1 < Etag: "b86e14386658017070838b55827b24a4-1"
1 < Last-Modified: Thu, 16 Apr 2020 04:22:44 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422366DB06C689
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.929
* print "testing url:" + metadata.url 0.000
11:07:04.488 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 1.929
11:07:04.490 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:06.417 response time in milliseconds: 1926.67
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4327
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:07:06 GMT
1 < Etag: "2b808852de163596115b571d04ab8e33-1"
1 < Last-Modified: Tue, 26 Nov 2019 15:47:04 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642234BE4EA4F36
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
1.381
Given url metadata.url 0.000
When method HEAD 1.380
11:07:06.432 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:07.808 response time in milliseconds: 1375.28
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4327
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:07:07 GMT
1 < Etag: "2b808852de163596115b571d04ab8e33-1"
1 < Last-Modified: Tue, 26 Nov 2019 15:47:04 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642234C3E456EAA
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.390
* print "testing url:" + metadata.url 0.000
11:09:23.758 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.390
11:09:23.759 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:24.149 response time in milliseconds: 389.94
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:09:23 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.393
Given url metadata.url 0.000
When method HEAD 0.392
11:09:24.153 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:24.545 response time in milliseconds: 391.96
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:09:24 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
2.323
* print "testing url:" + metadata.url 0.000
11:16:29.438 [print] testing url:https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 2.323
11:16:29.438 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:31.761 response time in milliseconds: 2322.70
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:31 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.414
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.412
11:16:31.764 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:32.177 response time in milliseconds: 412.14
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:32 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:32.178 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.986
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:48.992 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 0.986
11:16:48.992 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities"}}}

11:16:49.978 response time in milliseconds: 984.69
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:49 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883809919","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:49.978 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
49.370
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:08:24.413 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 14.475
11:08:24.416 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:08:38.881 response time in milliseconds: 13690.46
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:08:38 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:08:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd.json","testRuns":{"TestRun":{"id":"EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:32.481Z","testTasks":{"TestTask":{"id":"EID90f06846-3c90-45fd-9c06-44882be11fd2","parent":{"ref":"EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDfe3f0868-1fdd-43bd-a2dd-352092991907"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDfe3f0868-1fdd-43bd-a2dd-352092991907","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:24.864Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:31.586Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.001
* print response.EtfItemCollection.testRuns.TestRun.id 0.009
11:08:38.900 [print] EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:08:38.901 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:08:38.902 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:08:38.902 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:08:38.903 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:08:38.905 [print] statuspath TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd
* print 'progresspath ', progresspath 0.000
11:08:38.905 [print] progresspath  TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/progress
Given path progresspath 0.000
When method GET 3.041
11:08:38.907 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:41.946 response time in milliseconds: 3038.75
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:08:41 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["28.10.2020 11:08:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:32 UTC 2020)","28.10.2020 11:08:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:32 - Preparing 1 Test Task:","28.10.2020 11:08:32 -  TestTask 1 (90f06846-3c90-45fd-9c06-44882be11fd2)","28.10.2020 11:08:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:32 -  with parameters: ","28.10.2020 11:08:32 - etf.testcases = *","28.10.2020 11:08:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:32 - Setting state to CREATED","28.10.2020 11:08:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:32 - Starting TestRun.4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd at 2020-10-28T11:08:34Z","28.10.2020 11:08:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:34 - Project Properties: ","28.10.2020 11:08:34 - etf.testcases - * ","28.10.2020 11:08:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:34 - username -  ","28.10.2020 11:08:34 - authUser -  ","28.10.2020 11:08:34 - authMethod - basic ","28.10.2020 11:08:34 - TestRunTask initialized","28.10.2020 11:08:38 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:38 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:08:41.947 [print] {
  "val": "41",
  "max": "42",
  "log": [
    "28.10.2020 11:08:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:32 UTC 2020)",
    "28.10.2020 11:08:32 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:08:32 - Preparing 1 Test Task:",
    "28.10.2020 11:08:32 -  TestTask 1 (90f06846-3c90-45fd-9c06-44882be11fd2)",
    "28.10.2020 11:08:32 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:08:32 -  with parameters: ",
    "28.10.2020 11:08:32 - etf.testcases = *",
    "28.10.2020 11:08:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:08:32 - Setting state to CREATED",
    "28.10.2020 11:08:32 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:08:32 - Starting TestRun.4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd at 2020-10-28T11:08:34Z",
    "28.10.2020 11:08:34 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:08:34 - Project Properties: ",
    "28.10.2020 11:08:34 - etf.testcases - * ",
    "28.10.2020 11:08:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:08:34 - username -  ",
    "28.10.2020 11:08:34 - authUser -  ",
    "28.10.2020 11:08:34 - authMethod - basic ",
    "28.10.2020 11:08:34 - TestRunTask initialized",
    "28.10.2020 11:08:38 ERROR Response status code:500 is not in acceptable list of status codes",
    "28.10.2020 11:08:38 ERROR Assertion failed with error 'TR.unexpectedHtml'"
  ]
}
Given path progresspath 0.000
When method GET 18.625
11:08:41.947 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:42.479 response time in milliseconds: 530.82
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:08:42 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["28.10.2020 11:08:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:32 UTC 2020)","28.10.2020 11:08:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:32 - Preparing 1 Test Task:","28.10.2020 11:08:32 -  TestTask 1 (90f06846-3c90-45fd-9c06-44882be11fd2)","28.10.2020 11:08:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:32 -  with parameters: ","28.10.2020 11:08:32 - etf.testcases = *","28.10.2020 11:08:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:32 - Setting state to CREATED","28.10.2020 11:08:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:32 - Starting TestRun.4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd at 2020-10-28T11:08:34Z","28.10.2020 11:08:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:34 - Project Properties: ","28.10.2020 11:08:34 - etf.testcases - * ","28.10.2020 11:08:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:34 - username -  ","28.10.2020 11:08:34 - authUser -  ","28.10.2020 11:08:34 - authMethod - basic ","28.10.2020 11:08:34 - TestRunTask initialized","28.10.2020 11:08:38 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:38 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

11:08:42.480 retry condition not satisfied: response.val == response.max
11:08:42.480 sleeping before retry #1
11:08:47.481 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:48.010 response time in milliseconds: 528.86
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:08:47 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"117","max":"118","log":["28.10.2020 11:08:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:32 UTC 2020)","28.10.2020 11:08:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:32 - Preparing 1 Test Task:","28.10.2020 11:08:32 -  TestTask 1 (90f06846-3c90-45fd-9c06-44882be11fd2)","28.10.2020 11:08:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:32 -  with parameters: ","28.10.2020 11:08:32 - etf.testcases = *","28.10.2020 11:08:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:32 - Setting state to CREATED","28.10.2020 11:08:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:32 - Starting TestRun.4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd at 2020-10-28T11:08:34Z","28.10.2020 11:08:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:34 - Project Properties: ","28.10.2020 11:08:34 - etf.testcases - * ","28.10.2020 11:08:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:34 - username -  ","28.10.2020 11:08:34 - authUser -  ","28.10.2020 11:08:34 - authMethod - basic ","28.10.2020 11:08:34 - TestRunTask initialized","28.10.2020 11:08:38 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:38 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:44 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:46 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:08:46 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes"]}

11:08:48.011 retry condition not satisfied: response.val == response.max
11:08:48.011 sleeping before retry #2
11:08:53.012 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:53.563 response time in milliseconds: 550.09
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:08:53 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:08:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:32 UTC 2020)","28.10.2020 11:08:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:32 - Preparing 1 Test Task:","28.10.2020 11:08:32 -  TestTask 1 (90f06846-3c90-45fd-9c06-44882be11fd2)","28.10.2020 11:08:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:32 -  with parameters: ","28.10.2020 11:08:32 - etf.testcases = *","28.10.2020 11:08:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:32 - Setting state to CREATED","28.10.2020 11:08:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:32 - Starting TestRun.4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd at 2020-10-28T11:08:34Z","28.10.2020 11:08:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:34 - Project Properties: ","28.10.2020 11:08:34 - etf.testcases - * ","28.10.2020 11:08:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:08:34 - username -  ","28.10.2020 11:08:34 - authUser -  ","28.10.2020 11:08:34 - authMethod - basic ","28.10.2020 11:08:34 - TestRunTask initialized","28.10.2020 11:08:38 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:08:38 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:44 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:08:46 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:08:46 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:48 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:48 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:08:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:48 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:49 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:49 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:08:49 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:08:49 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:08:53.563 retry condition not satisfied: response.val == response.max
11:08:53.563 sleeping before retry #3
11:08:58.564 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:00.572 response time in milliseconds: 2007.40
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:09:00 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:09:00.573 retry condition satisfied
* print response 0.000
11:09:00.573 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 13.177
11:09:00.573 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:13.740 response time in milliseconds: 12213.74
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:09:12 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:09:00 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd.json","testRuns":{"TestRun":{"id":"EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:32.481Z","testTasks":{"TestTask":{"id":"EID90f06846-3c90-45fd-9c06-44882be11fd2","parent":{"ref":"EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDfe3f0868-1fdd-43bd-a2dd-352092991907"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDfe3f0868-1fdd-43bd-a2dd-352092991907","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:24.864Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:31.586Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e","testObject":{"ref":"EIDfe3f0868-1fdd-43bd-a2dd-352092991907"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee52ce0-0175-1000-04c5-4ebd430e6078","testCaseResults":{"TestCaseResult":[{"id":"EID6ee52ce0-0175-1000-d141-2290faf1b766","testStepResults":{"TestStepResult":[{"id":"EID6ee52ce8-0175-1000-41a3-64c330e05147","parent":{"ref":"EID6ee52ce0-0175-1000-d141-2290faf1b766"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:08:34Z","duration":175,"status":"PASSED"},{"id":"EID6ee52d97-0175-1000-221f-c3939a7a00c8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52e4d-0175-1000-4d1a-9ebd397da92e","parent":{"ref":"EID6ee52d97-0175-1000-221f-c3939a7a00c8"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:08:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee52e4d-0175-1000-80a5-78b326256ce7","parent":{"ref":"EID6ee52d97-0175-1000-221f-c3939a7a00c8"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:08:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee52e4d-0175-1000-e231-c6bef55367e8","parent":{"ref":"EID6ee52d97-0175-1000-221f-c3939a7a00c8"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:08:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee52e4d-0175-1000-dea5-7566bd9dc31a","parent":{"ref":"EID6ee52d97-0175-1000-221f-c3939a7a00c8"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:08:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3d405c42-254b-48e1-aab5-43cfb03aa075"},{"ref":"EID18c15dcd-8b2d-4636-b53b-f91c6c77bb0a"},{"ref":"EID129323c6-a0b6-4841-9a6e-8c91fcb752e9"}]},"parent":{"ref":"EID6ee52ce0-0175-1000-d141-2290faf1b766"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:08:34Z","duration":67,"status":"PASSED"}]},"parent":{"ref":"EID6ee52ce0-0175-1000-04c5-4ebd430e6078"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:08:34Z","duration":373,"status":"PASSED"},{"id":"EID6ee52e56-0175-1000-aeed-38c72b512370","testStepResults":{"TestStepResult":{"id":"EID6ee52e56-0175-1000-2c7e-ecbe15f2ce55","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52f4e-0175-1000-5550-ef243a1a2691","parent":{"ref":"EID6ee52e56-0175-1000-2c7e-ecbe15f2ce55"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee52f4e-0175-1000-ccf0-0e5f1171afdf","parent":{"ref":"EID6ee52e56-0175-1000-2c7e-ecbe15f2ce55"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee52f4e-0175-1000-dc4c-71155c1164be","parent":{"ref":"EID6ee52e56-0175-1000-2c7e-ecbe15f2ce55"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDab0747ba-ff28-4a7e-8fde-1ca7ed3bcbe0"},{"ref":"EID0dab4842-6ccf-4b19-bdd6-37dd82b0e91c"},{"ref":"EIDa2d07460-3d7b-4357-9603-30fafb59d764"}]},"parent":{"ref":"EID6ee52e56-0175-1000-aeed-38c72b512370"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:08:34Z","duration":156,"status":"PASSED"}},"parent":{"ref":"EID6ee52ce0-0175-1000-04c5-4ebd430e6078"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:08:34Z","duration":249,"status":"PASSED"}]},"parent":{"ref":"EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:08:34Z","duration":623,"status":"PASSED"},{"id":"EID6ee52f4f-0175-1000-eaad-4fca9f922948","testCaseResults":{"TestCaseResult":[{"id":"EID6ee52f4f-0175-1000-fd24-87af1010571e","testStepResults":{"TestStepResult":[{"id":"EID6ee52f4f-0175-1000-7f4d-85e4cc1a119a","parent":{"ref":"EID6ee52f4f-0175-1000-fd24-87af1010571e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:08:35Z","duration":148,"status":"PASSED"},{"id":"EID6ee52f4f-0175-1000-94c8-dd04350616eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee52fe8-0175-1000-251f-92b339e669ce","parent":{"ref":"EID6ee52f4f-0175-1000-94c8-dd04350616eb"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee52fe8-0175-1000-06c1-e9817cbd48fc","parent":{"ref":"EID6ee52f4f-0175-1000-94c8-dd04350616eb"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee52fe8-0175-1000-4b86-ab6658ccc481","parent":{"ref":"EID6ee52f4f-0175-1000-94c8-dd04350616eb"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee52fe8-0175-1000-6345-d396c6dcae9f","parent":{"ref":"EID6ee52f4f-0175-1000-94c8-dd04350616eb"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee52fe8-0175-1000-d3c6-7a971dfef4e7","parent":{"ref":"EID6ee52f4f-0175-1000-94c8-dd04350616eb"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a70ce77-55fa-4d03-b82e-cf08689606a2"},{"ref":"EID33f866dd-fa83-488c-be77-33b630f417c8"},{"ref":"EIDda67f46c-d752-476c-9be2-797fb6781bcf"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-fd24-87af1010571e"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:08:35Z","duration":49,"status":"PASSED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:08:35Z","duration":153,"status":"PASSED"},{"id":"EID6ee52fe8-0175-1000-59c9-259dd21f6fac","testStepResults":{"TestStepResult":[{"id":"EID6ee52fe8-0175-1000-baf8-a2d2be863900","attachments":{"attachment":[{"ref":"EID12d99314-b287-48a4-98c8-ed878f3ee06e"},{"ref":"EID1586ef60-e22c-4012-bb11-bc7dcfc43d33"}]},"parent":{"ref":"EID6ee52fe8-0175-1000-59c9-259dd21f6fac"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:08:35Z","duration":123,"status":"PASSED"},{"id":"EID6ee5308e-0175-1000-474a-7df4ebff71d6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5316d-0175-1000-4979-6559330a5308","parent":{"ref":"EID6ee5308e-0175-1000-474a-7df4ebff71d6"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee5316d-0175-1000-41e6-9d6cdfdd5144","parent":{"ref":"EID6ee5308e-0175-1000-474a-7df4ebff71d6"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee5316d-0175-1000-50b1-7121266c4633","parent":{"ref":"EID6ee5308e-0175-1000-474a-7df4ebff71d6"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee5316d-0175-1000-c434-77e73356ce5f","parent":{"ref":"EID6ee5308e-0175-1000-474a-7df4ebff71d6"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:08:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcb0e6f31-274c-444f-9b8b-7173a01bfd3e"},{"ref":"EID8de00516-a1ff-40a5-acc9-b83091103d35"},{"ref":"EIDa62f1d9c-ecf4-4ada-b182-04dffebb46c7"}]},"parent":{"ref":"EID6ee52fe8-0175-1000-59c9-259dd21f6fac"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:08:35Z","duration":95,"status":"PASSED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:08:35Z","duration":389,"status":"PASSED"},{"id":"EID6ee5316d-0175-1000-99ff-1e205503aa99","testStepResults":{"TestStepResult":[{"id":"EID6ee5316d-0175-1000-50bf-2b3aa735c4ed","attachments":{"attachment":[{"ref":"EID841026c7-b9fb-4c35-9536-8f23f7466224"},{"ref":"EID1d3d7dfc-5d35-4687-b820-70c928917011"}]},"parent":{"ref":"EID6ee5316d-0175-1000-99ff-1e205503aa99"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:08:35Z","duration":232,"status":"PASSED"},{"id":"EID6ee532a4-0175-1000-9ce1-98ca7bc8cc6f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee53345-0175-1000-faee-005b386f005e","parent":{"ref":"EID6ee532a4-0175-1000-9ce1-98ca7bc8cc6f"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee53345-0175-1000-73ac-c1d864a50a77","parent":{"ref":"EID6ee532a4-0175-1000-9ce1-98ca7bc8cc6f"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee53345-0175-1000-8508-dab84c498166","parent":{"ref":"EID6ee532a4-0175-1000-9ce1-98ca7bc8cc6f"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee53345-0175-1000-6d34-c64ab2c627b9","parent":{"ref":"EID6ee532a4-0175-1000-9ce1-98ca7bc8cc6f"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee53345-0175-1000-a509-b9e2f33c08cb","parent":{"ref":"EID6ee532a4-0175-1000-9ce1-98ca7bc8cc6f"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda6d9319-d285-472c-aa35-4326dd231cbb"},{"ref":"EIDf7e66833-8ba6-4f40-abe3-6b6e185a2b27"},{"ref":"EID75830ec0-20c4-4400-abb3-e738e4e09606"}]},"parent":{"ref":"EID6ee5316d-0175-1000-99ff-1e205503aa99"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:08:35Z","duration":31,"status":"PASSED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:08:35Z","duration":472,"status":"PASSED"},{"id":"EID6ee53345-0175-1000-634c-b3b016688473","testStepResults":{"TestStepResult":[{"id":"EID6ee53345-0175-1000-d9d2-3176f897fb7f","attachments":{"attachment":[{"ref":"EID0c39ae9e-86bd-4284-87ca-a1a827fb99c6"},{"ref":"EID99b53cad-f9b0-44d2-b557-9973b41c05f9"}]},"parent":{"ref":"EID6ee53345-0175-1000-634c-b3b016688473"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:08:36Z","duration":131,"status":"PASSED"},{"id":"EID6ee53438-0175-1000-89e3-8ca3fe57724d","parent":{"ref":"EID6ee53345-0175-1000-634c-b3b016688473"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee53438-0175-1000-0265-fb36d6f5f3f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee534fb-0175-1000-dd3f-a199a5a217d0","parent":{"ref":"EID6ee53438-0175-1000-0265-fb36d6f5f3f1"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee534fb-0175-1000-ff3a-077243c9949f","parent":{"ref":"EID6ee53438-0175-1000-0265-fb36d6f5f3f1"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee534fb-0175-1000-d790-31db20f69719","parent":{"ref":"EID6ee53438-0175-1000-0265-fb36d6f5f3f1"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee534fb-0175-1000-0cb9-afaf4cc76fef","parent":{"ref":"EID6ee53438-0175-1000-0265-fb36d6f5f3f1"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ab3870d-04bb-490d-a383-d0fad690608a"},{"ref":"EID496f06a5-f434-4602-b42a-c51e11d3489a"},{"ref":"EIDe7ae59a8-4ad8-450a-8a8e-ae0928c82b28"}]},"parent":{"ref":"EID6ee53345-0175-1000-634c-b3b016688473"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:08:36Z","duration":102,"status":"PASSED"},{"id":"EID6ee534fb-0175-1000-1309-98ce67fc6bc9","attachments":{"attachment":{"ref":"EIDb8f42376-94ae-4ff1-b6dd-ed6bd1f527f8"}},"parent":{"ref":"EID6ee53345-0175-1000-634c-b3b016688473"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:08:36Z","duration":1,"status":"PASSED"},{"id":"EID6ee53513-0175-1000-2419-ef848121193f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee535c0-0175-1000-e640-8b790f22343f","parent":{"ref":"EID6ee53513-0175-1000-2419-ef848121193f"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee535c0-0175-1000-8eac-c7c93448b33a","parent":{"ref":"EID6ee53513-0175-1000-2419-ef848121193f"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee535c0-0175-1000-90bd-2a46bce25a09","parent":{"ref":"EID6ee53513-0175-1000-2419-ef848121193f"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee535c0-0175-1000-6665-2fef012e8f6d","parent":{"ref":"EID6ee53513-0175-1000-2419-ef848121193f"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee535c0-0175-1000-ee06-eb0b4dc54d97","parent":{"ref":"EID6ee53513-0175-1000-2419-ef848121193f"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:08:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID63f6d945-e17b-4213-a1bf-6708a2faf411"},{"ref":"EID46f61fe4-3967-41b1-9410-775d69662e21"},{"ref":"EID5b1b8847-e7f4-4bdc-bd76-9173d464e8e4"}]},"parent":{"ref":"EID6ee53345-0175-1000-634c-b3b016688473"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:08:36Z","duration":43,"status":"PASSED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:08:36Z","duration":635,"status":"PASSED"},{"id":"EID6ee535c0-0175-1000-0e5e-39a89900b319","testStepResults":{"TestStepResult":[{"id":"EID6ee535c0-0175-1000-d9f6-9f43fb9f4931","attachments":{"attachment":[{"ref":"EIDb4c98fac-9ca0-4f0b-8d03-ff177585bc2a"},{"ref":"EID4e24e2ed-90b4-48d4-9a29-141b5e79df18"}]},"parent":{"ref":"EID6ee535c0-0175-1000-0e5e-39a89900b319"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:08:36Z","duration":110,"status":"PASSED"},{"id":"EID6ee53656-0175-1000-b63e-4ad3f09d554a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5379f-0175-1000-fa2c-1aa1d1f2cf2a","parent":{"ref":"EID6ee53656-0175-1000-b63e-4ad3f09d554a"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:08:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee5379f-0175-1000-d579-9193b966aa28","parent":{"ref":"EID6ee53656-0175-1000-b63e-4ad3f09d554a"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:08:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee5379f-0175-1000-c259-3dc8d2405755","parent":{"ref":"EID6ee53656-0175-1000-b63e-4ad3f09d554a"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:08:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee5379f-0175-1000-b605-16bcfe378f8c","parent":{"ref":"EID6ee53656-0175-1000-b63e-4ad3f09d554a"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:08:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe82c0c00-b194-4ff1-b354-ee51b80f0c62"},{"ref":"EID2652ae58-3645-4f08-9d9b-04e47ec403fd"},{"ref":"EID4d3b0704-5873-4c5f-beb1-b9d56113ec36"}]},"parent":{"ref":"EID6ee535c0-0175-1000-0e5e-39a89900b319"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:08:36Z","duration":182,"status":"PASSED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:08:36Z","duration":479,"status":"PASSED"},{"id":"EID6ee5379f-0175-1000-8bec-6953aa9edfb8","testStepResults":{"TestStepResult":[{"id":"EID6ee5379f-0175-1000-c33e-1273d11deed6","attachments":{"attachment":[{"ref":"EID731a5e67-a010-4afb-aea6-2762e3d5ec8d"},{"ref":"EID34d32479-0a99-40ee-a840-4a475a0fe183"}]},"parent":{"ref":"EID6ee5379f-0175-1000-8bec-6953aa9edfb8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:08:37Z","duration":197,"status":"PASSED"},{"id":"EID6ee5388f-0175-1000-09c0-9d1afe80547f","parent":{"ref":"EID6ee5379f-0175-1000-8bec-6953aa9edfb8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:08:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee5388f-0175-1000-67df-67155b78e7fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee53b4c-0175-1000-4e19-c7b968400333","parent":{"ref":"EID6ee5388f-0175-1000-67df-67155b78e7fd"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:08:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee53b4c-0175-1000-ff19-6656d56619e7","parent":{"ref":"EID6ee5388f-0175-1000-67df-67155b78e7fd"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:08:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee53b4c-0175-1000-d898-0a4869488d2b","parent":{"ref":"EID6ee5388f-0175-1000-67df-67155b78e7fd"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:08:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee53b4c-0175-1000-477e-44adfc4a9bfa","parent":{"ref":"EID6ee5388f-0175-1000-67df-67155b78e7fd"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:08:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID99eedc89-d4f6-4a18-a8e4-8625aed87e75"},{"ref":"EIDfe73886a-0d1e-4faa-8ffe-69ec80282d27"},{"ref":"EIDe60377a0-35db-4f36-9240-7cc7901fb011"}]},"parent":{"ref":"EID6ee5379f-0175-1000-8bec-6953aa9edfb8"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:08:37Z","duration":63,"status":"PASSED"},{"id":"EID6ee53b4c-0175-1000-8b34-f46e09820d42","attachments":{"attachment":{"ref":"EIDf1d9ad19-e306-4a7e-a958-d006b67fec16"}},"parent":{"ref":"EID6ee5379f-0175-1000-8bec-6953aa9edfb8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:08:38Z","duration":2,"status":"PASSED"},{"id":"EID6ee53b58-0175-1000-14b7-def077f97cf2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee53dbe-0175-1000-1509-fc9d749064c9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee53b58-0175-1000-14b7-def077f97cf2"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:08:38Z","duration":13,"status":"FAILED"},{"id":"EID6ee53dcb-0175-1000-c521-b63b33c2daf4","parent":{"ref":"EID6ee53b58-0175-1000-14b7-def077f97cf2"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:08:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee53dcb-0175-1000-f7cf-b8952f74e3bf","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee53b58-0175-1000-14b7-def077f97cf2"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:08:38Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDbdbd137e-ccba-4d35-b8b3-110fa52f06f8"},{"ref":"EID0ad58f3a-5694-45b4-b411-153f7228f99c"},{"ref":"EID25bcac62-4262-4331-983c-3ad27c98d886"}]},"parent":{"ref":"EID6ee5379f-0175-1000-8bec-6953aa9edfb8"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:08:38Z","duration":338,"status":"FAILED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:08:37Z","duration":1618,"status":"FAILED"},{"id":"EID6ee53dfd-0175-1000-7cac-461551d3e8e3","testStepResults":{"TestStepResult":[{"id":"EID6ee53dfd-0175-1000-2df9-9a2cbaa5c03f","attachments":{"attachment":[{"ref":"EID6ca6c7cc-1af0-4b0e-8d7b-8752306329b2"},{"ref":"EID271c2ac9-cdbf-421f-8f87-34752ef3b85a"}]},"parent":{"ref":"EID6ee53dfd-0175-1000-7cac-461551d3e8e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:08:38Z","duration":164,"status":"PASSED"},{"id":"EID6ee53ec8-0175-1000-f51d-18d2ed0174f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee54b21-0175-1000-0b4a-34537ee11139","parent":{"ref":"EID6ee53ec8-0175-1000-f51d-18d2ed0174f3"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54b21-0175-1000-1711-3e3f0c9bc47b","parent":{"ref":"EID6ee53ec8-0175-1000-f51d-18d2ed0174f3"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54b21-0175-1000-e4f8-4c5095284064","parent":{"ref":"EID6ee53ec8-0175-1000-f51d-18d2ed0174f3"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54b21-0175-1000-ad5e-0874c883d90e","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee53ec8-0175-1000-f51d-18d2ed0174f3"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID1a980f68-c441-4765-bc5f-e3267d1ff7ff"},{"ref":"EID3316eaaf-a23e-464b-b34c-12bdf8ae1f28"},{"ref":"EIDd25545c1-d893-4f5f-b4e9-33e5cf8fa9e6"}]},"parent":{"ref":"EID6ee53dfd-0175-1000-7cac-461551d3e8e3"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:08:38Z","duration":2888,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:08:38Z","duration":3365,"status":"PASSED_MANUAL"},{"id":"EID6ee54b22-0175-1000-913d-3b515fac2773","testStepResults":{"TestStepResult":{"id":"EID6ee54b22-0175-1000-a7c6-330cbea772cb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee54c98-0175-1000-d4a9-642281414c86","parent":{"ref":"EID6ee54b22-0175-1000-a7c6-330cbea772cb"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54c98-0175-1000-38b7-d87e578a63f4","parent":{"ref":"EID6ee54b22-0175-1000-a7c6-330cbea772cb"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54c98-0175-1000-5623-c13bbe76f1e3","parent":{"ref":"EID6ee54b22-0175-1000-a7c6-330cbea772cb"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54c98-0175-1000-f629-d9c172d909bd","parent":{"ref":"EID6ee54b22-0175-1000-a7c6-330cbea772cb"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5d84bdf-8483-47f2-b00f-ba71fb70ef6e"},{"ref":"EIDc5b110d6-7f81-4018-9db1-e4e4ff8a7085"},{"ref":"EID43272bac-37b5-4048-8ebf-07a811fe9047"}]},"parent":{"ref":"EID6ee54b22-0175-1000-913d-3b515fac2773"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:08:42Z","duration":76,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:08:42Z","duration":374,"status":"PASSED"},{"id":"EID6ee54c98-0175-1000-ed45-cf00dde2ece5","testStepResults":{"TestStepResult":{"id":"EID6ee54c98-0175-1000-3df5-9c338868fe66","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee54d5f-0175-1000-d215-56460fdf7834","parent":{"ref":"EID6ee54c98-0175-1000-3df5-9c338868fe66"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54d5f-0175-1000-cc74-41c102ca588b","parent":{"ref":"EID6ee54c98-0175-1000-3df5-9c338868fe66"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54d5f-0175-1000-e531-db0f90177536","parent":{"ref":"EID6ee54c98-0175-1000-3df5-9c338868fe66"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee54d5f-0175-1000-76f4-bf3f17dd0bba","parent":{"ref":"EID6ee54c98-0175-1000-3df5-9c338868fe66"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:08:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe213a84c-4aec-44b0-bcbb-a1d9fa092c51"},{"ref":"EID86f14b58-5679-46c9-aed4-ccf0742c67b6"},{"ref":"EID8993ac53-fd78-4221-8bc4-7ed3879fd618"}]},"parent":{"ref":"EID6ee54c98-0175-1000-ed45-cf00dde2ece5"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:08:42Z","duration":104,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:08:42Z","duration":208,"status":"PASSED"},{"id":"EID6ee54d68-0175-1000-7ca3-b3a19810d0c4","testStepResults":{"TestStepResult":{"id":"EID6ee54d68-0175-1000-b512-7516ff033e46","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDd0ecb0b1-9893-4ae5-a4ad-7a6c41d7969b"},{"ref":"EID1b92d38c-4d89-4b39-b913-131cfd16038a"},{"ref":"EID044d35c4-10fb-4787-98c4-72ebeb8f6a86"},{"ref":"EIDcea740c3-ea2c-478b-8b49-2e11f7d5f3f9"},{"ref":"EIDc1517eb5-f305-497f-b260-242531de7e6e"},{"ref":"EIDbf7c67c9-5d8f-4975-b128-4f9058ea1a22"},{"ref":"EID1e6c27b2-5787-487e-8087-c2693857e9cf"},{"ref":"EIDcdbc0433-8245-424f-b1ff-8b531d5040ec"},{"ref":"EID87734727-7f0b-4366-8d96-5eda7fd05347"}]},"parent":{"ref":"EID6ee54d68-0175-1000-7ca3-b3a19810d0c4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:08:42Z","duration":1412,"status":"SKIPPED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:08:42Z","duration":1507,"status":"SKIPPED"},{"id":"EID6ee55350-0175-1000-a7d7-0bb6d0abff20","testStepResults":{"TestStepResult":{"id":"EID6ee55350-0175-1000-5a4a-2e2984c2a85a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55438-0175-1000-052d-580ae48ac327","parent":{"ref":"EID6ee55350-0175-1000-5a4a-2e2984c2a85a"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55438-0175-1000-fea5-a8f25e345050","parent":{"ref":"EID6ee55350-0175-1000-5a4a-2e2984c2a85a"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55438-0175-1000-2133-fe1fc5bfb4c2","parent":{"ref":"EID6ee55350-0175-1000-5a4a-2e2984c2a85a"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55438-0175-1000-e834-0ee694c33843","parent":{"ref":"EID6ee55350-0175-1000-5a4a-2e2984c2a85a"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa2411980-2df6-4500-8401-747cdb02507b"},{"ref":"EID37e90eff-6588-4cbc-a116-9147f28e71d1"},{"ref":"EIDd9087d10-d162-45fb-9c39-6efb604f8911"}]},"parent":{"ref":"EID6ee55350-0175-1000-a7d7-0bb6d0abff20"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:08:44Z","duration":66,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:08:44Z","duration":232,"status":"PASSED"},{"id":"EID6ee55438-0175-1000-0337-343e794b3aa2","testStepResults":{"TestStepResult":{"id":"EID6ee55440-0175-1000-4187-fe2311afd0e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55573-0175-1000-60d4-5db99201eb2b","parent":{"ref":"EID6ee55440-0175-1000-4187-fe2311afd0e2"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55573-0175-1000-61da-0947f1d74587","parent":{"ref":"EID6ee55440-0175-1000-4187-fe2311afd0e2"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55573-0175-1000-d29f-677aedc388b0","parent":{"ref":"EID6ee55440-0175-1000-4187-fe2311afd0e2"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55573-0175-1000-5bf8-d1a16a9af587","parent":{"ref":"EID6ee55440-0175-1000-4187-fe2311afd0e2"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55573-0175-1000-f322-e8b932a90ce1","parent":{"ref":"EID6ee55440-0175-1000-4187-fe2311afd0e2"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee55573-0175-1000-d01e-1f86c9b5aecb","parent":{"ref":"EID6ee55440-0175-1000-4187-fe2311afd0e2"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:08:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcbd8b781-669d-45ea-9d02-b8d4e543f3ff"},{"ref":"EIDc62f3b16-bbbc-4aec-8ce0-676c7a95d49c"},{"ref":"EIDf226cc2d-7b1b-4c3b-850b-a62105ddcc28"}]},"parent":{"ref":"EID6ee55438-0175-1000-0337-343e794b3aa2"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:08:44Z","duration":82,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:08:44Z","duration":315,"status":"PASSED"},{"id":"EID6ee55573-0175-1000-37bb-0c0819437781","testStepResults":{"TestStepResult":{"id":"EID6ee55573-0175-1000-9c52-9d0570917d9f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55698-0175-1000-7c47-8494dc6c545b","parent":{"ref":"EID6ee55573-0175-1000-9c52-9d0570917d9f"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55698-0175-1000-e580-16bea18a25c9","parent":{"ref":"EID6ee55573-0175-1000-9c52-9d0570917d9f"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55698-0175-1000-17b1-13ae79c42c76","parent":{"ref":"EID6ee55573-0175-1000-9c52-9d0570917d9f"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55698-0175-1000-9aec-670ee7b598dd","parent":{"ref":"EID6ee55573-0175-1000-9c52-9d0570917d9f"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55698-0175-1000-1403-6286870a5687","parent":{"ref":"EID6ee55573-0175-1000-9c52-9d0570917d9f"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55698-0175-1000-f4d5-6f6fc18cfdcf","parent":{"ref":"EID6ee55573-0175-1000-9c52-9d0570917d9f"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID580b5fd4-596f-45a6-b2c3-30acc9195f50"},{"ref":"EID04204c10-f469-4a5f-93c5-d64fd7cba844"},{"ref":"EIDd791d598-13d9-403a-83bd-89d7bab045e3"}]},"parent":{"ref":"EID6ee55573-0175-1000-37bb-0c0819437781"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:08:44Z","duration":60,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:08:44Z","duration":327,"status":"PASSED"},{"id":"EID6ee556ba-0175-1000-09a4-3439b33cdaa6","testStepResults":{"TestStepResult":{"id":"EID6ee556ba-0175-1000-1788-c41ec9661dca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55764-0175-1000-9e3d-340efe265d45","parent":{"ref":"EID6ee556ba-0175-1000-1788-c41ec9661dca"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55764-0175-1000-6cd7-edfeb5564a3f","parent":{"ref":"EID6ee556ba-0175-1000-1788-c41ec9661dca"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55764-0175-1000-c57d-e3fce0eb455d","parent":{"ref":"EID6ee556ba-0175-1000-1788-c41ec9661dca"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee55764-0175-1000-0874-66bc60151040","parent":{"ref":"EID6ee556ba-0175-1000-1788-c41ec9661dca"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:08:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa8ae92fd-7990-4d40-b079-648d6596d71d"},{"ref":"EID08e5bdb4-b7a8-4e0e-8d08-9043b77d2382"},{"ref":"EID5045ea76-0f5d-4bee-852c-346bb3b07d21"}]},"parent":{"ref":"EID6ee556ba-0175-1000-09a4-3439b33cdaa6"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:08:45Z","duration":80,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:08:45Z","duration":170,"status":"PASSED"},{"id":"EID6ee55764-0175-1000-602f-6f701d8691e9","testStepResults":{"TestStepResult":[{"id":"EID6ee55764-0175-1000-86cc-b3335f064d0d","attachments":{"attachment":[{"ref":"EID1f5dc917-2daa-4e26-9baa-5423f2cc39e1"},{"ref":"EID7963e19d-003b-476a-916e-ff450a9b1710"},{"ref":"EIDcb4a5167-a142-48ce-892c-f7e177b3f6a3"},{"ref":"EIDd0b882d4-9150-418e-9edf-56b84f491702"}]},"parent":{"ref":"EID6ee55764-0175-1000-602f-6f701d8691e9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:08:45Z","duration":502,"status":"PASSED"},{"id":"EID6ee559c7-0175-1000-7d6c-664d753a1297","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55a78-0175-1000-ebb6-40110bf877ef","parent":{"ref":"EID6ee559c7-0175-1000-7d6c-664d753a1297"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55a78-0175-1000-5e6a-a431d5fcf7bd","parent":{"ref":"EID6ee559c7-0175-1000-7d6c-664d753a1297"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55a78-0175-1000-9cc5-e4b9049d3544","parent":{"ref":"EID6ee559c7-0175-1000-7d6c-664d753a1297"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55a78-0175-1000-ff65-e801902eed89","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee559c7-0175-1000-7d6c-664d753a1297"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf0ed7715-8bc4-4aa8-9d00-3411aaf58f15"},{"ref":"EIDb833942a-687b-43b8-91f9-da40fb6f4c32"},{"ref":"EIDcbed42d7-dd71-440c-8c87-3a854a5146e7"}]},"parent":{"ref":"EID6ee55764-0175-1000-602f-6f701d8691e9"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:08:45Z","duration":38,"status":"FAILED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:08:45Z","duration":789,"status":"FAILED"},{"id":"EID6ee55a79-0175-1000-54f3-306af38f86db","testStepResults":{"TestStepResult":{"id":"EID6ee55a79-0175-1000-a41d-dfa03785367c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55b39-0175-1000-ea40-e5a1901c2d81","parent":{"ref":"EID6ee55a79-0175-1000-a41d-dfa03785367c"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55b39-0175-1000-1442-abf9078a7919","parent":{"ref":"EID6ee55a79-0175-1000-a41d-dfa03785367c"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55b39-0175-1000-a4e7-47bb88360fdb","parent":{"ref":"EID6ee55a79-0175-1000-a41d-dfa03785367c"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55b39-0175-1000-7057-2148046134d9","parent":{"ref":"EID6ee55a79-0175-1000-a41d-dfa03785367c"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2389e58f-9ff1-4314-bc63-4573c7745446"},{"ref":"EIDdf46c38a-2fe0-48f7-a21d-34c630a9c3e0"},{"ref":"EID6410864b-1c5c-4301-a1c1-f09826fef53a"}]},"parent":{"ref":"EID6ee55a79-0175-1000-54f3-306af38f86db"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:08:46Z","duration":100,"status":"PASSED"}},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:08:46Z","duration":193,"status":"PASSED"},{"id":"EID6ee55b3a-0175-1000-5023-1edff449ba76","testStepResults":{"TestStepResult":[{"id":"EID6ee55b3a-0175-1000-f240-4794d7041261","parent":{"ref":"EID6ee55b3a-0175-1000-5023-1edff449ba76"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55b3a-0175-1000-d196-961ad4404d1c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55c82-0175-1000-6a2d-df7e403e82f6","parent":{"ref":"EID6ee55b3a-0175-1000-d196-961ad4404d1c"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55c82-0175-1000-1357-57cc49336969","parent":{"ref":"EID6ee55b3a-0175-1000-d196-961ad4404d1c"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55c82-0175-1000-c0ff-ef39524b6330","parent":{"ref":"EID6ee55b3a-0175-1000-d196-961ad4404d1c"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55c82-0175-1000-2897-8c41fd58f69d","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee55b3a-0175-1000-d196-961ad4404d1c"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4ec518d3-7b4b-46e0-8754-7ce20cc3d80b"},{"ref":"EIDf1688e71-1f71-44fb-b592-16f954a8c60f"},{"ref":"EIDae69f915-42d8-44c5-bfae-236a2ab863fc"}]},"parent":{"ref":"EID6ee55b3a-0175-1000-5023-1edff449ba76"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:08:46Z","duration":100,"status":"FAILED"}]},"parent":{"ref":"EID6ee52f4f-0175-1000-eaad-4fca9f922948"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:08:46Z","duration":328,"status":"FAILED"}]},"parent":{"ref":"EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:08:35Z","duration":11571,"status":"FAILED"},{"id":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed","testCaseResults":{"TestCaseResult":[{"id":"EID6ee55c83-0175-1000-738d-9ea2bcc6ceb2","testStepResults":{"TestStepResult":[{"id":"EID6ee55c83-0175-1000-1d51-d2cf3db9c488","parent":{"ref":"EID6ee55c83-0175-1000-738d-9ea2bcc6ceb2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55c83-0175-1000-ff18-ec0f431ba8b1","parent":{"ref":"EID6ee55c83-0175-1000-738d-9ea2bcc6ceb2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:08:46Z","duration":100,"status":"PASSED"},{"id":"EID6ee55c83-0175-1000-1276-87b32b7bcd4b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55d48-0175-1000-65df-c103e51bd440","parent":{"ref":"EID6ee55c83-0175-1000-1276-87b32b7bcd4b"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55d48-0175-1000-435f-8a43e5dd7121","parent":{"ref":"EID6ee55c83-0175-1000-1276-87b32b7bcd4b"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:08:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee55d48-0175-1000-5585-490307259a80","parent":{"ref":"EID6ee55c83-0175-1000-1276-87b32b7bcd4b"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:08:46Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID81627c4a-fc8e-41fa-8153-ee62bce692a5"},{"ref":"EID36a34ce8-4dca-474d-ac07-18e33e4a8df1"},{"ref":"EID0bf6f16b-7f95-48cc-91cb-ac4b44da038b"}]},"parent":{"ref":"EID6ee55c83-0175-1000-738d-9ea2bcc6ceb2"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:08:46Z","duration":91,"status":"PASSED"},{"id":"EID6ee55d49-0175-1000-8b3a-38ad2aa55790","attachments":{"attachment":{"ref":"EID2c0624ee-345c-405a-947f-f3855579252b"}},"parent":{"ref":"EID6ee55c83-0175-1000-738d-9ea2bcc6ceb2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:08:46Z","duration":9,"status":"PASSED"},{"id":"EID6ee55d5c-0175-1000-b55c-54735b4a5815","parent":{"ref":"EID6ee55c83-0175-1000-738d-9ea2bcc6ceb2"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:08:46Z","duration":103,"status":"PASSED"}]},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:08:46Z","duration":320,"status":"PASSED"},{"id":"EID6ee55dc3-0175-1000-0607-9209694887e5","testStepResults":{"TestStepResult":[{"id":"EID6ee55dc3-0175-1000-8ee6-18c61916a485","parent":{"ref":"EID6ee55dc3-0175-1000-0607-9209694887e5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:08:46Z","duration":148,"status":"PASSED"},{"id":"EID6ee55dc3-0175-1000-bd9a-6d29450bd2b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55e6b-0175-1000-49ba-4ed9c6e51ac6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee55dc3-0175-1000-bd9a-6d29450bd2b0"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:08:47Z","duration":14,"status":"FAILED"},{"id":"EID6ee55e79-0175-1000-027b-d793ab4dde72","parent":{"ref":"EID6ee55dc3-0175-1000-bd9a-6d29450bd2b0"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee55e79-0175-1000-7e68-53a0963c9711","parent":{"ref":"EID6ee55dc3-0175-1000-bd9a-6d29450bd2b0"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee55e79-0175-1000-4307-e0cda418cb95","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee55dc3-0175-1000-bd9a-6d29450bd2b0"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"FAILED"},{"id":"EID6ee55e79-0175-1000-5ab7-2f02ab73fdfc","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee55dc3-0175-1000-bd9a-6d29450bd2b0"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9ad5d730-d29e-45f1-88f2-3670f975876d"},{"ref":"EID61f555c0-4c3f-447f-af33-7b0bc5e2591a"},{"ref":"EIDf947e940-4436-45eb-b14a-4142f6193b32"}]},"parent":{"ref":"EID6ee55dc3-0175-1000-0607-9209694887e5"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:08:46Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:08:46Z","duration":182,"status":"FAILED"},{"id":"EID6ee55e79-0175-1000-8f75-55dcd195a39b","testStepResults":{"TestStepResult":{"id":"EID6ee55e7a-0175-1000-37a4-a50229e2e0c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55ed6-0175-1000-d39f-310805eb079a","parent":{"ref":"EID6ee55e7a-0175-1000-37a4-a50229e2e0c7"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee55ed6-0175-1000-e4e1-b51f5a8792f5","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee55e7a-0175-1000-37a4-a50229e2e0c7"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:08:47Z","duration":11,"status":"FAILED"},{"id":"EID6ee55ee1-0175-1000-bf8e-c1e0c1b3d1e7","parent":{"ref":"EID6ee55e7a-0175-1000-37a4-a50229e2e0c7"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7e5681d0-5cb5-493a-82a0-fefa2c5fabff"},{"ref":"EID0f0003db-3444-4dce-8d0a-bfd91c767fc0"},{"ref":"EID407d0d56-dda9-4727-87bd-a7f024d4eff3"}]},"parent":{"ref":"EID6ee55e79-0175-1000-8f75-55dcd195a39b"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:08:47Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:08:47Z","duration":105,"status":"FAILED"},{"id":"EID6ee55ee2-0175-1000-408d-2bfc6080851e","testStepResults":{"TestStepResult":{"id":"EID6ee55ee2-0175-1000-3a31-d18616d19f11","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55f4c-0175-1000-cad3-2b42663ff903","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee55ee2-0175-1000-3a31-d18616d19f11"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"FAILED"},{"id":"EID6ee55f4c-0175-1000-6e98-4722cf2a7211","parent":{"ref":"EID6ee55ee2-0175-1000-3a31-d18616d19f11"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee55f4c-0175-1000-fe22-cbc40d3e62e2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee55ee2-0175-1000-3a31-d18616d19f11"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:08:47Z","duration":10,"status":"FAILED"},{"id":"EID6ee55f56-0175-1000-2fc9-10b9c41fe7bf","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee55ee2-0175-1000-3a31-d18616d19f11"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa21f0ffd-71be-4db7-a58c-ceb247e658d6"},{"ref":"EID59362fc9-2407-466f-8574-0b43c752ad52"},{"ref":"EID40c1da8f-72cf-4f5d-8b34-ee3019dfaddd"}]},"parent":{"ref":"EID6ee55ee2-0175-1000-408d-2bfc6080851e"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:08:47Z","duration":23,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:08:47Z","duration":126,"status":"FAILED"},{"id":"EID6ee55f60-0175-1000-ac19-3de3d1610c0c","testStepResults":{"TestStepResult":{"id":"EID6ee55f60-0175-1000-b9f6-5425ad81ad86","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee55fb1-0175-1000-7754-0c35768fcab4","parent":{"ref":"EID6ee55f60-0175-1000-b9f6-5425ad81ad86"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee55fb1-0175-1000-2dd5-2c5beca42f5b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee55f60-0175-1000-b9f6-5425ad81ad86"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:08:47Z","duration":24,"status":"FAILED"},{"id":"EID6ee55fc9-0175-1000-a152-6461034de308","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee55f60-0175-1000-b9f6-5425ad81ad86"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:08:47Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID07171d3b-5961-4bb7-89af-790bd94272c8"},{"ref":"EID1dd655f2-a920-453b-8d84-2eb0074a7548"},{"ref":"EID47a6eae2-87b3-4c09-86a5-dfc969211d95"}]},"parent":{"ref":"EID6ee55f60-0175-1000-ac19-3de3d1610c0c"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:08:47Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:08:47Z","duration":106,"status":"FAILED"},{"id":"EID6ee55fca-0175-1000-745d-76f3c55fb0ea","testStepResults":{"TestStepResult":{"id":"EID6ee55fca-0175-1000-d3a7-8a4d1bd76585","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee56025-0175-1000-3a7a-75e7524b4612","parent":{"ref":"EID6ee55fca-0175-1000-d3a7-8a4d1bd76585"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee56025-0175-1000-bb3e-d97a37859e87","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee55fca-0175-1000-d3a7-8a4d1bd76585"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:08:47Z","duration":11,"status":"FAILED"},{"id":"EID6ee56030-0175-1000-1d7d-499a3eca5e93","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee55fca-0175-1000-d3a7-8a4d1bd76585"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7e119ca5-b658-44dd-aa2f-b5b6e861de7a"},{"ref":"EIDc1d365f4-4ad4-4ad8-abc7-e6b985f23805"},{"ref":"EIDda0d2176-8fb7-4509-8884-fade9f1a9eda"}]},"parent":{"ref":"EID6ee55fca-0175-1000-745d-76f3c55fb0ea"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:08:47Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:08:47Z","duration":102,"status":"FAILED"},{"id":"EID6ee56030-0175-1000-4d93-f8ae6b526b1f","testStepResults":{"TestStepResult":{"id":"EID6ee56030-0175-1000-eeae-871ad7bad906","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee560a7-0175-1000-58c8-23d2b97b8728","parent":{"ref":"EID6ee56030-0175-1000-eeae-871ad7bad906"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee560a7-0175-1000-a66c-6ea96dfcd10c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee56030-0175-1000-eeae-871ad7bad906"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:08:47Z","duration":12,"status":"FAILED"},{"id":"EID6ee560b3-0175-1000-aaa7-b01dacc4289c","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee56030-0175-1000-eeae-871ad7bad906"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"FAILED"},{"id":"EID6ee560b3-0175-1000-7a17-8678e3ec9cca","parent":{"ref":"EID6ee56030-0175-1000-eeae-871ad7bad906"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee560b3-0175-1000-2641-2e72bee47c23","parent":{"ref":"EID6ee56030-0175-1000-eeae-871ad7bad906"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0100b9b7-4097-4772-beba-f13448600257"},{"ref":"EIDf9c216b1-810c-4275-a34c-536fa856ae8d"},{"ref":"EID563085b0-cb80-4b91-81cd-5257fe826dbb"}]},"parent":{"ref":"EID6ee56030-0175-1000-4d93-f8ae6b526b1f"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:08:47Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:08:47Z","duration":132,"status":"FAILED"},{"id":"EID6ee560b4-0175-1000-d3e7-9db6d37aad94","testStepResults":{"TestStepResult":{"id":"EID6ee560b4-0175-1000-ade1-d006ba9bd6ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee56129-0175-1000-34df-7bca3d1447e8","parent":{"ref":"EID6ee560b4-0175-1000-ade1-d006ba9bd6ed"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee56129-0175-1000-de60-f1461bd3b1c0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee560b4-0175-1000-ade1-d006ba9bd6ed"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:08:47Z","duration":13,"status":"FAILED"},{"id":"EID6ee56136-0175-1000-5fb5-bfdb8b4b469d","parent":{"ref":"EID6ee560b4-0175-1000-ade1-d006ba9bd6ed"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6638898f-23a5-4b08-ac93-1a71e676e740"},{"ref":"EID2f31d388-5ba5-42b2-99b2-772fc768300b"},{"ref":"EID5380c020-efa1-409b-8985-90121641ce4e"}]},"parent":{"ref":"EID6ee560b4-0175-1000-d3e7-9db6d37aad94"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:08:47Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:08:47Z","duration":130,"status":"FAILED"},{"id":"EID6ee56136-0175-1000-62de-eef6e08ec154","testStepResults":{"TestStepResult":{"id":"EID6ee56136-0175-1000-63ed-b498cb5a5d5b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee561a6-0175-1000-b3b9-a99e5d40bfde","parent":{"ref":"EID6ee56136-0175-1000-63ed-b498cb5a5d5b"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee561a6-0175-1000-12c3-1c35da868e4d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee56136-0175-1000-63ed-b498cb5a5d5b"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:08:47Z","duration":11,"status":"FAILED"},{"id":"EID6ee561b1-0175-1000-92bb-5b215be0bbea","parent":{"ref":"EID6ee56136-0175-1000-63ed-b498cb5a5d5b"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:08:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5595386b-7403-46ad-b38f-c13d8c34ab68"},{"ref":"EIDfa8cfe2a-5870-4070-a1a6-b82b3a91ad20"},{"ref":"EID6a8a096f-e402-49e2-9a01-45f41f13c7e8"}]},"parent":{"ref":"EID6ee56136-0175-1000-62de-eef6e08ec154"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:08:47Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:08:47Z","duration":123,"status":"FAILED"},{"id":"EID6ee561b2-0175-1000-3038-38b47b35c715","testStepResults":{"TestStepResult":{"id":"EID6ee561b2-0175-1000-9fae-a2ae0fd1006d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5621d-0175-1000-f1c5-9464859dd900","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee561b2-0175-1000-9fae-a2ae0fd1006d"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:08:48Z","duration":11,"status":"FAILED"},{"id":"EID6ee56228-0175-1000-2dcc-eada86d4ea1a","parent":{"ref":"EID6ee561b2-0175-1000-9fae-a2ae0fd1006d"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee56228-0175-1000-761f-4eaee66e407a","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee561b2-0175-1000-9fae-a2ae0fd1006d"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"FAILED"},{"id":"EID6ee56228-0175-1000-b22a-8e0e19fe3df4","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee561b2-0175-1000-9fae-a2ae0fd1006d"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1b4d50bd-e3f4-44f1-8a18-1a1806445a06"},{"ref":"EID0e6f3fab-14df-49ba-a1cc-67b2cd129e99"},{"ref":"EID0e7ad536-4f12-48dd-9c3f-fc8879f64559"}]},"parent":{"ref":"EID6ee561b2-0175-1000-3038-38b47b35c715"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:08:47Z","duration":24,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:08:47Z","duration":118,"status":"FAILED"},{"id":"EID6ee56228-0175-1000-3e7b-f10ebd0a6fc4","testStepResults":{"TestStepResult":{"id":"EID6ee56228-0175-1000-f796-5d1dae00d524","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee56289-0175-1000-fe05-105f821190e3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee56228-0175-1000-f796-5d1dae00d524"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:08:48Z","duration":10,"status":"FAILED"},{"id":"EID6ee56293-0175-1000-e398-6c3a19f4b20c","parent":{"ref":"EID6ee56228-0175-1000-f796-5d1dae00d524"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee56293-0175-1000-7fda-3e5cb94bf2db","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee56228-0175-1000-f796-5d1dae00d524"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"FAILED"},{"id":"EID6ee56293-0175-1000-4c96-4a08eb7bd29b","parent":{"ref":"EID6ee56228-0175-1000-f796-5d1dae00d524"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3ab533b-4a42-4762-92ef-d2e63c1c4c11"},{"ref":"EID122ca9df-1b33-4832-a8ce-22f323d9ea19"},{"ref":"EIDa6a826d9-ce3d-4fae-9cc6-f0c40a3d12e9"}]},"parent":{"ref":"EID6ee56228-0175-1000-3e7b-f10ebd0a6fc4"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:08:48Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:08:48Z","duration":139,"status":"FAILED"},{"id":"EID6ee562b3-0175-1000-e393-0f63cee5961d","testStepResults":{"TestStepResult":[{"id":"EID6ee562b3-0175-1000-d8e1-0512a8c253e2","parent":{"ref":"EID6ee562b3-0175-1000-e393-0f63cee5961d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee562b3-0175-1000-fbb5-387b92608c3d","parent":{"ref":"EID6ee562b3-0175-1000-e393-0f63cee5961d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:08:48Z","duration":197,"status":"PASSED"},{"id":"EID6ee562b3-0175-1000-6bd3-a35f2924bae7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee563f7-0175-1000-6d60-099971211ee7","parent":{"ref":"EID6ee562b3-0175-1000-6bd3-a35f2924bae7"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee563f7-0175-1000-7f6e-f05c3db176b9","parent":{"ref":"EID6ee562b3-0175-1000-6bd3-a35f2924bae7"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee563f7-0175-1000-0cbe-c81e7a20f213","parent":{"ref":"EID6ee562b3-0175-1000-6bd3-a35f2924bae7"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee563f7-0175-1000-4849-c5039877efc4","parent":{"ref":"EID6ee562b3-0175-1000-6bd3-a35f2924bae7"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4295e12d-4861-4e2d-9130-19009ec40455"},{"ref":"EID0776e991-2024-491e-9b11-a7f5024acdcc"},{"ref":"EIDcba7eb8d-c2f1-4de7-b616-5cb2f44e4890"}]},"parent":{"ref":"EID6ee562b3-0175-1000-e393-0f63cee5961d"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:08:48Z","duration":83,"status":"PASSED"},{"id":"EID6ee563f7-0175-1000-5ae7-ada223759577","attachments":{"attachment":{"ref":"EIDe12de7bc-f2c9-4567-9dcb-f05ccc13633d"}},"parent":{"ref":"EID6ee562b3-0175-1000-e393-0f63cee5961d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:08:48Z","duration":4,"status":"PASSED"},{"id":"EID6ee56408-0175-1000-657b-2e3e2de8b866","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee564b2-0175-1000-87e5-8ef6442a393d","parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee564b2-0175-1000-8896-158283afb2c1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:08:48Z","duration":38,"status":"FAILED"},{"id":"EID6ee564d8-0175-1000-bb06-6f6730b379f6","parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee564d8-0175-1000-3924-4fc3edaa3fd2","parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee564d8-0175-1000-f469-843f113f77cd","parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee564d8-0175-1000-0589-368b5928cbc2","parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee564d8-0175-1000-b16b-6c927e93acff","parent":{"ref":"EID6ee56408-0175-1000-657b-2e3e2de8b866"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID17f602f4-7b9f-4b0e-ab47-44ee3b70b98a"},{"ref":"EIDa55ca126-c699-4201-a3ec-c7252f0f3b96"},{"ref":"EIDd12d3383-aadc-477b-b2d6-31869dbc30c6"}]},"parent":{"ref":"EID6ee562b3-0175-1000-e393-0f63cee5961d"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:08:48Z","duration":27,"status":"FAILED"}]},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:08:48Z","duration":549,"status":"FAILED"},{"id":"EID6ee564d8-0175-1000-e712-2f6049cc4b7c","testStepResults":{"TestStepResult":[{"id":"EID6ee564d8-0175-1000-b237-a136074d378a","parent":{"ref":"EID6ee564d8-0175-1000-e712-2f6049cc4b7c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee564d8-0175-1000-ca7d-c56d37457f7f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee565c6-0175-1000-2db2-61123b6f8a24","parent":{"ref":"EID6ee564d8-0175-1000-ca7d-c56d37457f7f"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee565c6-0175-1000-67a8-3963c9450ff4","parent":{"ref":"EID6ee564d8-0175-1000-ca7d-c56d37457f7f"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee565c6-0175-1000-4a5e-9d9b3a78b86e","parent":{"ref":"EID6ee564d8-0175-1000-ca7d-c56d37457f7f"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee565c6-0175-1000-5496-aba00c48d603","parent":{"ref":"EID6ee564d8-0175-1000-ca7d-c56d37457f7f"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:08:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID628ddabc-013c-452d-a38a-16899e36f125"},{"ref":"EIDeb4a0b9b-d996-4413-9562-fcbe77264c56"},{"ref":"EID49ca9ead-3b31-452c-b9bc-af985928d144"}]},"parent":{"ref":"EID6ee564d8-0175-1000-e712-2f6049cc4b7c"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:08:48Z","duration":142,"status":"PASSED"},{"id":"EID6ee565c6-0175-1000-7b17-ab9beff1d269","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee565ee-0175-1000-9750-895f1d3345b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee566c5-0175-1000-c7df-210fc9812e37","parent":{"ref":"EID6ee565ee-0175-1000-9750-895f1d3345b8"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee566c5-0175-1000-50dc-af7c8f3de750","parent":{"ref":"EID6ee565ee-0175-1000-9750-895f1d3345b8"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee566c5-0175-1000-2539-2cd93a6f0d38","parent":{"ref":"EID6ee565ee-0175-1000-9750-895f1d3345b8"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcff4535f-0aaa-494e-a8da-dbfa51ff6bae"},{"ref":"EID23993101-d165-474c-814c-1c444f38c427"},{"ref":"EID0df5f893-ccae-4817-b30b-3e443a024123"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:49Z","duration":147,"status":"PASSED"},{"id":"EID6ee566c7-0175-1000-b5c9-33d2b29dc41c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee567a1-0175-1000-c0fd-f8e4e14fda63","parent":{"ref":"EID6ee566c7-0175-1000-b5c9-33d2b29dc41c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee567a1-0175-1000-92a4-68869d08f547","parent":{"ref":"EID6ee566c7-0175-1000-b5c9-33d2b29dc41c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee567a1-0175-1000-feaf-0f5c42bab9a7","parent":{"ref":"EID6ee566c7-0175-1000-b5c9-33d2b29dc41c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a0fa6e3-13fd-4b20-971d-6bc47d527d74"},{"ref":"EID5ce9ed4b-793f-4cfa-a379-7c8284640151"},{"ref":"EID1b970ee4-bb41-4ce3-be5e-240746246fbc"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:49Z","duration":148,"status":"PASSED"},{"id":"EID6ee567a2-0175-1000-7c4b-e68b2b0ab084","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5686c-0175-1000-939d-6e7fbc0d9c7f","parent":{"ref":"EID6ee567a2-0175-1000-7c4b-e68b2b0ab084"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee5686c-0175-1000-f9ec-9b02f92092a7","parent":{"ref":"EID6ee567a2-0175-1000-7c4b-e68b2b0ab084"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee5686c-0175-1000-d526-fbe11132a97e","parent":{"ref":"EID6ee567a2-0175-1000-7c4b-e68b2b0ab084"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdffaad93-b351-4c21-9ad8-14b07df065ad"},{"ref":"EID2bc72225-9cee-47b1-a75e-ab0609e5bcc2"},{"ref":"EID1b9644f5-3eca-4fd0-9ebe-f1d01981321d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:49Z","duration":153,"status":"PASSED"}]},"parent":{"ref":"EID6ee564d8-0175-1000-e712-2f6049cc4b7c"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:08:48Z","duration":678,"status":"PASSED"},{"id":"EID6ee5686d-0175-1000-6808-4489c7e3e661","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee568db-0175-1000-0dae-bc354ee50328","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee5686d-0175-1000-6808-4489c7e3e661"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:08:49Z","duration":11,"status":"FAILED"},{"id":"EID6ee568e6-0175-1000-9046-ff3d92e4312d","parent":{"ref":"EID6ee5686d-0175-1000-6808-4489c7e3e661"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee568e6-0175-1000-bbf8-62250d0a66c7","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee5686d-0175-1000-6808-4489c7e3e661"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"FAILED"},{"id":"EID6ee568e6-0175-1000-a267-fa6d2491cafc","parent":{"ref":"EID6ee5686d-0175-1000-6808-4489c7e3e661"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f32b6e2-0ee9-43cf-bc1c-04e9d5e1ca3e"},{"ref":"EID23db9eb1-8892-476d-81ea-1100d62a59d7"},{"ref":"EIDed75c26a-95c7-4562-b75a-3defbccbcf25"}]},"parent":{"ref":"EID6ee564d8-0175-1000-e712-2f6049cc4b7c"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:08:49Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:08:48Z","duration":1046,"status":"FAILED"},{"id":"EID6ee568ee-0175-1000-d5d6-a74ae617cb9b","testStepResults":{"TestStepResult":{"id":"EID6ee568ee-0175-1000-dec5-738411713332","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee56957-0175-1000-d890-76690daed2aa","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee568ee-0175-1000-dec5-738411713332"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:08:49Z","duration":10,"status":"FAILED"},{"id":"EID6ee56962-0175-1000-e77a-d00c8eb32b93","parent":{"ref":"EID6ee568ee-0175-1000-dec5-738411713332"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee56962-0175-1000-358f-5d2a9e28235d","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee568ee-0175-1000-dec5-738411713332"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"FAILED"},{"id":"EID6ee56962-0175-1000-3f4d-5955c711f519","parent":{"ref":"EID6ee568ee-0175-1000-dec5-738411713332"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID45f39844-d51d-4a24-ac16-808ac2f2d22b"},{"ref":"EID9662d696-c060-4a2e-b41e-492342d5c314"},{"ref":"EID6140f64f-6b64-4798-861f-8295917203e5"}]},"parent":{"ref":"EID6ee568ee-0175-1000-d5d6-a74ae617cb9b"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:08:49Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6ee55c82-0175-1000-6909-9bd7c5ae94ed"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:08:49Z","duration":116,"status":"FAILED"}]},"parent":{"ref":"EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:08:46Z","duration":3296,"status":"FAILED"},{"id":"EID6ee56962-0175-1000-24a8-ea67eb31a674","testCaseResults":{"TestCaseResult":[{"id":"EID6ee56962-0175-1000-90f2-8e4e97850607","testStepResults":{"TestStepResult":{"id":"EID6ee56962-0175-1000-a4a9-2ca64420fc39","parent":{"ref":"EID6ee56962-0175-1000-90f2-8e4e97850607"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee5696a-0175-1000-924f-2fb85f318d3d","testStepResults":{"TestStepResult":{"id":"EID6ee5696a-0175-1000-0428-14e2f23aa1f8","parent":{"ref":"EID6ee5696a-0175-1000-924f-2fb85f318d3d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee5696a-0175-1000-5358-6a7aad8f56ce","testStepResults":{"TestStepResult":{"id":"EID6ee5696a-0175-1000-3d0b-c191de417aae","parent":{"ref":"EID6ee5696a-0175-1000-5358-6a7aad8f56ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee5696a-0175-1000-cef2-c455991ee5cf","testStepResults":{"TestStepResult":{"id":"EID6ee5696a-0175-1000-22b5-f5e2fda9aeff","parent":{"ref":"EID6ee5696a-0175-1000-cef2-c455991ee5cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee5696b-0175-1000-2bc0-aebc1186d772","testStepResults":{"TestStepResult":{"id":"EID6ee5696b-0175-1000-6dfb-41475e05186d","parent":{"ref":"EID6ee5696b-0175-1000-2bc0-aebc1186d772"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee5696b-0175-1000-ed8c-e3fc8ebbe352","testStepResults":{"TestStepResult":{"id":"EID6ee5696b-0175-1000-66e6-9b32bbeeabc7","parent":{"ref":"EID6ee5696b-0175-1000-ed8c-e3fc8ebbe352"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:08:49Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee5696b-0175-1000-741a-f2a3a5380d0f","testStepResults":{"TestStepResult":{"id":"EID6ee56972-0175-1000-a334-77231d1d96de","parent":{"ref":"EID6ee5696b-0175-1000-741a-f2a3a5380d0f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:08:49Z","duration":599,"status":"SKIPPED"}},"parent":{"ref":"EID6ee56962-0175-1000-24a8-ea67eb31a674"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:08:49Z","duration":7,"status":"SKIPPED"}]},"parent":{"ref":"EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:08:49Z","duration":16,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID0c39ae9e-86bd-4284-87ca-a1a827fb99c6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID0c39ae9e-86bd-4284-87ca-a1a827fb99c6"}},{"type":"ServiceResponse","id":"EID23993101-d165-474c-814c-1c444f38c427","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID23993101-d165-474c-814c-1c444f38c427"}},{"type":"ServiceResponse","id":"EID9662d696-c060-4a2e-b41e-492342d5c314","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID9662d696-c060-4a2e-b41e-492342d5c314"}},{"type":"ServiceResponse","id":"EIDf7e66833-8ba6-4f40-abe3-6b6e185a2b27","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDf7e66833-8ba6-4f40-abe3-6b6e185a2b27"}},{"type":"ServiceEndpoint","id":"EID3a70ce77-55fa-4d03-b82e-cf08689606a2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd0b882d4-9150-418e-9edf-56b84f491702","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDd0b882d4-9150-418e-9edf-56b84f491702"}},{"type":"ServiceResponse","id":"EIDf1688e71-1f71-44fb-b592-16f954a8c60f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDf1688e71-1f71-44fb-b592-16f954a8c60f"}},{"type":"GetParameter","id":"EIDae69f915-42d8-44c5-bfae-236a2ab863fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5b1b8847-e7f4-4bdc-bd76-9173d464e8e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID1b4d50bd-e3f4-44f1-8a18-1a1806445a06","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDcba7eb8d-c2f1-4de7-b616-5cb2f44e4890","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID271c2ac9-cdbf-421f-8f87-34752ef3b85a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID271c2ac9-cdbf-421f-8f87-34752ef3b85a"}},{"type":"ServiceResponse","id":"EIDdf46c38a-2fe0-48f7-a21d-34c630a9c3e0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDdf46c38a-2fe0-48f7-a21d-34c630a9c3e0"}},{"type":"GetParameter","id":"EID43272bac-37b5-4048-8ebf-07a811fe9047","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb833942a-687b-43b8-91f9-da40fb6f4c32","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDb833942a-687b-43b8-91f9-da40fb6f4c32"}},{"type":"ServiceEndpoint","id":"EID1a980f68-c441-4765-bc5f-e3267d1ff7ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6f32b6e2-0ee9-43cf-bc1c-04e9d5e1ca3e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID8993ac53-fd78-4221-8bc4-7ed3879fd618","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0ad58f3a-5694-45b4-b411-153f7228f99c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID0ad58f3a-5694-45b4-b411-153f7228f99c"}},{"type":"Error","id":"EIDa9116851-cd15-4ed8-bdc8-e04e598ef23e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDa9116851-cd15-4ed8-bdc8-e04e598ef23e"}},{"type":"GetParameter","id":"EIDa2d07460-3d7b-4357-9603-30fafb59d764","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd0ecb0b1-9893-4ae5-a4ad-7a6c41d7969b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDd0ecb0b1-9893-4ae5-a4ad-7a6c41d7969b"}},{"type":"Error","id":"EIDc403881e-d3f8-4547-ae73-4bd6169aea98","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDc403881e-d3f8-4547-ae73-4bd6169aea98"}},{"type":"Error","id":"EID296a26b4-3af8-4cdd-8b56-2a73646b35ff","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID296a26b4-3af8-4cdd-8b56-2a73646b35ff"}},{"type":"ServiceEndpoint","id":"EIDbdbd137e-ccba-4d35-b8b3-110fa52f06f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID407d0d56-dda9-4727-87bd-a7f024d4eff3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID8e77b15b-7f68-4415-94cf-860cb27ef7b9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID8e77b15b-7f68-4415-94cf-860cb27ef7b9"}},{"type":"ServiceResponse","id":"EID59362fc9-2407-466f-8574-0b43c752ad52","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID59362fc9-2407-466f-8574-0b43c752ad52"}},{"type":"GetParameter","id":"EIDed75c26a-95c7-4562-b75a-3defbccbcf25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID841026c7-b9fb-4c35-9536-8f23f7466224","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID841026c7-b9fb-4c35-9536-8f23f7466224"}},{"type":"ServiceResponse","id":"EIDc1d365f4-4ad4-4ad8-abc7-e6b985f23805","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDc1d365f4-4ad4-4ad8-abc7-e6b985f23805"}},{"type":"GetParameter","id":"EID5045ea76-0f5d-4bee-852c-346bb3b07d21","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDe82c0c00-b194-4ff1-b354-ee51b80f0c62","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcbed42d7-dd71-440c-8c87-3a854a5146e7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID934e55dc-61a4-48e7-9064-9931d2ec7cd9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID934e55dc-61a4-48e7-9064-9931d2ec7cd9"}},{"type":"ServiceEndpoint","id":"EIDf0ed7715-8bc4-4aa8-9d00-3411aaf58f15","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID75830ec0-20c4-4400-abb3-e738e4e09606","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa5d84bdf-8483-47f2-b00f-ba71fb70ef6e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID81627c4a-fc8e-41fa-8153-ee62bce692a5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDa22b7072-9365-4024-8ac4-2b8015a13cdb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDa22b7072-9365-4024-8ac4-2b8015a13cdb"}},{"type":"Error","id":"EIDbe7a7e7e-3690-4ef2-b5d9-3f665babe2b6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDbe7a7e7e-3690-4ef2-b5d9-3f665babe2b6"}},{"type":"ServiceResponse","id":"EIDfe73886a-0d1e-4faa-8ffe-69ec80282d27","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDfe73886a-0d1e-4faa-8ffe-69ec80282d27"}},{"type":"GetParameter","id":"EID40c1da8f-72cf-4f5d-8b34-ee3019dfaddd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID4d3b0704-5873-4c5f-beb1-b9d56113ec36","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID2c0624ee-345c-405a-947f-f3855579252b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID2c0624ee-345c-405a-947f-f3855579252b"}},{"type":"Message","id":"EID1d3d7dfc-5d35-4687-b820-70c928917011","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID1d3d7dfc-5d35-4687-b820-70c928917011"}},{"type":"ServiceResponse","id":"EID86f14b58-5679-46c9-aed4-ccf0742c67b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID86f14b58-5679-46c9-aed4-ccf0742c67b6"}},{"type":"GetParameter","id":"EID0df5f893-ccae-4817-b30b-3e443a024123","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDe213a84c-4aec-44b0-bcbb-a1d9fa092c51","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0100b9b7-4097-4772-beba-f13448600257","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID044d35c4-10fb-4787-98c4-72ebeb8f6a86","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID044d35c4-10fb-4787-98c4-72ebeb8f6a86"}},{"type":"GetParameter","id":"EIDf226cc2d-7b1b-4c3b-850b-a62105ddcc28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5380c020-efa1-409b-8985-90121641ce4e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDc4f3c105-e8a3-4d75-a00b-a286714ba53e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDc4f3c105-e8a3-4d75-a00b-a286714ba53e"}},{"type":"Message","id":"EID99b53cad-f9b0-44d2-b557-9973b41c05f9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID99b53cad-f9b0-44d2-b557-9973b41c05f9"}},{"type":"ServiceResponse","id":"EID2f31d388-5ba5-42b2-99b2-772fc768300b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID2f31d388-5ba5-42b2-99b2-772fc768300b"}},{"type":"ServiceResponse","id":"EID46f61fe4-3967-41b1-9410-775d69662e21","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID46f61fe4-3967-41b1-9410-775d69662e21"}},{"type":"ServiceEndpoint","id":"EID2389e58f-9ff1-4314-bc63-4573c7745446","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID45f39844-d51d-4a24-ac16-808ac2f2d22b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6a8a096f-e402-49e2-9a01-45f41f13c7e8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID1b9644f5-3eca-4fd0-9ebe-f1d01981321d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID7e5681d0-5cb5-493a-82a0-fefa2c5fabff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6140f64f-6b64-4798-861f-8295917203e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDe60377a0-35db-4f36-9240-7cc7901fb011","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDcb4a5167-a142-48ce-892c-f7e177b3f6a3","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDcb4a5167-a142-48ce-892c-f7e177b3f6a3"}},{"type":"ServiceResponse","id":"EID37e90eff-6588-4cbc-a116-9147f28e71d1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID37e90eff-6588-4cbc-a116-9147f28e71d1"}},{"type":"ServiceResponse","id":"EID5ce9ed4b-793f-4cfa-a379-7c8284640151","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID5ce9ed4b-793f-4cfa-a379-7c8284640151"}},{"type":"ServiceResponse","id":"EID04204c10-f469-4a5f-93c5-d64fd7cba844","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID04204c10-f469-4a5f-93c5-d64fd7cba844"}},{"type":"Error","id":"EID68809e65-310a-4415-9bf3-f0c64ef4eda4","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID68809e65-310a-4415-9bf3-f0c64ef4eda4"}},{"type":"GetParameter","id":"EID1b970ee4-bb41-4ce3-be5e-240746246fbc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID731a5e67-a010-4afb-aea6-2762e3d5ec8d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID731a5e67-a010-4afb-aea6-2762e3d5ec8d"}},{"type":"ServiceResponse","id":"EID3316eaaf-a23e-464b-b34c-12bdf8ae1f28","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID3316eaaf-a23e-464b-b34c-12bdf8ae1f28"}},{"type":"ServiceResponse","id":"EID0776e991-2024-491e-9b11-a7f5024acdcc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID0776e991-2024-491e-9b11-a7f5024acdcc"}},{"type":"GetParameter","id":"EIDf947e940-4436-45eb-b14a-4142f6193b32","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"LogFile","id":"EIDd73ef9e3-b4c2-45fa-a65e-6ce026e8fef3","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDd73ef9e3-b4c2-45fa-a65e-6ce026e8fef3"}},{"type":"ServiceEndpoint","id":"EID63f6d945-e17b-4213-a1bf-6708a2faf411","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EID34d32479-0a99-40ee-a840-4a475a0fe183","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID34d32479-0a99-40ee-a840-4a475a0fe183"}},{"type":"Message","id":"EID1586ef60-e22c-4012-bb11-bc7dcfc43d33","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID1586ef60-e22c-4012-bb11-bc7dcfc43d33"}},{"type":"GetParameter","id":"EID25bcac62-4262-4331-983c-3ad27c98d886","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa55ca126-c699-4201-a3ec-c7252f0f3b96","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDa55ca126-c699-4201-a3ec-c7252f0f3b96"}},{"type":"ServiceEndpoint","id":"EID3d405c42-254b-48e1-aab5-43cfb03aa075","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDdcee22ea-6255-4295-b7af-eb9226a3f92f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDdcee22ea-6255-4295-b7af-eb9226a3f92f"}},{"type":"Message","id":"EID7963e19d-003b-476a-916e-ff450a9b1710","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID7963e19d-003b-476a-916e-ff450a9b1710"}},{"type":"ServiceResponse","id":"EID23db9eb1-8892-476d-81ea-1100d62a59d7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID23db9eb1-8892-476d-81ea-1100d62a59d7"}},{"type":"ServiceEndpoint","id":"EIDcbd8b781-669d-45ea-9d02-b8d4e543f3ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8de00516-a1ff-40a5-acc9-b83091103d35","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID8de00516-a1ff-40a5-acc9-b83091103d35"}},{"type":"Message","id":"EID4e24e2ed-90b4-48d4-9a29-141b5e79df18","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID4e24e2ed-90b4-48d4-9a29-141b5e79df18"}},{"type":"Error","id":"EID07d1ec59-8da6-4b48-ad93-afae56387d4f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID07d1ec59-8da6-4b48-ad93-afae56387d4f"}},{"type":"Message","id":"EID12d99314-b287-48a4-98c8-ed878f3ee06e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID12d99314-b287-48a4-98c8-ed878f3ee06e"}},{"type":"ServiceEndpoint","id":"EIDda6d9319-d285-472c-aa35-4326dd231cbb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7ab3870d-04bb-490d-a383-d0fad690608a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0dab4842-6ccf-4b19-bdd6-37dd82b0e91c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID0dab4842-6ccf-4b19-bdd6-37dd82b0e91c"}},{"type":"Message","id":"EID1e6c27b2-5787-487e-8087-c2693857e9cf","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID1e6c27b2-5787-487e-8087-c2693857e9cf"}},{"type":"GetParameter","id":"EID49ca9ead-3b31-452c-b9bc-af985928d144","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Error","id":"EID91a67e04-54bf-492b-8bbc-d6d11a0e219f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID91a67e04-54bf-492b-8bbc-d6d11a0e219f"}},{"type":"ServiceResponse","id":"EID18c15dcd-8b2d-4636-b53b-f91c6c77bb0a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID18c15dcd-8b2d-4636-b53b-f91c6c77bb0a"}},{"type":"GetParameter","id":"EIDa6a826d9-ce3d-4fae-9cc6-f0c40a3d12e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDd791d598-13d9-403a-83bd-89d7bab045e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID17f602f4-7b9f-4b0e-ab47-44ee3b70b98a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6410864b-1c5c-4301-a1c1-f09826fef53a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd3ab533b-4a42-4762-92ef-d2e63c1c4c11","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID122ca9df-1b33-4832-a8ce-22f323d9ea19","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID122ca9df-1b33-4832-a8ce-22f323d9ea19"}},{"type":"ServiceEndpoint","id":"EID4295e12d-4861-4e2d-9130-19009ec40455","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID580b5fd4-596f-45a6-b2c3-30acc9195f50","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5595386b-7403-46ad-b38f-c13d8c34ab68","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID06416a7c-2a9c-4ffe-8406-71c107a0089c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID06416a7c-2a9c-4ffe-8406-71c107a0089c"}},{"type":"ServiceEndpoint","id":"EIDa21f0ffd-71be-4db7-a58c-ceb247e658d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID0e7ad536-4f12-48dd-9c3f-fc8879f64559","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDf9c216b1-810c-4275-a34c-536fa856ae8d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDf9c216b1-810c-4275-a34c-536fa856ae8d"}},{"type":"ServiceResponse","id":"EID33f866dd-fa83-488c-be77-33b630f417c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID33f866dd-fa83-488c-be77-33b630f417c8"}},{"type":"Message","id":"EID87734727-7f0b-4366-8d96-5eda7fd05347","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID87734727-7f0b-4366-8d96-5eda7fd05347"}},{"type":"ServiceEndpoint","id":"EID7e119ca5-b658-44dd-aa2f-b5b6e861de7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDcff4535f-0aaa-494e-a8da-dbfa51ff6bae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDc1517eb5-f305-497f-b260-242531de7e6e","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDc1517eb5-f305-497f-b260-242531de7e6e"}},{"type":"ServiceEndpoint","id":"EID628ddabc-013c-452d-a38a-16899e36f125","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID129323c6-a0b6-4841-9a6e-8c91fcb752e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2652ae58-3645-4f08-9d9b-04e47ec403fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID2652ae58-3645-4f08-9d9b-04e47ec403fd"}},{"type":"GetParameter","id":"EIDd12d3383-aadc-477b-b2d6-31869dbc30c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDb4c98fac-9ca0-4f0b-8d03-ff177585bc2a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDb4c98fac-9ca0-4f0b-8d03-ff177585bc2a"}},{"type":"ServiceEndpoint","id":"EIDab0747ba-ff28-4a7e-8fde-1ca7ed3bcbe0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc5b110d6-7f81-4018-9db1-e4e4ff8a7085","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDc5b110d6-7f81-4018-9db1-e4e4ff8a7085"}},{"type":"GetParameter","id":"EIDe7ae59a8-4ad8-450a-8a8e-ae0928c82b28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfa8cfe2a-5870-4070-a1a6-b82b3a91ad20","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDfa8cfe2a-5870-4070-a1a6-b82b3a91ad20"}},{"type":"ServiceEndpoint","id":"EIDdffaad93-b351-4c21-9ad8-14b07df065ad","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID47a6eae2-87b3-4c09-86a5-dfc969211d95","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDd19b1dee-6211-4fb6-94bc-a12684a01f4a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDd19b1dee-6211-4fb6-94bc-a12684a01f4a"}},{"type":"Message","id":"EID1b92d38c-4d89-4b39-b913-131cfd16038a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID1b92d38c-4d89-4b39-b913-131cfd16038a"}},{"type":"ServiceResponse","id":"EID496f06a5-f434-4602-b42a-c51e11d3489a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID496f06a5-f434-4602-b42a-c51e11d3489a"}},{"type":"ServiceResponse","id":"EID08e5bdb4-b7a8-4e0e-8d08-9043b77d2382","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID08e5bdb4-b7a8-4e0e-8d08-9043b77d2382"}},{"type":"GetParameter","id":"EID563085b0-cb80-4b91-81cd-5257fe826dbb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDd9087d10-d162-45fb-9c39-6efb604f8911","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID61f555c0-4c3f-447f-af33-7b0bc5e2591a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID61f555c0-4c3f-447f-af33-7b0bc5e2591a"}},{"type":"Message","id":"EIDcea740c3-ea2c-478b-8b49-2e11f7d5f3f9","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDcea740c3-ea2c-478b-8b49-2e11f7d5f3f9"}},{"type":"ServiceEndpoint","id":"EIDcb0e6f31-274c-444f-9b8b-7173a01bfd3e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc62f3b16-bbbc-4aec-8ce0-676c7a95d49c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDc62f3b16-bbbc-4aec-8ce0-676c7a95d49c"}},{"type":"ServiceResponse","id":"EID36a34ce8-4dca-474d-ac07-18e33e4a8df1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID36a34ce8-4dca-474d-ac07-18e33e4a8df1"}},{"type":"GetParameter","id":"EIDda0d2176-8fb7-4509-8884-fade9f1a9eda","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDda67f46c-d752-476c-9be2-797fb6781bcf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0f0003db-3444-4dce-8d0a-bfd91c767fc0","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID0f0003db-3444-4dce-8d0a-bfd91c767fc0"}},{"type":"Message","id":"EID6ca6c7cc-1af0-4b0e-8d7b-8752306329b2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID6ca6c7cc-1af0-4b0e-8d7b-8752306329b2"}},{"type":"GetParameter","id":"EIDa62f1d9c-ecf4-4ada-b182-04dffebb46c7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0e6f3fab-14df-49ba-a1cc-67b2cd129e99","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID0e6f3fab-14df-49ba-a1cc-67b2cd129e99"}},{"type":"ServiceResponse","id":"EID2bc72225-9cee-47b1-a75e-ab0609e5bcc2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID2bc72225-9cee-47b1-a75e-ab0609e5bcc2"}},{"type":"ServiceEndpoint","id":"EIDa8ae92fd-7990-4d40-b079-648d6596d71d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1dd655f2-a920-453b-8d84-2eb0074a7548","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID1dd655f2-a920-453b-8d84-2eb0074a7548"}},{"type":"ServiceEndpoint","id":"EID0a0fa6e3-13fd-4b20-971d-6bc47d527d74","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID6638898f-23a5-4b08-ac93-1a71e676e740","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDf1d9ad19-e306-4a7e-a958-d006b67fec16","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDf1d9ad19-e306-4a7e-a958-d006b67fec16"}},{"type":"Message","id":"EIDb8f42376-94ae-4ff1-b6dd-ed6bd1f527f8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDb8f42376-94ae-4ff1-b6dd-ed6bd1f527f8"}},{"type":"GetParameter","id":"EIDd25545c1-d893-4f5f-b4e9-33e5cf8fa9e6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDcdbc0433-8245-424f-b1ff-8b531d5040ec","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDcdbc0433-8245-424f-b1ff-8b531d5040ec"}},{"type":"ServiceEndpoint","id":"EID07171d3b-5961-4bb7-89af-790bd94272c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID1f5dc917-2daa-4e26-9baa-5423f2cc39e1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EID1f5dc917-2daa-4e26-9baa-5423f2cc39e1"}},{"type":"ServiceEndpoint","id":"EID99eedc89-d4f6-4a18-a8e4-8625aed87e75","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDeb4a0b9b-d996-4413-9562-fcbe77264c56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDeb4a0b9b-d996-4413-9562-fcbe77264c56"}},{"type":"Message","id":"EIDe12de7bc-f2c9-4567-9dcb-f05ccc13633d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDe12de7bc-f2c9-4567-9dcb-f05ccc13633d"}},{"type":"GetParameter","id":"EID0bf6f16b-7f95-48cc-91cb-ac4b44da038b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDbf7c67c9-5d8f-4975-b128-4f9058ea1a22","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDeb3407ee-b159-4f62-9e95-55c37b9bae0e/Attachments/EIDbf7c67c9-5d8f-4975-b128-4f9058ea1a22"}},{"type":"ServiceEndpoint","id":"EIDa2411980-2df6-4500-8401-747cdb02507b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4ec518d3-7b4b-46e0-8754-7ce20cc3d80b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9ad5d730-d29e-45f1-88f2-3670f975876d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:08:34Z","duration":15542,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.001
11:09:13.753 [print] EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:09:13.753 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:09:13.754 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:09:13.754 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:09:13.755 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:09:13.755 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:09:13.755 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4fd3b517-c5c1-4fda-9ce8-0b9b501fd3dd/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.019
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.003
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.001
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.001
11:09:13.782 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:09:13.782 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.420
* print "testing url:" + metadata.url 0.006
11:13:04.827 [print] testing url:https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.414
11:13:04.828 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:05.242 response time in milliseconds: 413.70
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:05 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.407
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.407
11:13:05.254 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:05.653 response time in milliseconds: 398.70
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:05 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:05.656 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.409
* print "testing url:" + metadata.url 0.000
11:10:53.839 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 0.409
11:10:53.840 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:54.249 response time in milliseconds: 408.92
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:54 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422380FCCB3CE5
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.417
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.416
11:10:54.010 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:54.426 response time in milliseconds: 416.10
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:54 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422381075DCC56
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:10:54.426 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.395
* print "testing url:" + metadata.url 0.000
11:15:20.277 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.395
11:15:20.278 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:20.673 response time in milliseconds: 394.74
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:15:19 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.401
Given url metadata.url 0.000
When method HEAD 0.400
11:15:20.678 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:21.078 response time in milliseconds: 399.43
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:15:21 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:21.919
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:04:43.134 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.040
11:04:43.138 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}

11:04:53.172 response time in milliseconds: 9269.36
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:52 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:04:50 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/c95bbc17-3bd6-470e-949a-7aa01f2a1f87.json","testRuns":{"TestRun":{"id":"EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:49.673Z","testTasks":{"TestTask":{"id":"EID41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a","parent":{"ref":"EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID4e949ef8-0206-460f-9d7a-0b8bd1469bdc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID4e949ef8-0206-460f-9d7a-0b8bd1469bdc","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:43.583Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:47.683Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.003
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:04:53.179 [print] EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:04:53.180 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.002
11:04:53.182 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.002
11:04:53.185 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/c95bbc17-3bd6-470e-949a-7aa01f2a1f87.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.001
11:04:53.186 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.001
11:04:53.186 [print] statuspath TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87
* print 'progresspath ', progresspath 0.000
11:04:53.188 [print] progresspath  TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
Given path progresspath 0.000
When method GET 0.519
11:04:53.197 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:53.707 response time in milliseconds: 509.90
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:04:53 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:04:53.708 [print] {
  "val": "4",
  "max": "5",
  "log": [
    "28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)",
    "28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:04:49 - Preparing 1 Test Task:",
    "28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)",
    "28.10.2020 11:04:49 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:04:49 -  with parameters: ",
    "28.10.2020 11:04:49 - etf.testcases = *",
    "28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:04:49 - Setting state to CREATED",
    "28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z",
    "28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:04:52 - Project Properties: ",
    "28.10.2020 11:04:52 - etf.testcases - * ",
    "28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ",
    "28.10.2020 11:04:52 - username -  ",
    "28.10.2020 11:04:52 - authUser -  ",
    "28.10.2020 11:04:52 - authMethod - basic ",
    "28.10.2020 11:04:52 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 46.462
11:04:53.709 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:54.222 response time in milliseconds: 512.54
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:04:54 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized"]}

11:04:54.224 retry condition not satisfied: response.val == response.max
11:04:54.224 sleeping before retry #1
11:04:59.225 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:59.749 response time in milliseconds: 518.26
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:04:59 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized"]}

11:04:59.750 retry condition not satisfied: response.val == response.max
11:04:59.750 sleeping before retry #2
11:05:04.752 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:05.267 response time in milliseconds: 514.21
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:05:05 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"49","max":"50","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized"]}

11:05:05.268 retry condition not satisfied: response.val == response.max
11:05:05.268 sleeping before retry #3
11:05:10.269 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:10.787 response time in milliseconds: 512.88
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:05:10 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized"]}

11:05:10.788 retry condition not satisfied: response.val == response.max
11:05:10.788 sleeping before retry #4
11:05:15.789 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:16.586 response time in milliseconds: 793.73
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:05:16 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"119","max":"120","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized","28.10.2020 11:05:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:16.586 retry condition not satisfied: response.val == response.max
11:05:16.587 sleeping before retry #5
11:05:21.588 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:22.112 response time in milliseconds: 519.78
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:05:22 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"145","max":"146","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized","28.10.2020 11:05:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:22.113 retry condition not satisfied: response.val == response.max
11:05:22.113 sleeping before retry #6
11:05:27.114 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:27.638 response time in milliseconds: 519.48
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:05:27 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized","28.10.2020 11:05:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:26 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:05:27.638 retry condition not satisfied: response.val == response.max
11:05:27.638 sleeping before retry #7
11:05:32.640 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:33.156 response time in milliseconds: 515.23
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:05:33 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:04:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:49 UTC 2020)","28.10.2020 11:04:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:49 - Preparing 1 Test Task:","28.10.2020 11:04:49 -  TestTask 1 (41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a)","28.10.2020 11:04:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:49 -  with parameters: ","28.10.2020 11:04:49 - etf.testcases = *","28.10.2020 11:04:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:49 - Setting state to CREATED","28.10.2020 11:04:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:50 - Starting TestRun.c95bbc17-3bd6-470e-949a-7aa01f2a1f87 at 2020-10-28T11:04:52Z","28.10.2020 11:04:52 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:52 - Project Properties: ","28.10.2020 11:04:52 - etf.testcases - * ","28.10.2020 11:04:52 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:04:52 - username -  ","28.10.2020 11:04:52 - authUser -  ","28.10.2020 11:04:52 - authMethod - basic ","28.10.2020 11:04:52 - TestRunTask initialized","28.10.2020 11:05:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:26 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:05:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:05:33.159 retry condition not satisfied: response.val == response.max
11:05:33.160 sleeping before retry #8
11:05:38.161 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:40.168 response time in milliseconds: 2006.09
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:05:40 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:05:40.170 retry condition satisfied
* print response 0.000
11:05:40.171 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 24.816
11:05:40.173 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:04.972 response time in milliseconds: 23698.82
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Cache-Control: public, max-age=120
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:06:03 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Last-Modified: Wed, 28 Oct 2020 11:05:34 GMT
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/c95bbc17-3bd6-470e-949a-7aa01f2a1f87.json","testRuns":{"TestRun":{"id":"EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:49.673Z","testTasks":{"TestTask":{"id":"EID41803a68-c3b4-4883-b2d3-7b3e1c2cdd0a","parent":{"ref":"EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID4e949ef8-0206-460f-9d7a-0b8bd1469bdc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID4e949ef8-0206-460f-9d7a-0b8bd1469bdc","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:43.583Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:47.683Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e","testObject":{"ref":"EID4e949ef8-0206-460f-9d7a-0b8bd1469bdc"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee1c9b1-0175-1000-7d2d-4d62ff441c0a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1c9b1-0175-1000-d718-e053d94d8b4d","testStepResults":{"TestStepResult":[{"id":"EID6ee1c9b2-0175-1000-e2b0-dee1329fa352","parent":{"ref":"EID6ee1c9b1-0175-1000-d718-e053d94d8b4d"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:04:52Z","duration":11,"status":"PASSED"},{"id":"EID6ee1c9be-0175-1000-cbbe-4ba2bedfbd0a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1cd65-0175-1000-9d00-89374ddf5b96","parent":{"ref":"EID6ee1c9be-0175-1000-cbbe-4ba2bedfbd0a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cd65-0175-1000-834a-2c5fe8cada40","parent":{"ref":"EID6ee1c9be-0175-1000-cbbe-4ba2bedfbd0a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cd65-0175-1000-5fc4-4804ada62530","parent":{"ref":"EID6ee1c9be-0175-1000-cbbe-4ba2bedfbd0a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cd65-0175-1000-3a1c-8071f617e242","parent":{"ref":"EID6ee1c9be-0175-1000-cbbe-4ba2bedfbd0a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID69344057-8357-40b6-b789-9f93e45bd1ff"},{"ref":"EID927de8ae-c2d5-43cf-b388-ce1561d28b0c"},{"ref":"EIDde5d25b6-5ee4-44aa-a69c-6a27d85790a7"}]},"parent":{"ref":"EID6ee1c9b1-0175-1000-d718-e053d94d8b4d"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:04:52Z","duration":839,"status":"PASSED"}]},"parent":{"ref":"EID6ee1c9b1-0175-1000-7d2d-4d62ff441c0a"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:04:52Z","duration":956,"status":"PASSED"},{"id":"EID6ee1cd6e-0175-1000-c527-b5963da16475","testStepResults":{"TestStepResult":{"id":"EID6ee1cd6e-0175-1000-119c-00112a3fdbc0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ce9c-0175-1000-b6f8-234578733c4e","parent":{"ref":"EID6ee1cd6e-0175-1000-119c-00112a3fdbc0"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ce9c-0175-1000-d002-06d09207a37d","parent":{"ref":"EID6ee1cd6e-0175-1000-119c-00112a3fdbc0"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ce9c-0175-1000-41e1-541d2f6d5e07","parent":{"ref":"EID6ee1cd6e-0175-1000-119c-00112a3fdbc0"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb0a5e3ad-e0b3-4438-b11f-7d818ed0ac50"},{"ref":"EIDdb24ad2d-f5f2-4b80-a020-cc40f4751862"},{"ref":"EID42c0042d-ed7e-40b2-86eb-39b032eb8726"}]},"parent":{"ref":"EID6ee1cd6e-0175-1000-c527-b5963da16475"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:04:53Z","duration":227,"status":"PASSED"}},"parent":{"ref":"EID6ee1c9b1-0175-1000-7d2d-4d62ff441c0a"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:04:53Z","duration":302,"status":"PASSED"}]},"parent":{"ref":"EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:04:52Z","duration":1259,"status":"PASSED"},{"id":"EID6ee1ce9c-0175-1000-310d-88df3abd7244","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1ce9c-0175-1000-75e8-bdbf65888267","testStepResults":{"TestStepResult":[{"id":"EID6ee1ce9c-0175-1000-6e99-988923f44e1c","parent":{"ref":"EID6ee1ce9c-0175-1000-75e8-bdbf65888267"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:04:53Z","duration":237,"status":"PASSED"},{"id":"EID6ee1cea6-0175-1000-2ee1-7387cb31e000","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1d0f3-0175-1000-7cd8-40037ce8daba","parent":{"ref":"EID6ee1cea6-0175-1000-2ee1-7387cb31e000"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:04:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d0f3-0175-1000-8e91-1ff1984932c7","parent":{"ref":"EID6ee1cea6-0175-1000-2ee1-7387cb31e000"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:04:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d0f3-0175-1000-6aba-b366e17e3d36","parent":{"ref":"EID6ee1cea6-0175-1000-2ee1-7387cb31e000"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:04:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d0f3-0175-1000-2ae0-b03a643f28e6","parent":{"ref":"EID6ee1cea6-0175-1000-2ee1-7387cb31e000"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:04:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d0f3-0175-1000-e81c-1efd0e790701","parent":{"ref":"EID6ee1cea6-0175-1000-2ee1-7387cb31e000"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:04:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID64b59a0a-cba7-4f23-88b3-d89139e11d89"},{"ref":"EID17f30054-282f-43b5-a523-a238bd6e090c"},{"ref":"EID53342e07-5a8e-43ff-9b06-e82c70747f69"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-75e8-bdbf65888267"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:04:53Z","duration":413,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:04:53Z","duration":665,"status":"PASSED"},{"id":"EID6ee1d13c-0175-1000-eaf9-96430aed48d0","testStepResults":{"TestStepResult":[{"id":"EID6ee1d13c-0175-1000-20d4-95bb84895c17","attachments":{"attachment":[{"ref":"EID043780cc-ca1c-4e50-8a99-436d0804ded1"},{"ref":"EID46287357-c9d1-42ec-a3f4-26aeedf9a66b"}]},"parent":{"ref":"EID6ee1d13c-0175-1000-eaf9-96430aed48d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:04:54Z","duration":448,"status":"PASSED"},{"id":"EID6ee1d336-0175-1000-e0da-c4b9d4bda496","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1d761-0175-1000-aa2d-e410dd14c870","parent":{"ref":"EID6ee1d336-0175-1000-e0da-c4b9d4bda496"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d761-0175-1000-17fe-c979bb49ee79","parent":{"ref":"EID6ee1d336-0175-1000-e0da-c4b9d4bda496"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d761-0175-1000-f78c-4addedc378bb","parent":{"ref":"EID6ee1d336-0175-1000-e0da-c4b9d4bda496"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d761-0175-1000-f75e-aa3055fec2bf","parent":{"ref":"EID6ee1d336-0175-1000-e0da-c4b9d4bda496"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0e4d695d-2059-48d4-88e8-97ea6a1e9143"},{"ref":"EID01a72594-3e38-468c-8c0c-6fe81abaedec"},{"ref":"EID9ca97ca2-0953-4584-a50c-f6285c1a076c"}]},"parent":{"ref":"EID6ee1d13c-0175-1000-eaf9-96430aed48d0"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:04:54Z","duration":950,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:04:54Z","duration":1581,"status":"PASSED"},{"id":"EID6ee1d769-0175-1000-b7b9-66c3f7dbca4e","testStepResults":{"TestStepResult":[{"id":"EID6ee1d769-0175-1000-fbb3-674265c93ac9","attachments":{"attachment":[{"ref":"EID3f8e2d7b-c861-4e34-a014-26796be50688"},{"ref":"EIDef6885d3-8745-492b-82ba-7bb8bb781ca8"}]},"parent":{"ref":"EID6ee1d769-0175-1000-b7b9-66c3f7dbca4e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:04:55Z","duration":250,"status":"PASSED"},{"id":"EID6ee1d898-0175-1000-2e5f-c7a4f1b26657","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1da6d-0175-1000-e092-48ec18a21d65","parent":{"ref":"EID6ee1d898-0175-1000-2e5f-c7a4f1b26657"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1da6d-0175-1000-6929-fc63da245c57","parent":{"ref":"EID6ee1d898-0175-1000-2e5f-c7a4f1b26657"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1da6d-0175-1000-da1e-5aab872b4061","parent":{"ref":"EID6ee1d898-0175-1000-2e5f-c7a4f1b26657"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1da6d-0175-1000-6de0-16ee0b73efd1","parent":{"ref":"EID6ee1d898-0175-1000-2e5f-c7a4f1b26657"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1da6d-0175-1000-f7cb-b8e004c8ef60","parent":{"ref":"EID6ee1d898-0175-1000-2e5f-c7a4f1b26657"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb2da79e0-a4bc-488d-9b43-f700b1427133"},{"ref":"EID01ce9c8a-ab43-42df-b5fd-ae48d91eb1cf"},{"ref":"EID8f9acdcb-5600-4b9e-b2c2-077afd7713ac"}]},"parent":{"ref":"EID6ee1d769-0175-1000-b7b9-66c3f7dbca4e"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:04:56Z","duration":368,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:04:55Z","duration":772,"status":"PASSED"},{"id":"EID6ee1da6d-0175-1000-cb0a-ec7db3380d3e","testStepResults":{"TestStepResult":[{"id":"EID6ee1da6d-0175-1000-c157-94ac16ea6bf0","attachments":{"attachment":[{"ref":"EIDd83c2bc3-fa43-4533-803b-7ac6efb102b8"},{"ref":"EID417810c5-3328-4544-9be3-7d0be803d152"}]},"parent":{"ref":"EID6ee1da6d-0175-1000-cb0a-ec7db3380d3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:04:56Z","duration":449,"status":"PASSED"},{"id":"EID6ee1dc85-0175-1000-6f54-961c2b999a43","parent":{"ref":"EID6ee1da6d-0175-1000-cb0a-ec7db3380d3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dc85-0175-1000-53e2-122117d1dada","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1dfe0-0175-1000-3951-f5659e191525","parent":{"ref":"EID6ee1dc85-0175-1000-53e2-122117d1dada"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfe0-0175-1000-d445-649b0d5d32bc","parent":{"ref":"EID6ee1dc85-0175-1000-53e2-122117d1dada"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfe0-0175-1000-39d9-41927cca377c","parent":{"ref":"EID6ee1dc85-0175-1000-53e2-122117d1dada"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfe0-0175-1000-b797-cd6a4a56ffd5","parent":{"ref":"EID6ee1dc85-0175-1000-53e2-122117d1dada"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID08b4fbcd-5fc5-41a9-9bac-d423776345e3"},{"ref":"EIDf1afe642-6728-4917-b6fe-4195df32f2e3"},{"ref":"EID4c898528-6fc1-4d03-a8e8-5a432bf3f642"}]},"parent":{"ref":"EID6ee1da6d-0175-1000-cb0a-ec7db3380d3e"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:04:57Z","duration":758,"status":"PASSED"},{"id":"EID6ee1dfe0-0175-1000-52c5-e0b2539a9026","attachments":{"attachment":{"ref":"EIDa803453b-91b8-40d3-917e-e9ecbf149ca7"}},"parent":{"ref":"EID6ee1da6d-0175-1000-cb0a-ec7db3380d3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:04:58Z","duration":1,"status":"PASSED"},{"id":"EID6ee1dffa-0175-1000-d17c-60b351ef1120","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1e332-0175-1000-634a-1139c313487e","parent":{"ref":"EID6ee1dffa-0175-1000-d17c-60b351ef1120"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e332-0175-1000-13c0-b497c66862a3","parent":{"ref":"EID6ee1dffa-0175-1000-d17c-60b351ef1120"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e332-0175-1000-05f3-27bf205588ce","parent":{"ref":"EID6ee1dffa-0175-1000-d17c-60b351ef1120"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e332-0175-1000-a203-de961f0ad908","parent":{"ref":"EID6ee1dffa-0175-1000-d17c-60b351ef1120"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e332-0175-1000-7b8d-6500ee143001","parent":{"ref":"EID6ee1dffa-0175-1000-d17c-60b351ef1120"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcbbb746b-4c2d-4b39-a120-9710896644c7"},{"ref":"EIDd5acaf16-cc09-4ff1-aacd-159278d1e794"},{"ref":"EIDcd3089a3-3173-48d0-a4fc-991065ad6e15"}]},"parent":{"ref":"EID6ee1da6d-0175-1000-cb0a-ec7db3380d3e"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:04:58Z","duration":582,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:04:56Z","duration":2245,"status":"PASSED"},{"id":"EID6ee1e332-0175-1000-2105-632f7b3ca26c","testStepResults":{"TestStepResult":[{"id":"EID6ee1e332-0175-1000-7560-a82acf44d29c","attachments":{"attachment":[{"ref":"EID2d31dfc3-8e9c-4bb6-bdbe-42f4f5330a21"},{"ref":"EID55acd594-dcff-4b66-80e1-96e12d8fd01d"}]},"parent":{"ref":"EID6ee1e332-0175-1000-2105-632f7b3ca26c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:04:58Z","duration":486,"status":"PASSED"},{"id":"EID6ee1e553-0175-1000-b200-fbc842905076","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1e781-0175-1000-490f-8157916d34ef","parent":{"ref":"EID6ee1e553-0175-1000-b200-fbc842905076"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e781-0175-1000-b166-56d2c8d1ffab","parent":{"ref":"EID6ee1e553-0175-1000-b200-fbc842905076"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e781-0175-1000-b4f6-6858c911b487","parent":{"ref":"EID6ee1e553-0175-1000-b200-fbc842905076"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e781-0175-1000-538a-362fe2ef2001","parent":{"ref":"EID6ee1e553-0175-1000-b200-fbc842905076"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3b818479-62d2-4d12-b54b-abd26f5b2d1a"},{"ref":"EID123a7496-0f6c-463c-a764-e2ed86806c81"},{"ref":"EIDa78dc98f-dcda-47c1-9e14-640de3fc12f5"}]},"parent":{"ref":"EID6ee1e332-0175-1000-2105-632f7b3ca26c"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:04:59Z","duration":417,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:04:58Z","duration":1111,"status":"PASSED"},{"id":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6","testStepResults":{"TestStepResult":[{"id":"EID6ee1e78a-0175-1000-7be0-8fd01339b2b1","attachments":{"attachment":[{"ref":"EID55b61e79-55dc-403f-9514-3599288cc207"},{"ref":"EID3c65ba26-c541-4af6-8655-05ca2c55a98d"}]},"parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:05:00Z","duration":261,"status":"PASSED"},{"id":"EID6ee1e8c8-0175-1000-eec8-6befdf5b6375","parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e8c8-0175-1000-7225-949a9a411151","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1eb9e-0175-1000-da2a-f71002b1e6b9","parent":{"ref":"EID6ee1e8c8-0175-1000-7225-949a9a411151"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1eb9e-0175-1000-4ed5-c1938a879221","parent":{"ref":"EID6ee1e8c8-0175-1000-7225-949a9a411151"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1eb9e-0175-1000-51b7-985c1a834cc5","parent":{"ref":"EID6ee1e8c8-0175-1000-7225-949a9a411151"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1eb9e-0175-1000-6bb3-5f38c9fd9da4","parent":{"ref":"EID6ee1e8c8-0175-1000-7225-949a9a411151"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6677a8af-181b-4d96-895c-89766a73ac12"},{"ref":"EIDf9001d1f-2925-473a-8087-b7170e64a2fd"},{"ref":"EID79cb800e-288f-4031-a5dd-c66e2b094b0a"}]},"parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:05:00Z","duration":623,"status":"PASSED"},{"id":"EID6ee1eb9e-0175-1000-b368-90665b870cef","attachments":{"attachment":{"ref":"EIDf6b8100b-28ce-4de3-a540-2eeab7961586"}},"parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ebe5-0175-1000-c81a-132f59a00972","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ec93-0175-1000-489a-a94c67c830c6","parent":{"ref":"EID6ee1ebe5-0175-1000-c81a-132f59a00972"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ec93-0175-1000-f9c7-681e0320cc4c","parent":{"ref":"EID6ee1ebe5-0175-1000-c81a-132f59a00972"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ec93-0175-1000-231b-db39b75ff843","parent":{"ref":"EID6ee1ebe5-0175-1000-c81a-132f59a00972"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3ceaf0a1-4823-4a6d-b124-9c29813a0be5"},{"ref":"EIDb7108008-eb64-4016-a9ec-4d47daeab854"},{"ref":"EIDfe16966c-f508-4eb4-a9ac-f15063a50d0d"}]},"parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:05:01Z","duration":86,"status":"PASSED"},{"id":"EID6ee1ec94-0175-1000-ebc9-6fd9bb5e5f71","attachments":{"attachment":{"ref":"EID0cdeb08e-9eec-4b91-bf21-be2cbc7a0005"}},"parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ecc1-0175-1000-dce1-353234ba0d3d","attachments":{"attachment":{"ref":"EID2e372ad4-ea55-4414-9423-a8959a2fc979"}},"parent":{"ref":"EID6ee1e78a-0175-1000-c581-1bb53a1c54e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:05:01Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:05:00Z","duration":1347,"status":"PASSED"},{"id":"EID6ee1eccd-0175-1000-b4b2-e3c23fdf612f","testStepResults":{"TestStepResult":[{"id":"EID6ee1eccd-0175-1000-f22c-0e0eb023fa22","attachments":{"attachment":[{"ref":"EID00b4527d-e591-47e0-b7e8-6ea0583ad7d7"},{"ref":"EID66c12fa5-4d24-401a-a326-af938cceb6bf"}]},"parent":{"ref":"EID6ee1eccd-0175-1000-b4b2-e3c23fdf612f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:05:01Z","duration":1014,"status":"PASSED"},{"id":"EID6ee1f156-0175-1000-3546-676d2acd4cbc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f640-0175-1000-d3e2-c1c5dc50d7e3","parent":{"ref":"EID6ee1f156-0175-1000-3546-676d2acd4cbc"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f640-0175-1000-dfc0-d18275425b46","parent":{"ref":"EID6ee1f156-0175-1000-3546-676d2acd4cbc"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f640-0175-1000-3161-7eef42956730","parent":{"ref":"EID6ee1f156-0175-1000-3546-676d2acd4cbc"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f640-0175-1000-0804-9ee6006be247","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee1f156-0175-1000-3546-676d2acd4cbc"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDd181d402-73ff-4101-9a28-a2764e768599"},{"ref":"EID50ae0ca0-2d0e-4176-9914-c06b37c47b80"},{"ref":"EIDc1d03c2a-9b59-43aa-bac4-98af1dc82a05"}]},"parent":{"ref":"EID6ee1eccd-0175-1000-b4b2-e3c23fdf612f"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:05:02Z","duration":1042,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:05:01Z","duration":2419,"status":"PASSED_MANUAL"},{"id":"EID6ee1f641-0175-1000-0a4b-e883493008e5","testStepResults":{"TestStepResult":{"id":"EID6ee1f641-0175-1000-dc66-f41cb443c31e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1fb62-0175-1000-9230-8fe6f33349c3","parent":{"ref":"EID6ee1f641-0175-1000-dc66-f41cb443c31e"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fb62-0175-1000-b800-d0e953b8bfdb","parent":{"ref":"EID6ee1f641-0175-1000-dc66-f41cb443c31e"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fb62-0175-1000-cd5b-8b2957e0f563","parent":{"ref":"EID6ee1f641-0175-1000-dc66-f41cb443c31e"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fb62-0175-1000-d86d-5a36ab46c95a","parent":{"ref":"EID6ee1f641-0175-1000-dc66-f41cb443c31e"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04d7a905-4722-4e6d-9f28-589594955218"},{"ref":"EID58ea1b75-8a7e-4433-92b1-c5756c2e0945"},{"ref":"EIDa6d7b02e-a9fa-44ce-bfd8-67db9be6a2b4"}]},"parent":{"ref":"EID6ee1f641-0175-1000-0a4b-e883493008e5"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:05:03Z","duration":1074,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:05:03Z","duration":1318,"status":"PASSED"},{"id":"EID6ee1fb68-0175-1000-9045-ab8809aee466","testStepResults":{"TestStepResult":{"id":"EID6ee1fb68-0175-1000-bc08-5e3ae57d9a92","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1fe9e-0175-1000-75e2-1839530df9f1","parent":{"ref":"EID6ee1fb68-0175-1000-bc08-5e3ae57d9a92"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fe9f-0175-1000-094e-76d8da05352e","parent":{"ref":"EID6ee1fb68-0175-1000-bc08-5e3ae57d9a92"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fe9f-0175-1000-bce4-5167939f0458","parent":{"ref":"EID6ee1fb68-0175-1000-bc08-5e3ae57d9a92"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fe9f-0175-1000-fe32-6e462c95135d","parent":{"ref":"EID6ee1fb68-0175-1000-bc08-5e3ae57d9a92"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7e37d65-e783-4195-bed0-504ae7807dcb"},{"ref":"EID7fe7866e-b4e5-4292-9011-9ffbf1136f39"},{"ref":"EIDf65a04e7-138f-425e-a60b-5b6c33785fe6"}]},"parent":{"ref":"EID6ee1fb68-0175-1000-9045-ab8809aee466"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:05:05Z","duration":660,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:05:05Z","duration":823,"status":"PASSED"},{"id":"EID6ee1fe9f-0175-1000-5534-df7c5b087518","testStepResults":{"TestStepResult":[{"id":"EID6ee1fe9f-0175-1000-0d51-c9ef334c22e6","attachments":{"attachment":[{"ref":"EID71de321e-995e-4536-8b80-2403f76c796c"},{"ref":"EID4b4a15b1-d399-4ac1-a678-4b3835ea14df"},{"ref":"EIDb31abbe9-5f4d-4da9-9e54-e30f6b2acdaa"},{"ref":"EIDd66d3a5a-e77e-4b78-bbb8-5681107779ef"},{"ref":"EID1703c5b1-2fc1-4be4-be7a-71c38e3a700b"},{"ref":"EIDbd103640-90c9-4bf5-b09e-208a446e622c"},{"ref":"EID4d642931-8d56-44e1-bfec-92a55a72aaca"},{"ref":"EID2a139ac5-b137-4f51-8436-1380c3a33c85"},{"ref":"EIDaabde014-2d88-4ed1-904e-10bd96a46e07"},{"ref":"EIDf3c82693-59f0-403f-916f-480d8bdebaa6"},{"ref":"EID9dcf19bb-ffb3-492f-bc03-1dda911912e0"},{"ref":"EIDbfa1ae89-5b94-4b71-9da3-4b91c63dc6e3"}]},"parent":{"ref":"EID6ee1fe9f-0175-1000-5534-df7c5b087518"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:05:05Z","duration":1323,"status":"PASSED"},{"id":"EID6ee20514-0175-1000-cd6b-329e8a5b240b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2070a-0175-1000-a92c-9f995c24dd7e","parent":{"ref":"EID6ee20514-0175-1000-cd6b-329e8a5b240b"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2070a-0175-1000-1887-767ca92391d6","parent":{"ref":"EID6ee20514-0175-1000-cd6b-329e8a5b240b"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2070a-0175-1000-d923-18c93922125d","parent":{"ref":"EID6ee20514-0175-1000-cd6b-329e8a5b240b"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2070a-0175-1000-268f-5e4b4b285da5","parent":{"ref":"EID6ee20514-0175-1000-cd6b-329e8a5b240b"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee2070a-0175-1000-433d-48655f86350e","parent":{"ref":"EID6ee20514-0175-1000-cd6b-329e8a5b240b"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4f52fdbd-d566-4de4-97fa-1767514312e1"},{"ref":"EID243a5325-591a-48f0-9935-29e394976941"},{"ref":"EIDdb2f09be-534b-45be-9c6c-cf1e278d0eec"}]},"parent":{"ref":"EID6ee1fe9f-0175-1000-5534-df7c5b087518"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:05:07Z","duration":326,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:05:05Z","duration":2193,"status":"PASSED"},{"id":"EID6ee20730-0175-1000-235d-2d0a66ade21a","testStepResults":{"TestStepResult":{"id":"EID6ee20730-0175-1000-eee8-3699d9304586","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20a84-0175-1000-7e20-7e0b8c222d82","parent":{"ref":"EID6ee20730-0175-1000-eee8-3699d9304586"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20a84-0175-1000-621d-47005556a578","parent":{"ref":"EID6ee20730-0175-1000-eee8-3699d9304586"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20a84-0175-1000-0604-91b73e93c949","parent":{"ref":"EID6ee20730-0175-1000-eee8-3699d9304586"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee20a84-0175-1000-7a17-5cfc70896ee7","parent":{"ref":"EID6ee20730-0175-1000-eee8-3699d9304586"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2559475c-2721-46bc-9b7d-1ef977518db0"},{"ref":"EIDd268bf34-a07f-4aa3-9bc6-398f914b0ad4"},{"ref":"EIDbb47a59d-050b-4e38-960c-b5999aaf0fc2"}]},"parent":{"ref":"EID6ee20730-0175-1000-235d-2d0a66ade21a"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:05:08Z","duration":747,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:05:08Z","duration":852,"status":"PASSED"},{"id":"EID6ee20a84-0175-1000-d568-22881b8904af","testStepResults":{"TestStepResult":{"id":"EID6ee20a84-0175-1000-c50b-6266086b1ffc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20cda-0175-1000-214f-0659e7f4b6bc","parent":{"ref":"EID6ee20a84-0175-1000-c50b-6266086b1ffc"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20cda-0175-1000-5190-146b6727b019","parent":{"ref":"EID6ee20a84-0175-1000-c50b-6266086b1ffc"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20cda-0175-1000-7e76-1fe80260ab71","parent":{"ref":"EID6ee20a84-0175-1000-c50b-6266086b1ffc"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20cda-0175-1000-2cbb-3ab3429f622d","parent":{"ref":"EID6ee20a84-0175-1000-c50b-6266086b1ffc"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20cda-0175-1000-bcf6-648fa735303f","parent":{"ref":"EID6ee20a84-0175-1000-c50b-6266086b1ffc"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee20cda-0175-1000-cfb8-acc4c4bbe84a","parent":{"ref":"EID6ee20a84-0175-1000-c50b-6266086b1ffc"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:05:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbc189bc4-3eeb-4997-9d7a-f9ca4501e612"},{"ref":"EIDdd615e3b-2bd5-4605-b9a0-fb0bbdc87081"},{"ref":"EID6636da7a-04d2-4a99-bdb8-ba336168d35c"}]},"parent":{"ref":"EID6ee20a84-0175-1000-d568-22881b8904af"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:05:08Z","duration":399,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:05:08Z","duration":598,"status":"PASSED"},{"id":"EID6ee20cde-0175-1000-16eb-fa59168873bd","testStepResults":{"TestStepResult":{"id":"EID6ee20cde-0175-1000-db01-c9a99abbac74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20eb3-0175-1000-5262-b2372a57ac94","parent":{"ref":"EID6ee20cde-0175-1000-db01-c9a99abbac74"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20eb3-0175-1000-e6a2-45cff9a852ba","parent":{"ref":"EID6ee20cde-0175-1000-db01-c9a99abbac74"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20eb3-0175-1000-6319-628ca3b73bbd","parent":{"ref":"EID6ee20cde-0175-1000-db01-c9a99abbac74"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20eb3-0175-1000-3e61-73308beac88a","parent":{"ref":"EID6ee20cde-0175-1000-db01-c9a99abbac74"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20eb3-0175-1000-91c1-e5f234a63dee","parent":{"ref":"EID6ee20cde-0175-1000-db01-c9a99abbac74"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20eb3-0175-1000-d475-67b3d8407541","parent":{"ref":"EID6ee20cde-0175-1000-db01-c9a99abbac74"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaeff1bda-d807-4986-9ffc-0786f2857f4a"},{"ref":"EID8c7bbe41-15d4-4454-972f-3e64f8e697f1"},{"ref":"EID16cfd46f-9b85-48c4-b162-53d60f27eb52"}]},"parent":{"ref":"EID6ee20cde-0175-1000-16eb-fa59168873bd"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:05:09Z","duration":287,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:05:09Z","duration":469,"status":"PASSED"},{"id":"EID6ee20eb3-0175-1000-bc7b-c23696054051","testStepResults":{"TestStepResult":{"id":"EID6ee20eb3-0175-1000-efd7-a5d33a7a6002","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2101c-0175-1000-b3a3-bba944f70c77","parent":{"ref":"EID6ee20eb3-0175-1000-efd7-a5d33a7a6002"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee2101c-0175-1000-62a9-2b7d63a85ec8","parent":{"ref":"EID6ee20eb3-0175-1000-efd7-a5d33a7a6002"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee2101c-0175-1000-56f2-d8937bedbf8b","parent":{"ref":"EID6ee20eb3-0175-1000-efd7-a5d33a7a6002"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee2101c-0175-1000-d38e-0b3d46dfa2bd","parent":{"ref":"EID6ee20eb3-0175-1000-efd7-a5d33a7a6002"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDac671c52-7066-4ec1-9b69-ae3830308107"},{"ref":"EIDa4dc2033-9469-4587-b15d-d4eefa796820"},{"ref":"EID70ad4409-970e-412c-945b-5d6b93db41d0"}]},"parent":{"ref":"EID6ee20eb3-0175-1000-bc7b-c23696054051"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:05:10Z","duration":212,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:05:10Z","duration":361,"status":"PASSED"},{"id":"EID6ee2101c-0175-1000-fd8b-9905c115a0ca","testStepResults":{"TestStepResult":[{"id":"EID6ee2101c-0175-1000-a8c6-f399aaed35cb","attachments":{"attachment":[{"ref":"EIDdd30ea41-4f60-4937-b780-721a0411a6f2"},{"ref":"EID23b6e168-1740-4503-9564-44361495598f"},{"ref":"EID9df59927-9e0a-4b09-8f42-dcb6c7429eec"},{"ref":"EID27b42ac2-5706-4a3c-b003-b25220bf12d9"}]},"parent":{"ref":"EID6ee2101c-0175-1000-fd8b-9905c115a0ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:05:10Z","duration":506,"status":"PASSED"},{"id":"EID6ee2125b-0175-1000-f83c-66dac8f26b32","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee214f3-0175-1000-df51-48c1753a3d73","parent":{"ref":"EID6ee2125b-0175-1000-f83c-66dac8f26b32"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee214f3-0175-1000-fc2a-81f8381afe79","parent":{"ref":"EID6ee2125b-0175-1000-f83c-66dac8f26b32"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee214f3-0175-1000-e1bc-b461603116de","parent":{"ref":"EID6ee2125b-0175-1000-f83c-66dac8f26b32"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:05:11Z","duration":1,"status":"PASSED"},{"id":"EID6ee214f4-0175-1000-dd88-ecd2fd4aab40","parent":{"ref":"EID6ee2125b-0175-1000-f83c-66dac8f26b32"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4a575bd-a617-4b3e-aa5a-463eac1e3837"},{"ref":"EIDa2bd79f3-cd86-4eba-98dd-259839895acb"},{"ref":"EID7d09abb9-914f-4237-a507-c9d1874180f4"}]},"parent":{"ref":"EID6ee2101c-0175-1000-fd8b-9905c115a0ca"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:05:11Z","duration":534,"status":"PASSED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:05:10Z","duration":1240,"status":"PASSED"},{"id":"EID6ee214f4-0175-1000-c3ef-4fd5bccfa031","testStepResults":{"TestStepResult":{"id":"EID6ee214f4-0175-1000-da33-1d33fcbe8e88","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2163c-0175-1000-00ff-cc893d044325","parent":{"ref":"EID6ee214f4-0175-1000-da33-1d33fcbe8e88"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee2163c-0175-1000-733b-753dba48b064","parent":{"ref":"EID6ee214f4-0175-1000-da33-1d33fcbe8e88"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee2163c-0175-1000-78df-3e94883894d5","parent":{"ref":"EID6ee214f4-0175-1000-da33-1d33fcbe8e88"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee2163c-0175-1000-66f9-c8aeafe9d9f0","parent":{"ref":"EID6ee214f4-0175-1000-da33-1d33fcbe8e88"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4fe4bdae-30bc-436e-b5cd-6abb6cc8f3b4"},{"ref":"EID3e61cad3-5461-401c-a292-4f8e1b9d5695"},{"ref":"EIDbd7f4be0-fd05-401c-a67a-863d6e1afcf0"}]},"parent":{"ref":"EID6ee214f4-0175-1000-c3ef-4fd5bccfa031"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:05:11Z","duration":223,"status":"PASSED"}},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:05:11Z","duration":328,"status":"PASSED"},{"id":"EID6ee2163c-0175-1000-5b02-6dad8e459eda","testStepResults":{"TestStepResult":[{"id":"EID6ee2163c-0175-1000-3326-7266565e5681","parent":{"ref":"EID6ee2163c-0175-1000-5b02-6dad8e459eda"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee2163d-0175-1000-73d4-d03d8c3b2594","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21829-0175-1000-d452-be255319141d","parent":{"ref":"EID6ee2163d-0175-1000-73d4-d03d8c3b2594"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21829-0175-1000-e2bd-94d073247fca","parent":{"ref":"EID6ee2163d-0175-1000-73d4-d03d8c3b2594"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21829-0175-1000-75d7-aa9836ebd72d","parent":{"ref":"EID6ee2163d-0175-1000-73d4-d03d8c3b2594"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21829-0175-1000-2821-5db0a08ad375","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee2163d-0175-1000-73d4-d03d8c3b2594"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0f9afe73-563c-4eaa-b2f0-cff2a8e472cf"},{"ref":"EIDc086d973-0e76-49f5-96be-b6af262396bb"},{"ref":"EID2619bcdc-6bed-4dc0-9765-19e262948c84"}]},"parent":{"ref":"EID6ee2163c-0175-1000-5b02-6dad8e459eda"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:05:11Z","duration":285,"status":"FAILED"}]},"parent":{"ref":"EID6ee1ce9c-0175-1000-310d-88df3abd7244"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:05:11Z","duration":502,"status":"FAILED"}]},"parent":{"ref":"EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:04:53Z","duration":18838,"status":"FAILED"},{"id":"EID6ee21832-0175-1000-ef60-479621527571","testCaseResults":{"TestCaseResult":[{"id":"EID6ee21832-0175-1000-3451-92d4741dcbd8","testStepResults":{"TestStepResult":[{"id":"EID6ee21832-0175-1000-43c5-34a511424c33","parent":{"ref":"EID6ee21832-0175-1000-3451-92d4741dcbd8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21833-0175-1000-4404-6df672e91cd4","parent":{"ref":"EID6ee21832-0175-1000-3451-92d4741dcbd8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:05:12Z","duration":223,"status":"PASSED"},{"id":"EID6ee21833-0175-1000-9c43-03c2bcbe65bf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee218f6-0175-1000-e2ff-2502180e6779","parent":{"ref":"EID6ee21833-0175-1000-9c43-03c2bcbe65bf"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee218f7-0175-1000-3b6d-846337840211","parent":{"ref":"EID6ee21833-0175-1000-9c43-03c2bcbe65bf"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee218f7-0175-1000-044d-d6b4c26053e0","parent":{"ref":"EID6ee21833-0175-1000-9c43-03c2bcbe65bf"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID41d57b50-3878-4bf9-842b-93ad5f3048d2"},{"ref":"EID49534472-97dc-4420-a298-f97b0c9c2cd1"},{"ref":"EID45bd2eee-d91e-4ad4-981a-a6e7b1ac0d3d"}]},"parent":{"ref":"EID6ee21832-0175-1000-3451-92d4741dcbd8"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:05:12Z","duration":45,"status":"PASSED"},{"id":"EID6ee218f7-0175-1000-a8de-3ab5362a76d0","attachments":{"attachment":{"ref":"EIDee1a9a35-2d6a-486a-81f9-734f4a27fcf9"}},"parent":{"ref":"EID6ee21832-0175-1000-3451-92d4741dcbd8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee2190d-0175-1000-46fb-1d8506b4f437","parent":{"ref":"EID6ee21832-0175-1000-3451-92d4741dcbd8"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:05:12Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:05:12Z","duration":241,"status":"PASSED"},{"id":"EID6ee21923-0175-1000-71bc-872a414c9a7b","testStepResults":{"TestStepResult":[{"id":"EID6ee21923-0175-1000-e0f3-6cbe0d92c51c","parent":{"ref":"EID6ee21923-0175-1000-71bc-872a414c9a7b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:05:12Z","duration":227,"status":"PASSED"},{"id":"EID6ee21923-0175-1000-9f22-423713012ee1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee219f9-0175-1000-55de-9bee193cdf2f","parent":{"ref":"EID6ee21923-0175-1000-9f22-423713012ee1"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee219f9-0175-1000-ca47-d057b34afed6","parent":{"ref":"EID6ee21923-0175-1000-9f22-423713012ee1"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee219f9-0175-1000-c77c-448344582de2","parent":{"ref":"EID6ee21923-0175-1000-9f22-423713012ee1"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee219f9-0175-1000-1b8e-f256bd80a323","parent":{"ref":"EID6ee21923-0175-1000-9f22-423713012ee1"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee219f9-0175-1000-e6b5-d5b272acbf92","parent":{"ref":"EID6ee21923-0175-1000-9f22-423713012ee1"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcdf322e1-c599-4e83-95e0-8769db93fd6c"},{"ref":"EID39085966-d34e-4981-a585-edce543e4924"},{"ref":"EIDd68aa5f4-65fd-4d09-8e8b-59ec3daec105"}]},"parent":{"ref":"EID6ee21923-0175-1000-71bc-872a414c9a7b"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:05:12Z","duration":145,"status":"PASSED"}]},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:05:12Z","duration":214,"status":"PASSED"},{"id":"EID6ee219f9-0175-1000-a533-d5ccc43722be","testStepResults":{"TestStepResult":[{"id":"EID6ee219f9-0175-1000-1263-82991a2382db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21b27-0175-1000-50e0-29e8ba39e23a","parent":{"ref":"EID6ee219f9-0175-1000-1263-82991a2382db"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee21b27-0175-1000-20ef-6ea75b520527","parent":{"ref":"EID6ee219f9-0175-1000-1263-82991a2382db"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee21b27-0175-1000-e8d4-3c7000cd9680","parent":{"ref":"EID6ee219f9-0175-1000-1263-82991a2382db"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0975fc9b-ebdf-4a34-9b5c-d14bcb8bf613"},{"ref":"EIDa198cb7d-14c3-41f9-b899-0ef2221bf353"},{"ref":"EID0ca75442-800b-4b8c-9737-86d96b550b31"}]},"parent":{"ref":"EID6ee219f9-0175-1000-a533-d5ccc43722be"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:05:12Z","duration":231,"status":"PASSED"},{"id":"EID6ee21b27-0175-1000-6ed4-bc3b0beb0688","attachments":{"attachment":{"ref":"EID33070391-8acf-4323-8797-15375c55dde7"}},"parent":{"ref":"EID6ee219f9-0175-1000-a533-d5ccc43722be"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:05:13Z","duration":1,"status":"PASSED"},{"id":"EID6ee21b34-0175-1000-ce16-630395232ebf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21e4a-0175-1000-bbae-618b2383f6c7","parent":{"ref":"EID6ee21b34-0175-1000-ce16-630395232ebf"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e4a-0175-1000-5d59-34a85bbae9a0","parent":{"ref":"EID6ee21b34-0175-1000-ce16-630395232ebf"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e4a-0175-1000-ec63-e7c7098cafbd","parent":{"ref":"EID6ee21b34-0175-1000-ce16-630395232ebf"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e4a-0175-1000-504d-5781b7c709be","parent":{"ref":"EID6ee21b34-0175-1000-ce16-630395232ebf"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e4a-0175-1000-2140-787cc35800e0","parent":{"ref":"EID6ee21b34-0175-1000-ce16-630395232ebf"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d7496f7-3704-4698-aa4a-6e1a84a7d921"},{"ref":"EID315a07e5-728c-4e5a-a060-287f344bc3eb"},{"ref":"EIDe377633b-7dd4-4178-b4de-a552ba3551ef"}]},"parent":{"ref":"EID6ee219f9-0175-1000-a533-d5ccc43722be"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:05:13Z","duration":717,"status":"PASSED"}]},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:05:12Z","duration":1105,"status":"PASSED"},{"id":"EID6ee21e4b-0175-1000-091b-e6e329a0dd55","testStepResults":{"TestStepResult":[{"id":"EID6ee21e4b-0175-1000-84a2-dd3df7e8e020","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21ecb-0175-1000-6612-b584415a0d39","parent":{"ref":"EID6ee21e4b-0175-1000-84a2-dd3df7e8e020"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21ecb-0175-1000-80bb-5582462153f3","parent":{"ref":"EID6ee21e4b-0175-1000-84a2-dd3df7e8e020"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21ecb-0175-1000-bc5b-f011a49f6708","parent":{"ref":"EID6ee21e4b-0175-1000-84a2-dd3df7e8e020"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21ecb-0175-1000-82b6-66c7ee2d6aae","parent":{"ref":"EID6ee21e4b-0175-1000-84a2-dd3df7e8e020"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92e80a1b-d744-44e1-9ddb-ff6b54b7a179"},{"ref":"EID189acc94-dc5d-40bd-9b6b-b3f77677227e"},{"ref":"EIDa312cb05-6f32-4bcd-af7e-cbad95a8d3d3"}]},"parent":{"ref":"EID6ee21e4b-0175-1000-091b-e6e329a0dd55"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:05:14Z","duration":34,"status":"PASSED"},{"id":"EID6ee21ecb-0175-1000-ee2e-e3ec88c196a2","attachments":{"attachment":{"ref":"EID7ee85e90-4975-421b-b393-80bac79b53af"}},"parent":{"ref":"EID6ee21e4b-0175-1000-091b-e6e329a0dd55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:05:14Z","duration":1,"status":"PASSED"},{"id":"EID6ee21ee7-0175-1000-5602-0b0151d5d317","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee22056-0175-1000-437f-ee2ad60b82d9","parent":{"ref":"EID6ee21ee7-0175-1000-5602-0b0151d5d317"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee22056-0175-1000-554c-e12e260aea37","parent":{"ref":"EID6ee21ee7-0175-1000-5602-0b0151d5d317"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5a42c3e9-25d9-4632-b03f-0edd549f3f70"},{"ref":"EIDdcb55224-56f5-47da-bb9b-3527cbe59e0e"}]},"parent":{"ref":"EID6ee21e4b-0175-1000-091b-e6e329a0dd55"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:05:14Z","duration":362,"status":"PASSED"},{"id":"EID6ee22056-0175-1000-0811-d6e227d54165","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee221d5-0175-1000-f6b5-444743b25273","parent":{"ref":"EID6ee22056-0175-1000-0811-d6e227d54165"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee221d5-0175-1000-c72b-1ca6303dd61a","parent":{"ref":"EID6ee22056-0175-1000-0811-d6e227d54165"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee221d5-0175-1000-7f98-6c5f13ce67dd","parent":{"ref":"EID6ee22056-0175-1000-0811-d6e227d54165"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee221d5-0175-1000-e055-f4504e65315c","parent":{"ref":"EID6ee22056-0175-1000-0811-d6e227d54165"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf0b924b7-4da8-4e78-8c69-a12cf2a96f0f"},{"ref":"EIDbe2e82c5-1b80-40cd-ab2a-e47fdc53d89e"},{"ref":"EID7170c61e-e7ca-4ab8-916a-c1ebb608ab55"}]},"parent":{"ref":"EID6ee21e4b-0175-1000-091b-e6e329a0dd55"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:05:14Z","duration":206,"status":"PASSED"}]},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:05:14Z","duration":929,"status":"PASSED"},{"id":"EID6ee221ec-0175-1000-40cf-fe046cb825c7","testStepResults":{"TestStepResult":{"id":"EID6ee221ec-0175-1000-b9ba-0100b5a321d2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee22642-0175-1000-902e-abeb00995199","parent":{"ref":"EID6ee221ec-0175-1000-b9ba-0100b5a321d2"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee22642-0175-1000-e00b-0865a2cf2d59","parent":{"ref":"EID6ee221ec-0175-1000-b9ba-0100b5a321d2"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee22642-0175-1000-9df2-ceccf1ddfee4","parent":{"ref":"EID6ee221ec-0175-1000-b9ba-0100b5a321d2"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc7b7747f-9224-45d1-a08a-779afe1a3f2d"},{"ref":"EID2d55a431-c280-42f3-abeb-1d20d000931c"},{"ref":"EID61a11c77-c789-4f18-ab9a-a6c2d116a865"}]},"parent":{"ref":"EID6ee221ec-0175-1000-40cf-fe046cb825c7"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:05:14Z","duration":1036,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:05:14Z","duration":1110,"status":"PASSED"},{"id":"EID6ee22642-0175-1000-51f8-273c4578853b","testStepResults":{"TestStepResult":{"id":"EID6ee2264b-0175-1000-3ef0-178ace31c0b6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee228c5-0175-1000-29bb-4a16252c89a0","parent":{"ref":"EID6ee2264b-0175-1000-3ef0-178ace31c0b6"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee228c5-0175-1000-2c9f-bf97b50e1c2f","parent":{"ref":"EID6ee2264b-0175-1000-3ef0-178ace31c0b6"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee228c5-0175-1000-fb20-ee5d89dd9044","parent":{"ref":"EID6ee2264b-0175-1000-3ef0-178ace31c0b6"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ca795d3-ff21-4d57-9202-462404a046c4"},{"ref":"EIDd45bbf96-02a8-4ce0-8c73-23aae385e47b"},{"ref":"EIDcfab53af-fb31-44ed-9b4d-3f5aab5c692f"}]},"parent":{"ref":"EID6ee22642-0175-1000-51f8-273c4578853b"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:05:16Z","duration":578,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:05:16Z","duration":643,"status":"PASSED"},{"id":"EID6ee228c6-0175-1000-1558-db9741251054","testStepResults":{"TestStepResult":{"id":"EID6ee228c6-0175-1000-fb5c-6f996162e269","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2301a-0175-1000-06e8-b442754bc723","parent":{"ref":"EID6ee228c6-0175-1000-fb5c-6f996162e269"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee2301a-0175-1000-527d-64ee0e26260f","parent":{"ref":"EID6ee228c6-0175-1000-fb5c-6f996162e269"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee2301a-0175-1000-4edd-498e4b36c3e6","parent":{"ref":"EID6ee228c6-0175-1000-fb5c-6f996162e269"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee2301a-0175-1000-809e-d2e7bba1a662","parent":{"ref":"EID6ee228c6-0175-1000-fb5c-6f996162e269"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee2301a-0175-1000-4c52-640c059a22cc","parent":{"ref":"EID6ee228c6-0175-1000-fb5c-6f996162e269"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf7d71c48-94b9-496f-92fd-0ced63228998"},{"ref":"EID24849ebd-135b-47b6-a8ca-b2281ef437a4"},{"ref":"EID5ca30e58-474e-4ac3-86f2-564b52731c56"}]},"parent":{"ref":"EID6ee228c6-0175-1000-1558-db9741251054"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:05:16Z","duration":1748,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:05:16Z","duration":1876,"status":"PASSED"},{"id":"EID6ee2301b-0175-1000-4331-357a37962f74","testStepResults":{"TestStepResult":{"id":"EID6ee2301b-0175-1000-f133-d8925555bdb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee23163-0175-1000-dd4c-a642ca16712c","parent":{"ref":"EID6ee2301b-0175-1000-f133-d8925555bdb4"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23163-0175-1000-caed-e21a137e4a4c","parent":{"ref":"EID6ee2301b-0175-1000-f133-d8925555bdb4"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23163-0175-1000-9108-a31435f11d7d","parent":{"ref":"EID6ee2301b-0175-1000-f133-d8925555bdb4"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDccee26c5-63e2-410a-a9e9-d9e1f8db4746"},{"ref":"EID6b1ed085-60d3-4a06-bbcd-15ef68e5983e"},{"ref":"EID55ca720e-0221-47be-9a12-eddc659633e0"}]},"parent":{"ref":"EID6ee2301b-0175-1000-4331-357a37962f74"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:05:18Z","duration":270,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:05:18Z","duration":328,"status":"PASSED"},{"id":"EID6ee23163-0175-1000-76ae-b5e97591c55a","testStepResults":{"TestStepResult":{"id":"EID6ee23163-0175-1000-bbab-38ae7de235da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee232f8-0175-1000-e1ea-b5f37736bf59","parent":{"ref":"EID6ee23163-0175-1000-bbab-38ae7de235da"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee232f8-0175-1000-ab59-95ce84873be8","parent":{"ref":"EID6ee23163-0175-1000-bbab-38ae7de235da"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee232f8-0175-1000-c706-e57cd2cb5e47","parent":{"ref":"EID6ee23163-0175-1000-bbab-38ae7de235da"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcb1ced72-259b-4806-8b79-5ad1518e33d4"},{"ref":"EIDd2e961a4-3cfe-43b6-a0a2-817dd4c96da5"},{"ref":"EID9832aa71-c3c5-4fda-88a2-77473abba7d8"}]},"parent":{"ref":"EID6ee23163-0175-1000-76ae-b5e97591c55a"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:05:18Z","duration":330,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:05:18Z","duration":413,"status":"PASSED"},{"id":"EID6ee23300-0175-1000-7710-4a6f54993975","testStepResults":{"TestStepResult":{"id":"EID6ee23300-0175-1000-7e23-8404710228bd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2357e-0175-1000-f149-b7463faad3a8","parent":{"ref":"EID6ee23300-0175-1000-7e23-8404710228bd"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee2357e-0175-1000-a53a-f25d3517ee3f","parent":{"ref":"EID6ee23300-0175-1000-7e23-8404710228bd"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee2357e-0175-1000-0f1d-7191ead7dd7a","parent":{"ref":"EID6ee23300-0175-1000-7e23-8404710228bd"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee2357e-0175-1000-df67-461c880f60d5","parent":{"ref":"EID6ee23300-0175-1000-7e23-8404710228bd"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:05:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9382c217-e288-49e8-8d04-8a43746c0a1a"},{"ref":"EID6296d878-d161-4cce-87a9-d8d8e0b03a85"},{"ref":"EIDf8844e94-b8b8-434e-b97f-a7d74a3c05f5"}]},"parent":{"ref":"EID6ee23300-0175-1000-7710-4a6f54993975"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:05:19Z","duration":540,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:05:19Z","duration":638,"status":"PASSED"},{"id":"EID6ee2357e-0175-1000-a90b-9f1665b71d64","testStepResults":{"TestStepResult":{"id":"EID6ee2357e-0175-1000-2b63-2f39e71433da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2396e-0175-1000-6c53-8e650fb63a59","parent":{"ref":"EID6ee2357e-0175-1000-2b63-2f39e71433da"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee2396e-0175-1000-2b81-13f1f8f0d413","parent":{"ref":"EID6ee2357e-0175-1000-2b63-2f39e71433da"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee2396e-0175-1000-cbe5-0f60161303f7","parent":{"ref":"EID6ee2357e-0175-1000-2b63-2f39e71433da"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee2396e-0175-1000-679d-86ea999f0d03","parent":{"ref":"EID6ee2357e-0175-1000-2b63-2f39e71433da"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID64e3c254-24cf-48e6-b57c-3cf4bd7cc67f"},{"ref":"EIDbbbf9bd1-7126-4ceb-a60e-41064e45f339"},{"ref":"EID1a615a67-7ede-47fe-b497-1e9cc4714e64"}]},"parent":{"ref":"EID6ee2357e-0175-1000-a90b-9f1665b71d64"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:05:19Z","duration":896,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:05:19Z","duration":1008,"status":"PASSED"},{"id":"EID6ee2396f-0175-1000-22f0-4ffbe82489f8","testStepResults":{"TestStepResult":[{"id":"EID6ee2396f-0175-1000-b240-7b9ac2ad2f7c","parent":{"ref":"EID6ee2396f-0175-1000-22f0-4ffbe82489f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":9,"status":"PASSED"},{"id":"EID6ee23978-0175-1000-7110-414803d9b6ee","parent":{"ref":"EID6ee2396f-0175-1000-22f0-4ffbe82489f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":640,"status":"PASSED"},{"id":"EID6ee23978-0175-1000-af72-dce8f0b68d79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee23c51-0175-1000-cd47-c8adc87a622f","parent":{"ref":"EID6ee23978-0175-1000-af72-dce8f0b68d79"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c51-0175-1000-2c04-6a146ac75f2b","parent":{"ref":"EID6ee23978-0175-1000-af72-dce8f0b68d79"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c51-0175-1000-11ca-41779d130d0d","parent":{"ref":"EID6ee23978-0175-1000-af72-dce8f0b68d79"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c51-0175-1000-c957-fdd3bd716551","parent":{"ref":"EID6ee23978-0175-1000-af72-dce8f0b68d79"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42f3374d-10f6-4f6f-bd07-24ae07242a9c"},{"ref":"EID869924ec-1017-4c47-a0ec-75c1aed202fa"},{"ref":"EID53f2cedc-cd7d-4562-8a9d-beced077661f"}]},"parent":{"ref":"EID6ee2396f-0175-1000-22f0-4ffbe82489f8"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:05:21Z","duration":580,"status":"PASSED"},{"id":"EID6ee23c51-0175-1000-4b0c-129629c2bf4a","attachments":{"attachment":{"ref":"EID0e4f63b4-4960-4959-b350-1186423116c7"}},"parent":{"ref":"EID6ee2396f-0175-1000-22f0-4ffbe82489f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":1,"status":"PASSED"},{"id":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24117-0175-1000-1920-5c9cdaa5b6ca","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-9e2c-1febae4e9772","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-af35-0412878ede8a","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-6a05-ccdbcb914e22","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-324e-9be9486d40d0","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-bed6-f3986c558017","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-6a79-f4480259e8a4","parent":{"ref":"EID6ee23c63-0175-1000-2a8a-a3bd81d7dccc"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID943247fb-89af-402c-bb23-4a456e9fb343"},{"ref":"EID0ff3d10e-34f8-4bd1-9fef-6bea7d374b46"},{"ref":"EIDe7117f01-62ab-46c7-8238-4bbc2611df29"}]},"parent":{"ref":"EID6ee2396f-0175-1000-22f0-4ffbe82489f8"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:05:21Z","duration":1120,"status":"PASSED"}]},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:05:21Z","duration":1960,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-aebc-0216ae4a7381","testStepResults":{"TestStepResult":[{"id":"EID6ee24117-0175-1000-90c1-518f981de67e","parent":{"ref":"EID6ee24117-0175-1000-aebc-0216ae4a7381"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:05:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee24117-0175-1000-ac68-43e2b0c02b51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24209-0175-1000-4c8f-8f9d59c76c40","parent":{"ref":"EID6ee24117-0175-1000-ac68-43e2b0c02b51"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee2420a-0175-1000-61b0-00fb37676654","parent":{"ref":"EID6ee24117-0175-1000-ac68-43e2b0c02b51"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee2420a-0175-1000-fd0b-b54afce03466","parent":{"ref":"EID6ee24117-0175-1000-ac68-43e2b0c02b51"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee2420a-0175-1000-7b5b-26f9dc29fb83","parent":{"ref":"EID6ee24117-0175-1000-ac68-43e2b0c02b51"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0cf85ffd-340a-41e2-b7b4-e3d0a3d61fd0"},{"ref":"EIDcbc26f36-2632-41b5-b6ab-cf12fcb947c8"},{"ref":"EIDf5823cbd-5828-42dd-b1c1-8b84aaecdd0e"}]},"parent":{"ref":"EID6ee24117-0175-1000-aebc-0216ae4a7381"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:05:22Z","duration":145,"status":"PASSED"},{"id":"EID6ee24212-0175-1000-4a9b-bc3c3146a87b","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee24222-0175-1000-f464-c0469c18d8f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24315-0175-1000-430b-de3075ee7346","parent":{"ref":"EID6ee24222-0175-1000-f464-c0469c18d8f2"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee24315-0175-1000-e5ad-fedee29f74af","parent":{"ref":"EID6ee24222-0175-1000-f464-c0469c18d8f2"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee24315-0175-1000-8579-ba325131e4fb","parent":{"ref":"EID6ee24222-0175-1000-f464-c0469c18d8f2"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbf882134-b3a2-4ca5-8847-d308ab98d26c"},{"ref":"EID15feadf0-ff43-4ae9-b521-2394299345bc"},{"ref":"EID9a4b0061-2236-436d-b6e7-4529423143a5"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:23Z","duration":151,"status":"PASSED"},{"id":"EID6ee24317-0175-1000-792e-ea52e79df9ff","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee243e7-0175-1000-be84-0ec184c5174b","parent":{"ref":"EID6ee24317-0175-1000-792e-ea52e79df9ff"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee243e7-0175-1000-4e0d-44b086fe3a2c","parent":{"ref":"EID6ee24317-0175-1000-792e-ea52e79df9ff"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee243e7-0175-1000-1a8c-450f494d2bdf","parent":{"ref":"EID6ee24317-0175-1000-792e-ea52e79df9ff"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa742f4fa-5a9b-4618-85cd-42fecdfac674"},{"ref":"EIDc4c8a7bf-5d86-4765-812a-064120491872"},{"ref":"EID719cee57-ad09-44e6-b61b-121fae9ff74c"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:23Z","duration":152,"status":"PASSED"},{"id":"EID6ee243e8-0175-1000-d226-b889800e38b7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee244bf-0175-1000-5333-21f49d3a04e3","parent":{"ref":"EID6ee243e8-0175-1000-d226-b889800e38b7"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee244bf-0175-1000-f9e4-4d71913b2e42","parent":{"ref":"EID6ee243e8-0175-1000-d226-b889800e38b7"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee244bf-0175-1000-7076-c692665bb9fb","parent":{"ref":"EID6ee243e8-0175-1000-d226-b889800e38b7"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf5a8bf63-1dbe-4af7-9428-096bd0314bcf"},{"ref":"EIDd5eb9a10-cdf2-414f-ad2f-2cc56bc2c83d"},{"ref":"EID375a5a16-a7d7-4b69-9522-4452cc6073b5"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:23Z","duration":151,"status":"PASSED"}]},"parent":{"ref":"EID6ee24117-0175-1000-aebc-0216ae4a7381"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:05:23Z","duration":685,"status":"PASSED"},{"id":"EID6ee244c0-0175-1000-2d16-e076933c2798","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee246da-0175-1000-ca65-90d7a0ce7ace","parent":{"ref":"EID6ee244c0-0175-1000-2d16-e076933c2798"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:05:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee246da-0175-1000-1cde-beaefd7c9fe4","parent":{"ref":"EID6ee244c0-0175-1000-2d16-e076933c2798"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:05:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee246da-0175-1000-9591-8e9398e4a766","parent":{"ref":"EID6ee244c0-0175-1000-2d16-e076933c2798"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:05:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee246da-0175-1000-6f9c-596150427e5f","parent":{"ref":"EID6ee244c0-0175-1000-2d16-e076933c2798"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:05:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf00a84e0-7aae-4eb5-92d0-a60bfbf3eb04"},{"ref":"EID7fed213e-9e54-42ad-ac87-a2be2b8a587a"},{"ref":"EID3aa00086-5a1b-45f6-a3b6-983fd836cc3a"}]},"parent":{"ref":"EID6ee24117-0175-1000-aebc-0216ae4a7381"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:05:23Z","duration":477,"status":"PASSED"}]},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:05:22Z","duration":1475,"status":"PASSED"},{"id":"EID6ee246da-0175-1000-f881-fc76c0be1032","testStepResults":{"TestStepResult":{"id":"EID6ee246e3-0175-1000-5346-88f904155b00","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24951-0175-1000-6f67-4dd983572884","parent":{"ref":"EID6ee246e3-0175-1000-5346-88f904155b00"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee24951-0175-1000-7bb7-9ef026bd264f","parent":{"ref":"EID6ee246e3-0175-1000-5346-88f904155b00"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee24951-0175-1000-add1-2b6f5dfe63c0","parent":{"ref":"EID6ee246e3-0175-1000-5346-88f904155b00"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee24951-0175-1000-1904-40720ddc9938","parent":{"ref":"EID6ee246e3-0175-1000-5346-88f904155b00"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d54d779-3b04-4994-a8c4-c07580e76a1f"},{"ref":"EIDf50070cd-3dda-403a-85f6-9eaabb248e16"},{"ref":"EIDd95f3b00-0834-472e-8e7c-5b8a56c90a5e"}]},"parent":{"ref":"EID6ee246da-0175-1000-f881-fc76c0be1032"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:05:24Z","duration":540,"status":"PASSED"}},"parent":{"ref":"EID6ee21832-0175-1000-ef60-479621527571"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:05:24Z","duration":631,"status":"PASSED"}]},"parent":{"ref":"EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:05:12Z","duration":12575,"status":"PASSED"},{"id":"EID6ee24951-0175-1000-5a58-8883298a5b50","testCaseResults":{"TestCaseResult":[{"id":"EID6ee24951-0175-1000-3e92-c74047224e21","testStepResults":{"TestStepResult":[{"id":"EID6ee24951-0175-1000-e67f-488700f7dfda","parent":{"ref":"EID6ee24951-0175-1000-3e92-c74047224e21"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:05:25Z","duration":971,"status":"PASSED"},{"id":"EID6ee24951-0175-1000-0bcd-4cd75f49d73d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24c4c-0175-1000-b1a6-38cc5b3b69b5","parent":{"ref":"EID6ee24951-0175-1000-0bcd-4cd75f49d73d"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee24c4c-0175-1000-1846-c3d262e76622","parent":{"ref":"EID6ee24951-0175-1000-0bcd-4cd75f49d73d"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee24c4c-0175-1000-acc2-628cbad49c98","parent":{"ref":"EID6ee24951-0175-1000-0bcd-4cd75f49d73d"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8fba67e7-64e5-4014-9da6-f799441f442e"},{"ref":"EIDc0fa2244-438d-4133-9cc2-a35a89ad0203"},{"ref":"EID608e39d5-b222-486a-bd22-e110326ecc38"}]},"parent":{"ref":"EID6ee24951-0175-1000-3e92-c74047224e21"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:05:25Z","duration":647,"status":"PASSED"},{"id":"EID6ee24c4d-0175-1000-3fcd-c38b988dd899","attachments":{"attachment":{"ref":"EIDadfe8cd2-d505-4dec-be61-1ebe2681e08f"}},"parent":{"ref":"EID6ee24951-0175-1000-3e92-c74047224e21"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:05:25Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:05:25Z","duration":775,"status":"PASSED"},{"id":"EID6ee24c62-0175-1000-7786-f9326369d294","testStepResults":{"TestStepResult":[{"id":"EID6ee24c62-0175-1000-656d-ea08bc883eb4","parent":{"ref":"EID6ee24c62-0175-1000-7786-f9326369d294"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:05:25Z","duration":971,"status":"PASSED"},{"id":"EID6ee24c62-0175-1000-6f49-68d36f9ce243","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24d08-0175-1000-b90a-f815285d2e26","parent":{"ref":"EID6ee24c62-0175-1000-6f49-68d36f9ce243"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24d08-0175-1000-2839-48fa76a99441","parent":{"ref":"EID6ee24c62-0175-1000-6f49-68d36f9ce243"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24d08-0175-1000-784f-0bac8ce376ce","parent":{"ref":"EID6ee24c62-0175-1000-6f49-68d36f9ce243"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24d08-0175-1000-12de-37ac75717bdb","parent":{"ref":"EID6ee24c62-0175-1000-6f49-68d36f9ce243"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb03c0164-54a0-40b0-ab31-aa922cff87c2"},{"ref":"EID301ba5a4-7c53-4279-9f36-33e960ad60cb"},{"ref":"EIDee4d4335-4137-4801-bea4-b037ec36843a"}]},"parent":{"ref":"EID6ee24c62-0175-1000-7786-f9326369d294"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:05:25Z","duration":90,"status":"PASSED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:05:25Z","duration":166,"status":"PASSED"},{"id":"EID6ee24d08-0175-1000-ab57-9c9dd2150c94","testStepResults":{"TestStepResult":[{"id":"EID6ee24d08-0175-1000-ae69-e0a998a02706","parent":{"ref":"EID6ee24d08-0175-1000-ab57-9c9dd2150c94"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":971,"status":"PASSED"},{"id":"EID6ee24d08-0175-1000-8623-1f6bf5463a78","parent":{"ref":"EID6ee24d08-0175-1000-ab57-9c9dd2150c94"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24dfa-0175-1000-8b7b-72755a3472e8","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dfa-0175-1000-2960-168d8536479f","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dfa-0175-1000-5b37-795386c15151","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dfa-0175-1000-69e0-fc8528fc034f","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dfa-0175-1000-ee70-8a8a1163a0f7","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dfa-0175-1000-11a2-5334714891bd","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dfa-0175-1000-7eee-935b20a17d09","parent":{"ref":"EID6ee24d08-0175-1000-2c8c-b4f3c0cdd993"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf79f60bc-f045-45e8-a41e-39e00d5b5f6b"},{"ref":"EIDe51aa5f5-15e7-412a-8e4e-2141c26f266f"},{"ref":"EIDd1b82be8-3fa6-468c-b7c4-6576a1060585"}]},"parent":{"ref":"EID6ee24d08-0175-1000-ab57-9c9dd2150c94"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:05:26Z","duration":129,"status":"PASSED"},{"id":"EID6ee24e04-0175-1000-8d0e-9cc2cb245b2d","invokedTests":{"":null,"TestStepResult":{"id":"EID6ee24e2a-0175-1000-b37e-9338ae8be267","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2503d-0175-1000-4a66-b0fad5bf19b4","parent":{"ref":"EID6ee24e2a-0175-1000-b37e-9338ae8be267"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee2503d-0175-1000-0e42-d1c13d721494","parent":{"ref":"EID6ee24e2a-0175-1000-b37e-9338ae8be267"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee2503d-0175-1000-7d1d-e0f8016f7a1e","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"parent":{"ref":"EID6ee24e2a-0175-1000-b37e-9338ae8be267"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-28T11:05:26Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID19ecc343-1a1a-42a8-b0a1-64da3ca6c24e"},{"ref":"EID5a56053f-c2de-4274-9e5b-c573c8df9e13"},{"ref":"EID91303d53-b89e-40bb-97c2-d5342549141b"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-28T11:05:26Z","duration":363,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EID71f4a6da-5b3a-4b70-ad49-01364381d8dc"},{"ref":"EID2a0b7f33-7640-4636-b44a-dd69a3697bbf"}]},"parent":{"ref":"EID6ee24d08-0175-1000-ab57-9c9dd2150c94"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-28T11:05:26Z","duration":582,"status":"FAILED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:05:26Z","duration":857,"status":"FAILED"},{"id":"EID6ee25061-0175-1000-2dd8-15f50383ddef","testStepResults":{"TestStepResult":[{"id":"EID6ee25081-0175-1000-6d04-95f065e0ea83","parent":{"ref":"EID6ee25061-0175-1000-2dd8-15f50383ddef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":971,"status":"PASSED"},{"id":"EID6ee25081-0175-1000-cee1-65d6892527e7","parent":{"ref":"EID6ee25061-0175-1000-2dd8-15f50383ddef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee25081-0175-1000-8b12-e31135a32ff9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee25148-0175-1000-cb08-c67005818ecf","parent":{"ref":"EID6ee25081-0175-1000-8b12-e31135a32ff9"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee25148-0175-1000-2f53-09589042bb0c","parent":{"ref":"EID6ee25081-0175-1000-8b12-e31135a32ff9"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee25148-0175-1000-7ea3-5005acc96343","parent":{"ref":"EID6ee25081-0175-1000-8b12-e31135a32ff9"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee25148-0175-1000-4a24-3859d08e1fb7","parent":{"ref":"EID6ee25081-0175-1000-8b12-e31135a32ff9"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee25148-0175-1000-9458-bed8b9e29cea","parent":{"ref":"EID6ee25081-0175-1000-8b12-e31135a32ff9"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee25148-0175-1000-990a-a7ca2053fae3","parent":{"ref":"EID6ee25081-0175-1000-8b12-e31135a32ff9"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID41091203-b1d9-4690-b76c-1eed63ee27e1"},{"ref":"EID9dd0af8f-09b3-44d9-a399-fa647dcbe4b4"},{"ref":"EIDbe01d9c1-fa54-4046-bccf-6d201f391203"}]},"parent":{"ref":"EID6ee25061-0175-1000-2dd8-15f50383ddef"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:05:26Z","duration":91,"status":"PASSED"},{"id":"EID6ee25148-0175-1000-d7ea-9087e1c8360d","parent":{"ref":"EID6ee25061-0175-1000-2dd8-15f50383ddef"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-28T11:05:27Z","duration":52,"status":"PASSED"},{"id":"EID6ee2517d-0175-1000-3700-8d88eb934a1d","parent":{"ref":"EID6ee25061-0175-1000-2dd8-15f50383ddef"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-28T11:05:27Z","duration":0,"status":"UNDEFINED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:05:26Z","duration":284,"status":"UNDEFINED"},{"id":"EID6ee2517d-0175-1000-a285-13b1e94b2c69","testStepResults":{"TestStepResult":[{"id":"EID6ee2517d-0175-1000-61d1-efe2362d0a89","parent":{"ref":"EID6ee2517d-0175-1000-a285-13b1e94b2c69"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:05:27Z","duration":971,"status":"PASSED"},{"id":"EID6ee2517d-0175-1000-0d1f-4ddfe6a23b45","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"attachments":{"attachment":[{"ref":"EID53f3a0ec-c955-4ff3-aaba-4243ac251cb1"},{"ref":"EID9358b76a-53f0-45c5-ac4b-683ae7b331ac"},{"ref":"EID803e4eee-6c3d-4076-b69a-1a321a5b1c91"},{"ref":"EID13b9da58-4c92-4d8e-a16d-78f644e87a81"},{"ref":"EID1084bfdd-93c0-46c8-ab26-dd005e4f5bed"},{"ref":"EID46e27eae-fd2f-48cf-b307-e32169326ac5"},{"ref":"EIDc861e41c-070c-4655-a07a-e86f45aeddd9"},{"ref":"EID4bf5997a-d535-4690-b808-b35323ba1d74"},{"ref":"EID7f13c0a7-a432-4778-ba05-f3c2abe643c8"},{"ref":"EID37d6ee89-4757-4018-bfd4-51982de07c6b"},{"ref":"EIDd1610835-28a6-4640-abc4-f328a5c15cd7"},{"ref":"EIDf5260de7-9ec1-4a00-ae7c-9620cd186c0d"},{"ref":"EID790052e1-a2e8-40fe-889e-8b054ddbc2b9"},{"ref":"EID70fe7e7c-f664-45de-82f9-11c123c97bf8"},{"ref":"EID6161faed-4c82-4fae-98a3-9824ac1363e3"},{"ref":"EID91ca3b4e-bed3-449d-9d30-a714e76b6a3d"},{"ref":"EID041e68ae-c543-4a61-9b37-0bd7bcfe16bc"},{"ref":"EID1e253de0-5e29-4ae9-b915-abf8d8bcee30"},{"ref":"EIDe601b36f-94fa-42ba-a5a7-34b04a21956f"}]},"parent":{"ref":"EID6ee2517d-0175-1000-a285-13b1e94b2c69"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:05:27Z","duration":2022,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:05:27Z","duration":2340,"status":"SKIPPED"},{"id":"EID6ee25aa1-0175-1000-67ec-d80ff49c5316","testStepResults":{"TestStepResult":[{"id":"EID6ee25aa1-0175-1000-5e58-dba13972a2c5","parent":{"ref":"EID6ee25aa1-0175-1000-67ec-d80ff49c5316"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:05:29Z","duration":971,"status":"PASSED"},{"id":"EID6ee25aa1-0175-1000-c0a3-a903eed95df2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee25b5a-0175-1000-ee93-2ef593cd9080","parent":{"ref":"EID6ee25aa1-0175-1000-c0a3-a903eed95df2"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25b5a-0175-1000-4c77-9e649ddf3540","parent":{"ref":"EID6ee25aa1-0175-1000-c0a3-a903eed95df2"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25b5b-0175-1000-e0f5-cff06242fd51","parent":{"ref":"EID6ee25aa1-0175-1000-c0a3-a903eed95df2"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25b5b-0175-1000-efdd-b7d7d792f708","parent":{"ref":"EID6ee25aa1-0175-1000-c0a3-a903eed95df2"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID38a408df-b855-42a1-8d47-41a30c17bd57"},{"ref":"EIDd2c7dee0-d1de-4a75-834c-49e5d0006d51"},{"ref":"EIDb8d6047f-d1fa-4da2-a3f5-947d03ff102f"}]},"parent":{"ref":"EID6ee25aa1-0175-1000-67ec-d80ff49c5316"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:05:29Z","duration":113,"status":"PASSED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:05:29Z","duration":186,"status":"PASSED"},{"id":"EID6ee25b5b-0175-1000-58e3-839761e4146a","testStepResults":{"TestStepResult":[{"id":"EID6ee25b5b-0175-1000-f950-94812546e46f","parent":{"ref":"EID6ee25b5b-0175-1000-58e3-839761e4146a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:05:29Z","duration":971,"status":"PASSED"},{"id":"EID6ee25b5b-0175-1000-2b60-7d0e7e1c77ae","parent":{"ref":"EID6ee25b5b-0175-1000-58e3-839761e4146a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25b5b-0175-1000-9fa6-02c7ee02b027","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee25bfb-0175-1000-c147-fcf3f6eaf53e","parent":{"ref":"EID6ee25b5b-0175-1000-9fa6-02c7ee02b027"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25bfb-0175-1000-f7c7-485e825dc028","parent":{"ref":"EID6ee25b5b-0175-1000-9fa6-02c7ee02b027"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25bfb-0175-1000-e432-030bf7778254","parent":{"ref":"EID6ee25b5b-0175-1000-9fa6-02c7ee02b027"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25bfb-0175-1000-e557-6683db4f569f","parent":{"ref":"EID6ee25b5b-0175-1000-9fa6-02c7ee02b027"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb031e4c8-e212-4f81-8d7f-5f7d59dbf865"},{"ref":"EID62e1d63f-963e-4a14-b417-2c58340edd6a"},{"ref":"EIDca5ce78f-39f4-4527-8721-44f57822a8d8"}]},"parent":{"ref":"EID6ee25b5b-0175-1000-58e3-839761e4146a"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:05:29Z","duration":97,"status":"PASSED"},{"id":"EID6ee25bfb-0175-1000-5acf-f61ee68d8f50","attachments":{"attachment":{"ref":"EID7949f443-19b7-4b4a-bd7b-fed1d24d8c55"}},"parent":{"ref":"EID6ee25b5b-0175-1000-58e3-839761e4146a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:05:29Z","duration":1,"status":"PASSED"},{"id":"EID6ee25c0d-0175-1000-20c2-de82fb23d627","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee25c11-0175-1000-8491-661fe35f0910","parent":{"ref":"EID6ee25c0d-0175-1000-20c2-de82fb23d627"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25c11-0175-1000-9ae8-ba7f47059536","parent":{"ref":"EID6ee25c0d-0175-1000-20c2-de82fb23d627"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee25c11-0175-1000-edd0-4c90b2659b84","parent":{"ref":"EID6ee25c0d-0175-1000-20c2-de82fb23d627"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd588e0e-6248-4186-aea9-9e11bd4ce159"},{"ref":"EIDbf79495c-a48a-41f6-842a-d89fb2325dfa"}]},"parent":{"ref":"EID6ee25b5b-0175-1000-58e3-839761e4146a"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:05:29Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee24951-0175-1000-5a58-8883298a5b50"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:05:29Z","duration":182,"status":"PASSED"}]},"parent":{"ref":"EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:05:25Z","duration":4808,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EID8f9acdcb-5600-4b9e-b2c2-077afd7713ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf3c82693-59f0-403f-916f-480d8bdebaa6","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDf3c82693-59f0-403f-916f-480d8bdebaa6"}},{"type":"Message","id":"EID66c12fa5-4d24-401a-a326-af938cceb6bf","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID66c12fa5-4d24-401a-a326-af938cceb6bf"}},{"type":"ServiceResponse","id":"EIDd2e961a4-3cfe-43b6-a0a2-817dd4c96da5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd2e961a4-3cfe-43b6-a0a2-817dd4c96da5"}},{"type":"Message","id":"EID1e253de0-5e29-4ae9-b915-abf8d8bcee30","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID1e253de0-5e29-4ae9-b915-abf8d8bcee30"}},{"type":"GetParameter","id":"EID0ca75442-800b-4b8c-9737-86d96b550b31","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID243a5325-591a-48f0-9935-29e394976941","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID243a5325-591a-48f0-9935-29e394976941"}},{"type":"GetParameter","id":"EID608e39d5-b222-486a-bd22-e110326ecc38","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID7ee85e90-4975-421b-b393-80bac79b53af","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID7ee85e90-4975-421b-b393-80bac79b53af"}},{"type":"ServiceResponse","id":"EID7fed213e-9e54-42ad-ac87-a2be2b8a587a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID7fed213e-9e54-42ad-ac87-a2be2b8a587a"}},{"type":"ServiceResponse","id":"EID3e61cad3-5461-401c-a292-4f8e1b9d5695","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID3e61cad3-5461-401c-a292-4f8e1b9d5695"}},{"type":"Message","id":"EID23b6e168-1740-4503-9564-44361495598f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID23b6e168-1740-4503-9564-44361495598f"}},{"type":"ServiceResponse","id":"EIDa4dc2033-9469-4587-b15d-d4eefa796820","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDa4dc2033-9469-4587-b15d-d4eefa796820"}},{"type":"ServiceResponse","id":"EIDf9001d1f-2925-473a-8087-b7170e64a2fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDf9001d1f-2925-473a-8087-b7170e64a2fd"}},{"type":"GetParameter","id":"EIDdcb55224-56f5-47da-bb9b-3527cbe59e0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV92X2dwa2cuemlw"},{"type":"Message","id":"EIDef6885d3-8745-492b-82ba-7bb8bb781ca8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDef6885d3-8745-492b-82ba-7bb8bb781ca8"}},{"type":"Message","id":"EID55acd594-dcff-4b66-80e1-96e12d8fd01d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID55acd594-dcff-4b66-80e1-96e12d8fd01d"}},{"type":"ServiceResponse","id":"EIDb7108008-eb64-4016-a9ec-4d47daeab854","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDb7108008-eb64-4016-a9ec-4d47daeab854"}},{"type":"GetParameter","id":"EIDa6d7b02e-a9fa-44ce-bfd8-67db9be6a2b4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf5a8bf63-1dbe-4af7-9428-096bd0314bcf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID16cfd46f-9b85-48c4-b162-53d60f27eb52","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID5a56053f-c2de-4274-9e5b-c573c8df9e13","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID5a56053f-c2de-4274-9e5b-c573c8df9e13"}},{"type":"Message","id":"EID91ca3b4e-bed3-449d-9d30-a714e76b6a3d","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID91ca3b4e-bed3-449d-9d30-a714e76b6a3d"}},{"type":"Message","id":"EIDbd103640-90c9-4bf5-b09e-208a446e622c","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDbd103640-90c9-4bf5-b09e-208a446e622c"}},{"type":"ServiceResponse","id":"EIDa2bd79f3-cd86-4eba-98dd-259839895acb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDa2bd79f3-cd86-4eba-98dd-259839895acb"}},{"type":"ServiceResponse","id":"EID39085966-d34e-4981-a585-edce543e4924","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID39085966-d34e-4981-a585-edce543e4924"}},{"type":"Message","id":"EID71de321e-995e-4536-8b80-2403f76c796c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID71de321e-995e-4536-8b80-2403f76c796c"}},{"type":"ServiceEndpoint","id":"EID2559475c-2721-46bc-9b7d-1ef977518db0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf8844e94-b8b8-434e-b97f-a7d74a3c05f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID7170c61e-e7ca-4ab8-916a-c1ebb608ab55","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID1703c5b1-2fc1-4be4-be7a-71c38e3a700b","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID1703c5b1-2fc1-4be4-be7a-71c38e3a700b"}},{"type":"Message","id":"EIDb31abbe9-5f4d-4da9-9e54-e30f6b2acdaa","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDb31abbe9-5f4d-4da9-9e54-e30f6b2acdaa"}},{"type":"ServiceResponse","id":"EIDc086d973-0e76-49f5-96be-b6af262396bb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDc086d973-0e76-49f5-96be-b6af262396bb"}},{"type":"GetParameter","id":"EIDde5d25b6-5ee4-44aa-a69c-6a27d85790a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDd83c2bc3-fa43-4533-803b-7ac6efb102b8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd83c2bc3-fa43-4533-803b-7ac6efb102b8"}},{"type":"ServiceResponse","id":"EIDdd615e3b-2bd5-4605-b9a0-fb0bbdc87081","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDdd615e3b-2bd5-4605-b9a0-fb0bbdc87081"}},{"type":"GetParameter","id":"EIDc1d03c2a-9b59-43aa-bac4-98af1dc82a05","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID1084bfdd-93c0-46c8-ab26-dd005e4f5bed","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID1084bfdd-93c0-46c8-ab26-dd005e4f5bed"}},{"type":"GetParameter","id":"EIDdb2f09be-534b-45be-9c6c-cf1e278d0eec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDdd30ea41-4f60-4937-b780-721a0411a6f2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDdd30ea41-4f60-4937-b780-721a0411a6f2"}},{"type":"GetParameter","id":"EIDe377633b-7dd4-4178-b4de-a552ba3551ef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID3aa00086-5a1b-45f6-a3b6-983fd836cc3a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID37d6ee89-4757-4018-bfd4-51982de07c6b","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID37d6ee89-4757-4018-bfd4-51982de07c6b"}},{"type":"ServiceEndpoint","id":"EIDbf882134-b3a2-4ca5-8847-d308ab98d26c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID4d7496f7-3704-4698-aa4a-6e1a84a7d921","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID92e80a1b-d744-44e1-9ddb-ff6b54b7a179","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID4d642931-8d56-44e1-bfec-92a55a72aaca","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID4d642931-8d56-44e1-bfec-92a55a72aaca"}},{"type":"LogFile","id":"EID089050e1-0f61-4b50-a372-24cbf877d155","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID089050e1-0f61-4b50-a372-24cbf877d155"}},{"type":"Message","id":"EID6161faed-4c82-4fae-98a3-9824ac1363e3","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID6161faed-4c82-4fae-98a3-9824ac1363e3"}},{"type":"GetParameter","id":"EIDe7117f01-62ab-46c7-8238-4bbc2611df29","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDccee26c5-63e2-410a-a9e9-d9e1f8db4746","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDf00a84e0-7aae-4eb5-92d0-a60bfbf3eb04","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID803e4eee-6c3d-4076-b69a-1a321a5b1c91","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID803e4eee-6c3d-4076-b69a-1a321a5b1c91"}},{"type":"Message","id":"EID27b42ac2-5706-4a3c-b003-b25220bf12d9","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID27b42ac2-5706-4a3c-b003-b25220bf12d9"}},{"type":"ServiceEndpoint","id":"EID3ceaf0a1-4823-4a6d-b124-9c29813a0be5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID9df59927-9e0a-4b09-8f42-dcb6c7429eec","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID9df59927-9e0a-4b09-8f42-dcb6c7429eec"}},{"type":"ServiceEndpoint","id":"EIDa4a575bd-a617-4b3e-aa5a-463eac1e3837","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID7f13c0a7-a432-4778-ba05-f3c2abe643c8","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID7f13c0a7-a432-4778-ba05-f3c2abe643c8"}},{"type":"ServiceEndpoint","id":"EID41d57b50-3878-4bf9-842b-93ad5f3048d2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf50070cd-3dda-403a-85f6-9eaabb248e16","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDf50070cd-3dda-403a-85f6-9eaabb248e16"}},{"type":"Message","id":"EIDaabde014-2d88-4ed1-904e-10bd96a46e07","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDaabde014-2d88-4ed1-904e-10bd96a46e07"}},{"type":"ServiceResponse","id":"EID927de8ae-c2d5-43cf-b388-ce1561d28b0c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID927de8ae-c2d5-43cf-b388-ce1561d28b0c"}},{"type":"ServiceEndpoint","id":"EID943247fb-89af-402c-bb23-4a456e9fb343","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDd1b82be8-3fa6-468c-b7c4-6576a1060585","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDc7b7747f-9224-45d1-a08a-779afe1a3f2d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDf65a04e7-138f-425e-a60b-5b6c33785fe6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID2e372ad4-ea55-4414-9423-a8959a2fc979","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID2e372ad4-ea55-4414-9423-a8959a2fc979"}},{"type":"ServiceEndpoint","id":"EID4f52fdbd-d566-4de4-97fa-1767514312e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID64b59a0a-cba7-4f23-88b3-d89139e11d89","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID42c0042d-ed7e-40b2-86eb-39b032eb8726","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID2a139ac5-b137-4f51-8436-1380c3a33c85","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID2a139ac5-b137-4f51-8436-1380c3a33c85"}},{"type":"ServiceEndpoint","id":"EID6677a8af-181b-4d96-895c-89766a73ac12","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9ca97ca2-0953-4584-a50c-f6285c1a076c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID64e3c254-24cf-48e6-b57c-3cf4bd7cc67f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID4bf5997a-d535-4690-b808-b35323ba1d74","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID4bf5997a-d535-4690-b808-b35323ba1d74"}},{"type":"ServiceEndpoint","id":"EIDb2da79e0-a4bc-488d-9b43-f700b1427133","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID0e4f63b4-4960-4959-b350-1186423116c7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID0e4f63b4-4960-4959-b350-1186423116c7"}},{"type":"Message","id":"EID53f3a0ec-c955-4ff3-aaba-4243ac251cb1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID53f3a0ec-c955-4ff3-aaba-4243ac251cb1"}},{"type":"ServiceEndpoint","id":"EIDcb1ced72-259b-4806-8b79-5ad1518e33d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDb0a5e3ad-e0b3-4438-b11f-7d818ed0ac50","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbd7f4be0-fd05-401c-a67a-863d6e1afcf0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID62e1d63f-963e-4a14-b417-2c58340edd6a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID62e1d63f-963e-4a14-b417-2c58340edd6a"}},{"type":"ServiceEndpoint","id":"EIDbc189bc4-3eeb-4997-9d7a-f9ca4501e612","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5a42c3e9-25d9-4632-b03f-0edd549f3f70","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV92X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID0cf85ffd-340a-41e2-b7b4-e3d0a3d61fd0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID01a72594-3e38-468c-8c0c-6fe81abaedec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID01a72594-3e38-468c-8c0c-6fe81abaedec"}},{"type":"ServiceResponse","id":"EIDd268bf34-a07f-4aa3-9bc6-398f914b0ad4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd268bf34-a07f-4aa3-9bc6-398f914b0ad4"}},{"type":"ServiceResponse","id":"EID01ce9c8a-ab43-42df-b5fd-ae48d91eb1cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID01ce9c8a-ab43-42df-b5fd-ae48d91eb1cf"}},{"type":"Message","id":"EID3f8e2d7b-c861-4e34-a014-26796be50688","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID3f8e2d7b-c861-4e34-a014-26796be50688"}},{"type":"GetParameter","id":"EID61a11c77-c789-4f18-ab9a-a6c2d116a865","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID301ba5a4-7c53-4279-9f36-33e960ad60cb","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID301ba5a4-7c53-4279-9f36-33e960ad60cb"}},{"type":"ServiceResponse","id":"EID24849ebd-135b-47b6-a8ca-b2281ef437a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID24849ebd-135b-47b6-a8ca-b2281ef437a4"}},{"type":"ServiceResponse","id":"EID189acc94-dc5d-40bd-9b6b-b3f77677227e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID189acc94-dc5d-40bd-9b6b-b3f77677227e"}},{"type":"GetParameter","id":"EID6636da7a-04d2-4a99-bdb8-ba336168d35c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID00b4527d-e591-47e0-b7e8-6ea0583ad7d7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID00b4527d-e591-47e0-b7e8-6ea0583ad7d7"}},{"type":"GetParameter","id":"EIDf5823cbd-5828-42dd-b1c1-8b84aaecdd0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDbf79495c-a48a-41f6-842a-d89fb2325dfa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EIDb03c0164-54a0-40b0-ab31-aa922cff87c2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID71f4a6da-5b3a-4b70-ad49-01364381d8dc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID71f4a6da-5b3a-4b70-ad49-01364381d8dc"}},{"type":"ServiceResponse","id":"EID2d55a431-c280-42f3-abeb-1d20d000931c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID2d55a431-c280-42f3-abeb-1d20d000931c"}},{"type":"ServiceResponse","id":"EID9dd0af8f-09b3-44d9-a399-fa647dcbe4b4","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID9dd0af8f-09b3-44d9-a399-fa647dcbe4b4"}},{"type":"GetParameter","id":"EID2619bcdc-6bed-4dc0-9765-19e262948c84","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDdb24ad2d-f5f2-4b80-a020-cc40f4751862","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDdb24ad2d-f5f2-4b80-a020-cc40f4751862"}},{"type":"ServiceResponse","id":"EID17f30054-282f-43b5-a523-a238bd6e090c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID17f30054-282f-43b5-a523-a238bd6e090c"}},{"type":"ServiceResponse","id":"EIDf1afe642-6728-4917-b6fe-4195df32f2e3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDf1afe642-6728-4917-b6fe-4195df32f2e3"}},{"type":"GetParameter","id":"EIDb8d6047f-d1fa-4da2-a3f5-947d03ff102f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDa312cb05-6f32-4bcd-af7e-cbad95a8d3d3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDca5ce78f-39f4-4527-8721-44f57822a8d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID53f2cedc-cd7d-4562-8a9d-beced077661f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9358b76a-53f0-45c5-ac4b-683ae7b331ac","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID9358b76a-53f0-45c5-ac4b-683ae7b331ac"}},{"type":"Message","id":"EIDd1610835-28a6-4640-abc4-f328a5c15cd7","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd1610835-28a6-4640-abc4-f328a5c15cd7"}},{"type":"Message","id":"EIDbfa1ae89-5b94-4b71-9da3-4b91c63dc6e3","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDbfa1ae89-5b94-4b71-9da3-4b91c63dc6e3"}},{"type":"GetParameter","id":"EID4c898528-6fc1-4d03-a8e8-5a432bf3f642","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3b818479-62d2-4d12-b54b-abd26f5b2d1a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID33070391-8acf-4323-8797-15375c55dde7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID33070391-8acf-4323-8797-15375c55dde7"}},{"type":"Message","id":"EIDd66d3a5a-e77e-4b78-bbb8-5681107779ef","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd66d3a5a-e77e-4b78-bbb8-5681107779ef"}},{"type":"GetParameter","id":"EIDa78dc98f-dcda-47c1-9e14-640de3fc12f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9dcf19bb-ffb3-492f-bc03-1dda911912e0","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID9dcf19bb-ffb3-492f-bc03-1dda911912e0"}},{"type":"Message","id":"EIDadfe8cd2-d505-4dec-be61-1ebe2681e08f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDadfe8cd2-d505-4dec-be61-1ebe2681e08f"}},{"type":"ServiceResponse","id":"EID15feadf0-ff43-4ae9-b521-2394299345bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID15feadf0-ff43-4ae9-b521-2394299345bc"}},{"type":"ServiceResponse","id":"EID869924ec-1017-4c47-a0ec-75c1aed202fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID869924ec-1017-4c47-a0ec-75c1aed202fa"}},{"type":"ServiceResponse","id":"EIDd5acaf16-cc09-4ff1-aacd-159278d1e794","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd5acaf16-cc09-4ff1-aacd-159278d1e794"}},{"type":"GetParameter","id":"EID55ca720e-0221-47be-9a12-eddc659633e0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDf6b8100b-28ce-4de3-a540-2eeab7961586","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDf6b8100b-28ce-4de3-a540-2eeab7961586"}},{"type":"GetParameter","id":"EID9a4b0061-2236-436d-b6e7-4529423143a5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDcbbb746b-4c2d-4b39-a120-9710896644c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID3c65ba26-c541-4af6-8655-05ca2c55a98d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID3c65ba26-c541-4af6-8655-05ca2c55a98d"}},{"type":"ServiceEndpoint","id":"EIDa742f4fa-5a9b-4618-85cd-42fecdfac674","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDd95f3b00-0834-472e-8e7c-5b8a56c90a5e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDac671c52-7066-4ec1-9b69-ae3830308107","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd5eb9a10-cdf2-414f-ad2f-2cc56bc2c83d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd5eb9a10-cdf2-414f-ad2f-2cc56bc2c83d"}},{"type":"Message","id":"EID13b9da58-4c92-4d8e-a16d-78f644e87a81","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID13b9da58-4c92-4d8e-a16d-78f644e87a81"}},{"type":"GetParameter","id":"EIDcd3089a3-3173-48d0-a4fc-991065ad6e15","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf79f60bc-f045-45e8-a41e-39e00d5b5f6b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID55b61e79-55dc-403f-9514-3599288cc207","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID55b61e79-55dc-403f-9514-3599288cc207"}},{"type":"Message","id":"EID70fe7e7c-f664-45de-82f9-11c123c97bf8","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID70fe7e7c-f664-45de-82f9-11c123c97bf8"}},{"type":"Message","id":"EID790052e1-a2e8-40fe-889e-8b054ddbc2b9","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID790052e1-a2e8-40fe-889e-8b054ddbc2b9"}},{"type":"GetParameter","id":"EIDbb47a59d-050b-4e38-960c-b5999aaf0fc2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0975fc9b-ebdf-4a34-9b5c-d14bcb8bf613","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDc0fa2244-438d-4133-9cc2-a35a89ad0203","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDc0fa2244-438d-4133-9cc2-a35a89ad0203"}},{"type":"ServiceResponse","id":"EID50ae0ca0-2d0e-4176-9914-c06b37c47b80","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID50ae0ca0-2d0e-4176-9914-c06b37c47b80"}},{"type":"ServiceResponse","id":"EIDbe2e82c5-1b80-40cd-ab2a-e47fdc53d89e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDbe2e82c5-1b80-40cd-ab2a-e47fdc53d89e"}},{"type":"ServiceEndpoint","id":"EID38a408df-b855-42a1-8d47-41a30c17bd57","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID7949f443-19b7-4b4a-bd7b-fed1d24d8c55","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID7949f443-19b7-4b4a-bd7b-fed1d24d8c55"}},{"type":"ServiceEndpoint","id":"EIDf7d71c48-94b9-496f-92fd-0ced63228998","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID9382c217-e288-49e8-8d04-8a43746c0a1a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDd2c7dee0-d1de-4a75-834c-49e5d0006d51","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd2c7dee0-d1de-4a75-834c-49e5d0006d51"}},{"type":"ServiceEndpoint","id":"EID69344057-8357-40b6-b789-9f93e45bd1ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0e4d695d-2059-48d4-88e8-97ea6a1e9143","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf5260de7-9ec1-4a00-ae7c-9620cd186c0d","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDf5260de7-9ec1-4a00-ae7c-9620cd186c0d"}},{"type":"GetParameter","id":"EID45bd2eee-d91e-4ad4-981a-a6e7b1ac0d3d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7ca795d3-ff21-4d57-9202-462404a046c4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID0cdeb08e-9eec-4b91-bf21-be2cbc7a0005","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID0cdeb08e-9eec-4b91-bf21-be2cbc7a0005"}},{"type":"GetParameter","id":"EID5ca30e58-474e-4ac3-86f2-564b52731c56","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID6296d878-d161-4cce-87a9-d8d8e0b03a85","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID6296d878-d161-4cce-87a9-d8d8e0b03a85"}},{"type":"Message","id":"EID46287357-c9d1-42ec-a3f4-26aeedf9a66b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID46287357-c9d1-42ec-a3f4-26aeedf9a66b"}},{"type":"GetParameter","id":"EIDee4d4335-4137-4801-bea4-b037ec36843a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDa803453b-91b8-40d3-917e-e9ecbf149ca7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDa803453b-91b8-40d3-917e-e9ecbf149ca7"}},{"type":"GetParameter","id":"EIDfe16966c-f508-4eb4-a9ac-f15063a50d0d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID70ad4409-970e-412c-945b-5d6b93db41d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID19ecc343-1a1a-42a8-b0a1-64da3ca6c24e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"GetParameter","id":"EID53342e07-5a8e-43ff-9b06-e82c70747f69","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0ff3d10e-34f8-4bd1-9fef-6bea7d374b46","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID0ff3d10e-34f8-4bd1-9fef-6bea7d374b46"}},{"type":"GetParameter","id":"EID79cb800e-288f-4031-a5dd-c66e2b094b0a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID4b4a15b1-d399-4ac1-a678-4b3835ea14df","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID4b4a15b1-d399-4ac1-a678-4b3835ea14df"}},{"type":"ServiceResponse","id":"EID8c7bbe41-15d4-4454-972f-3e64f8e697f1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID8c7bbe41-15d4-4454-972f-3e64f8e697f1"}},{"type":"ServiceEndpoint","id":"EID8fba67e7-64e5-4014-9da6-f799441f442e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID043780cc-ca1c-4e50-8a99-436d0804ded1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID043780cc-ca1c-4e50-8a99-436d0804ded1"}},{"type":"GetParameter","id":"EID375a5a16-a7d7-4b69-9522-4452cc6073b5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID4fe4bdae-30bc-436e-b5cd-6abb6cc8f3b4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0f9afe73-563c-4eaa-b2f0-cff2a8e472cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcdf322e1-c599-4e83-95e0-8769db93fd6c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDc4c8a7bf-5d86-4765-812a-064120491872","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDc4c8a7bf-5d86-4765-812a-064120491872"}},{"type":"GetParameter","id":"EID7d09abb9-914f-4237-a507-c9d1874180f4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6b1ed085-60d3-4a06-bbcd-15ef68e5983e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID6b1ed085-60d3-4a06-bbcd-15ef68e5983e"}},{"type":"ServiceResponse","id":"EIDa198cb7d-14c3-41f9-b899-0ef2221bf353","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDa198cb7d-14c3-41f9-b899-0ef2221bf353"}},{"type":"ServiceEndpoint","id":"EIDbd588e0e-6248-4186-aea9-9e11bd4ce159","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID9832aa71-c3c5-4fda-88a2-77473abba7d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDd68aa5f4-65fd-4d09-8e8b-59ec3daec105","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID719cee57-ad09-44e6-b61b-121fae9ff74c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID041e68ae-c543-4a61-9b37-0bd7bcfe16bc","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID041e68ae-c543-4a61-9b37-0bd7bcfe16bc"}},{"type":"ServiceResponse","id":"EID49534472-97dc-4420-a298-f97b0c9c2cd1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID49534472-97dc-4420-a298-f97b0c9c2cd1"}},{"type":"Message","id":"EID2d31dfc3-8e9c-4bb6-bdbe-42f4f5330a21","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID2d31dfc3-8e9c-4bb6-bdbe-42f4f5330a21"}},{"type":"ServiceResponse","id":"EIDe51aa5f5-15e7-412a-8e4e-2141c26f266f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDe51aa5f5-15e7-412a-8e4e-2141c26f266f"}},{"type":"ServiceEndpoint","id":"EID08b4fbcd-5fc5-41a9-9bac-d423776345e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcfab53af-fb31-44ed-9b4d-3f5aab5c692f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDb031e4c8-e212-4f81-8d7f-5f7d59dbf865","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDcbc26f36-2632-41b5-b6ab-cf12fcb947c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDcbc26f36-2632-41b5-b6ab-cf12fcb947c8"}},{"type":"Message","id":"EID46e27eae-fd2f-48cf-b307-e32169326ac5","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID46e27eae-fd2f-48cf-b307-e32169326ac5"}},{"type":"Message","id":"EIDe601b36f-94fa-42ba-a5a7-34b04a21956f","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDe601b36f-94fa-42ba-a5a7-34b04a21956f"}},{"type":"Message","id":"EID417810c5-3328-4544-9be3-7d0be803d152","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID417810c5-3328-4544-9be3-7d0be803d152"}},{"type":"ServiceEndpoint","id":"EIDf0b924b7-4da8-4e78-8c69-a12cf2a96f0f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDbe01d9c1-fa54-4046-bccf-6d201f391203","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd181d402-73ff-4101-9a28-a2764e768599","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID91303d53-b89e-40bb-97c2-d5342549141b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV9sX2dwa2cuemlw"},{"type":"ServiceResponse","id":"EID315a07e5-728c-4e5a-a060-287f344bc3eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID315a07e5-728c-4e5a-a060-287f344bc3eb"}},{"type":"GetParameter","id":"EID1a615a67-7ede-47fe-b497-1e9cc4714e64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDd45bbf96-02a8-4ce0-8c73-23aae385e47b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDd45bbf96-02a8-4ce0-8c73-23aae385e47b"}},{"type":"ServiceEndpoint","id":"EID9d54d779-3b04-4994-a8c4-c07580e76a1f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID58ea1b75-8a7e-4433-92b1-c5756c2e0945","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID58ea1b75-8a7e-4433-92b1-c5756c2e0945"}},{"type":"ServiceEndpoint","id":"EID04d7a905-4722-4e6d-9f28-589594955218","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDc861e41c-070c-4655-a07a-e86f45aeddd9","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDc861e41c-070c-4655-a07a-e86f45aeddd9"}},{"type":"ServiceResponse","id":"EID7fe7866e-b4e5-4292-9011-9ffbf1136f39","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID7fe7866e-b4e5-4292-9011-9ffbf1136f39"}},{"type":"ServiceEndpoint","id":"EIDaeff1bda-d807-4986-9ffc-0786f2857f4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID41091203-b1d9-4690-b76c-1eed63ee27e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID123a7496-0f6c-463c-a764-e2ed86806c81","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID123a7496-0f6c-463c-a764-e2ed86806c81"}},{"type":"ServiceResponse","id":"EIDbbbf9bd1-7126-4ceb-a60e-41064e45f339","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDbbbf9bd1-7126-4ceb-a60e-41064e45f339"}},{"type":"Message","id":"EID2a0b7f33-7640-4636-b44a-dd69a3697bbf","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EID2a0b7f33-7640-4636-b44a-dd69a3697bbf"}},{"type":"ServiceEndpoint","id":"EIDd7e37d65-e783-4195-bed0-504ae7807dcb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDee1a9a35-2d6a-486a-81f9-734f4a27fcf9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID3b7c6874-3cf2-4a07-946e-0d3e3a7ec57e/Attachments/EIDee1a9a35-2d6a-486a-81f9-734f4a27fcf9"}},{"type":"ServiceEndpoint","id":"EID42f3374d-10f6-4f6f-bd07-24ae07242a9c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:04:52Z","duration":37511,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.002
11:06:04.988 [print] EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:04.991 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:06:04.992 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:04.992 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:04.992 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/c95bbc17-3bd6-470e-949a-7aa01f2a1f87.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:06:04.992 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/c95bbc17-3bd6-470e-949a-7aa01f2a1f87.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:04.992 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDc95bbc17-3bd6-470e-949a-7aa01f2a1f87/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.001
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.031
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.002
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.009
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.002
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:06:05.042 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
11:06:05.042 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.008
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.001
25.583
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:57.338 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.006
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.477
11:15:57.345 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 254
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}}}

11:16:04.819 response time in milliseconds: 6729.48
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:04 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:16:01 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a739edde-614a-425e-b278-48801e78b28a.json","testRuns":{"TestRun":{"id":"EIDa739edde-614a-425e-b278-48801e78b28a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:00.41Z","testTasks":{"TestTask":{"id":"EID0e748b3c-a58d-40f9-9078-8454aaf5847c","parent":{"ref":"EIDa739edde-614a-425e-b278-48801e78b28a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID285887cd-9ab2-4e52-92f2-80ccb240451c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID285887cd-9ab2-4e52-92f2-80ccb240451c","remoteResource":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:15:57.792Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:15:58.733Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:16:04.822 [print] EIDa739edde-614a-425e-b278-48801e78b28a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:04.822 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:04.822 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:16:04.822 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a739edde-614a-425e-b278-48801e78b28a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:04.823 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:16:04.823 [print] statuspath TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a
* print 'progresspath ', progresspath 0.000
11:16:04.823 [print] progresspath  TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/progress
Given path progresspath 0.000
When method GET 0.521
11:16:04.823 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:05.344 response time in milliseconds: 520.02
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:16:05 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"38","max":"39","log":["28.10.2020 11:16:00 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:00 UTC 2020)","28.10.2020 11:16:00 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:00 - Preparing 1 Test Task:","28.10.2020 11:16:00 -  TestTask 1 (0e748b3c-a58d-40f9-9078-8454aaf5847c)","28.10.2020 11:16:00 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:00 -  with parameters: ","28.10.2020 11:16:00 - etf.testcases = *","28.10.2020 11:16:00 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:00 - Setting state to CREATED","28.10.2020 11:16:00 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:01 - Starting TestRun.a739edde-614a-425e-b278-48801e78b28a at 2020-10-28T11:16:02Z","28.10.2020 11:16:02 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:02 - Project Properties: ","28.10.2020 11:16:02 - etf.testcases - * ","28.10.2020 11:16:02 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ","28.10.2020 11:16:02 - username -  ","28.10.2020 11:16:02 - authUser -  ","28.10.2020 11:16:02 - authMethod - basic ","28.10.2020 11:16:02 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:16:05.344 [print] {
  "val": "38",
  "max": "39",
  "log": [
    "28.10.2020 11:16:00 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:00 UTC 2020)",
    "28.10.2020 11:16:00 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:16:00 - Preparing 1 Test Task:",
    "28.10.2020 11:16:00 -  TestTask 1 (0e748b3c-a58d-40f9-9078-8454aaf5847c)",
    "28.10.2020 11:16:00 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:16:00 -  with parameters: ",
    "28.10.2020 11:16:00 - etf.testcases = *",
    "28.10.2020 11:16:00 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:16:00 - Setting state to CREATED",
    "28.10.2020 11:16:00 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:16:01 - Starting TestRun.a739edde-614a-425e-b278-48801e78b28a at 2020-10-28T11:16:02Z",
    "28.10.2020 11:16:02 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:16:02 - Project Properties: ",
    "28.10.2020 11:16:02 - etf.testcases - * ",
    "28.10.2020 11:16:02 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ",
    "28.10.2020 11:16:02 - username -  ",
    "28.10.2020 11:16:02 - authUser -  ",
    "28.10.2020 11:16:02 - authMethod - basic ",
    "28.10.2020 11:16:02 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 13.110
11:16:05.345 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:05.858 response time in milliseconds: 513.17
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:16:05 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["28.10.2020 11:16:00 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:00 UTC 2020)","28.10.2020 11:16:00 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:00 - Preparing 1 Test Task:","28.10.2020 11:16:00 -  TestTask 1 (0e748b3c-a58d-40f9-9078-8454aaf5847c)","28.10.2020 11:16:00 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:00 -  with parameters: ","28.10.2020 11:16:00 - etf.testcases = *","28.10.2020 11:16:00 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:00 - Setting state to CREATED","28.10.2020 11:16:00 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:01 - Starting TestRun.a739edde-614a-425e-b278-48801e78b28a at 2020-10-28T11:16:02Z","28.10.2020 11:16:02 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:02 - Project Properties: ","28.10.2020 11:16:02 - etf.testcases - * ","28.10.2020 11:16:02 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ","28.10.2020 11:16:02 - username -  ","28.10.2020 11:16:02 - authUser -  ","28.10.2020 11:16:02 - authMethod - basic ","28.10.2020 11:16:02 - TestRunTask initialized"]}

11:16:05.859 retry condition not satisfied: response.val == response.max
11:16:05.859 sleeping before retry #1
11:16:10.860 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:11.428 response time in milliseconds: 568.16
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:16:11 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"175","max":"176","log":["28.10.2020 11:16:00 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:00 UTC 2020)","28.10.2020 11:16:00 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:00 - Preparing 1 Test Task:","28.10.2020 11:16:00 -  TestTask 1 (0e748b3c-a58d-40f9-9078-8454aaf5847c)","28.10.2020 11:16:00 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:00 -  with parameters: ","28.10.2020 11:16:00 - etf.testcases = *","28.10.2020 11:16:00 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:00 - Setting state to CREATED","28.10.2020 11:16:00 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:01 - Starting TestRun.a739edde-614a-425e-b278-48801e78b28a at 2020-10-28T11:16:02Z","28.10.2020 11:16:02 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:02 - Project Properties: ","28.10.2020 11:16:02 - etf.testcases - * ","28.10.2020 11:16:02 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ","28.10.2020 11:16:02 - username -  ","28.10.2020 11:16:02 - authUser -  ","28.10.2020 11:16:02 - authMethod - basic ","28.10.2020 11:16:02 - TestRunTask initialized"]}

11:16:11.428 retry condition not satisfied: response.val == response.max
11:16:11.429 sleeping before retry #2
11:16:16.429 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:18.441 response time in milliseconds: 2011.31
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:16:18 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:16:18.454 retry condition satisfied
* print response 0.000
11:16:18.455 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.440
11:16:18.456 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:22.892 response time in milliseconds: 3335.68
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:16:21 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:16:17 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a739edde-614a-425e-b278-48801e78b28a.json","testRuns":{"TestRun":{"id":"EIDa739edde-614a-425e-b278-48801e78b28a","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:00.41Z","testTasks":{"TestTask":{"id":"EID0e748b3c-a58d-40f9-9078-8454aaf5847c","parent":{"ref":"EIDa739edde-614a-425e-b278-48801e78b28a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID285887cd-9ab2-4e52-92f2-80ccb240451c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID7640be29-454f-4399-ba51-2fd76ca8a7f0"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID285887cd-9ab2-4e52-92f2-80ccb240451c","remoteResource":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:15:57.792Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:15:58.733Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID7640be29-454f-4399-ba51-2fd76ca8a7f0","testObject":{"ref":"EID285887cd-9ab2-4e52-92f2-80ccb240451c"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eec03fa-0175-1000-600e-ca0441b0657d","testCaseResults":{"TestCaseResult":[{"id":"EID6eec03fa-0175-1000-f2b6-bcc463604b0d","testStepResults":{"TestStepResult":[{"id":"EID6eec03fe-0175-1000-7d82-edb8884d6a5c","parent":{"ref":"EID6eec03fa-0175-1000-f2b6-bcc463604b0d"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:16:02Z","duration":32,"status":"PASSED"},{"id":"EID6eec041e-0175-1000-3b6b-6ede4560f798","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec04af-0175-1000-316f-f5d7c6b6d5cd","parent":{"ref":"EID6eec041e-0175-1000-3b6b-6ede4560f798"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6eec04af-0175-1000-e384-4fa0f7a8d5b5","parent":{"ref":"EID6eec041e-0175-1000-3b6b-6ede4560f798"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6eec04af-0175-1000-c18c-cf0fdbab8582","parent":{"ref":"EID6eec041e-0175-1000-3b6b-6ede4560f798"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6eec04af-0175-1000-b514-c5155fa95a6e","parent":{"ref":"EID6eec041e-0175-1000-3b6b-6ede4560f798"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf73535ea-b041-46b7-9614-077fc9e53395"},{"ref":"EID44328df0-2458-4dd0-af93-e2f4aa63a073"},{"ref":"EIDd9119c46-e446-4320-85ed-594f2f710910"}]},"parent":{"ref":"EID6eec03fa-0175-1000-f2b6-bcc463604b0d"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:16:02Z","duration":64,"status":"PASSED"}]},"parent":{"ref":"EID6eec03fa-0175-1000-600e-ca0441b0657d"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:16:02Z","duration":190,"status":"PASSED"},{"id":"EID6eec04b8-0175-1000-1914-2fd5b4925e19","testStepResults":{"TestStepResult":{"id":"EID6eec04b8-0175-1000-9277-b6138e7becf9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0553-0175-1000-9eb4-c687ef62486c","parent":{"ref":"EID6eec04b8-0175-1000-9277-b6138e7becf9"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec0553-0175-1000-351f-df0d486e162a","parent":{"ref":"EID6eec04b8-0175-1000-9277-b6138e7becf9"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec0553-0175-1000-34d3-a5d6487c3027","parent":{"ref":"EID6eec04b8-0175-1000-9277-b6138e7becf9"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID420ba700-43c6-4e91-a0d9-f730c7f9e3c6"},{"ref":"EID546b5083-113a-4596-bed6-d4f66d4c6235"},{"ref":"EIDd6381037-166c-4fba-8859-39796671bdf3"}]},"parent":{"ref":"EID6eec04b8-0175-1000-1914-2fd5b4925e19"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:16:02Z","duration":64,"status":"PASSED"}},"parent":{"ref":"EID6eec03fa-0175-1000-600e-ca0441b0657d"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:16:02Z","duration":155,"status":"PASSED"}]},"parent":{"ref":"EID7640be29-454f-4399-ba51-2fd76ca8a7f0"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:16:02Z","duration":353,"status":"PASSED"},{"id":"EID6eec055b-0175-1000-d692-2f051edcb328","testCaseResults":{"TestCaseResult":[{"id":"EID6eec055b-0175-1000-015e-935d590dd79a","testStepResults":{"TestStepResult":[{"id":"EID6eec055b-0175-1000-2a3a-70dde2831f63","parent":{"ref":"EID6eec055b-0175-1000-015e-935d590dd79a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:16:03Z","duration":64,"status":"PASSED"},{"id":"EID6eec055b-0175-1000-7e22-1c93dcad94cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec05e4-0175-1000-930a-c4dc3d3e89c5","parent":{"ref":"EID6eec055b-0175-1000-7e22-1c93dcad94cf"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec05e4-0175-1000-1371-95eae74c4bdf","parent":{"ref":"EID6eec055b-0175-1000-7e22-1c93dcad94cf"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec05e4-0175-1000-1fda-ae643594e927","parent":{"ref":"EID6eec055b-0175-1000-7e22-1c93dcad94cf"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec05e4-0175-1000-4b2d-6830589c3a81","parent":{"ref":"EID6eec055b-0175-1000-7e22-1c93dcad94cf"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec05e4-0175-1000-0d82-ba05ef524406","parent":{"ref":"EID6eec055b-0175-1000-7e22-1c93dcad94cf"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7d271f53-592c-4c01-875d-e6da31a77206"},{"ref":"EID4c51d7a1-1799-492e-ad1a-e888d14636dd"},{"ref":"EID36d0dc72-0972-41b9-b7e8-7567eedf3199"}]},"parent":{"ref":"EID6eec055b-0175-1000-015e-935d590dd79a"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:16:03Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:16:03Z","duration":156,"status":"PASSED"},{"id":"EID6eec05f7-0175-1000-5416-503574e068e3","testStepResults":{"TestStepResult":[{"id":"EID6eec05f7-0175-1000-11fd-ffbbd2863f76","attachments":{"attachment":[{"ref":"EIDb7c6708e-6238-490d-99c2-b9fe0b3b11b1"},{"ref":"EID3bd06952-4d1d-4285-b2ba-8e1f50ba1283"}]},"parent":{"ref":"EID6eec05f7-0175-1000-5416-503574e068e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:16:03Z","duration":177,"status":"PASSED"},{"id":"EID6eec06de-0175-1000-cb22-74aff601d3bc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec081a-0175-1000-c8ab-057338572956","parent":{"ref":"EID6eec06de-0175-1000-cb22-74aff601d3bc"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec081a-0175-1000-6c73-76609004a3a2","parent":{"ref":"EID6eec06de-0175-1000-cb22-74aff601d3bc"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec081a-0175-1000-4159-c5cb22bef1c4","parent":{"ref":"EID6eec06de-0175-1000-cb22-74aff601d3bc"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6eec081a-0175-1000-a5da-de79cac90598","parent":{"ref":"EID6eec06de-0175-1000-cb22-74aff601d3bc"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID34a8a6a4-a889-4aa7-9c21-4615c02cbdea"},{"ref":"EIDf6b66697-d9a4-4864-9129-90b80a039fe5"},{"ref":"EID4f6de133-5c25-4b80-b06d-880eb772509a"}]},"parent":{"ref":"EID6eec05f7-0175-1000-5416-503574e068e3"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:16:03Z","duration":229,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:16:03Z","duration":555,"status":"PASSED"},{"id":"EID6eec0822-0175-1000-fa6c-df1b5c99c7d3","testStepResults":{"TestStepResult":[{"id":"EID6eec0822-0175-1000-ebcc-8f3a0da878eb","attachments":{"attachment":[{"ref":"EIDe6fc5116-c7aa-4cd1-ba9f-af380bce2503"},{"ref":"EIDee325513-a5cb-42df-9533-30529098d4fc"}]},"parent":{"ref":"EID6eec0822-0175-1000-fa6c-df1b5c99c7d3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:16:03Z","duration":100,"status":"PASSED"},{"id":"EID6eec0909-0175-1000-be30-2eb6a1b54d7b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec09ea-0175-1000-ed75-1ad9b139a63d","parent":{"ref":"EID6eec0909-0175-1000-be30-2eb6a1b54d7b"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec09ea-0175-1000-c4e7-5c74460a96d0","parent":{"ref":"EID6eec0909-0175-1000-be30-2eb6a1b54d7b"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec09ea-0175-1000-3fa4-24ad1d9213e1","parent":{"ref":"EID6eec0909-0175-1000-be30-2eb6a1b54d7b"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec09ea-0175-1000-b43b-1a6bdf3c6877","parent":{"ref":"EID6eec0909-0175-1000-be30-2eb6a1b54d7b"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec09ea-0175-1000-1e99-308238fe4b6a","parent":{"ref":"EID6eec0909-0175-1000-be30-2eb6a1b54d7b"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa969f387-4c79-4f82-8467-808cf3507245"},{"ref":"EID4c827518-3d23-4ae8-b148-39160d663e3d"},{"ref":"EID77928e60-b26c-4a62-8d94-036b0ed56720"}]},"parent":{"ref":"EID6eec0822-0175-1000-fa6c-df1b5c99c7d3"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:16:03Z","duration":107,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:16:03Z","duration":456,"status":"PASSED"},{"id":"EID6eec09ea-0175-1000-31d4-1cfe07166955","testStepResults":{"TestStepResult":[{"id":"EID6eec09ea-0175-1000-6ec3-844c599e447e","attachments":{"attachment":[{"ref":"EID98378b91-34c6-4c2b-8e93-c3ece76424f0"},{"ref":"EID258ef4a7-f430-433e-9ca1-c401c5bce1c1"}]},"parent":{"ref":"EID6eec09ea-0175-1000-31d4-1cfe07166955"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":72,"status":"PASSED"},{"id":"EID6eec0a63-0175-1000-9e5f-0f17b0613b88","parent":{"ref":"EID6eec09ea-0175-1000-31d4-1cfe07166955"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0a63-0175-1000-026c-000444dd28ef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0af5-0175-1000-9025-06b7342ab09a","parent":{"ref":"EID6eec0a63-0175-1000-026c-000444dd28ef"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0af5-0175-1000-584a-0fcd9798c60b","parent":{"ref":"EID6eec0a63-0175-1000-026c-000444dd28ef"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0af5-0175-1000-ed18-3daf23e08cf3","parent":{"ref":"EID6eec0a63-0175-1000-026c-000444dd28ef"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0af5-0175-1000-e373-1c59da3e3f33","parent":{"ref":"EID6eec0a63-0175-1000-026c-000444dd28ef"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe0c596f3-e540-4c5f-aa41-d994bd466794"},{"ref":"EID1a3554ad-f5ed-4fa0-b807-40f7a72deb83"},{"ref":"EIDd3c5195c-c26a-40b6-b37e-8d0fa12afcd9"}]},"parent":{"ref":"EID6eec09ea-0175-1000-31d4-1cfe07166955"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:16:04Z","duration":23,"status":"PASSED"},{"id":"EID6eec0af5-0175-1000-3bed-12a6af8f8e90","attachments":{"attachment":{"ref":"EID18be8472-13de-4608-9df6-16c0ee96db3a"}},"parent":{"ref":"EID6eec09ea-0175-1000-31d4-1cfe07166955"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":1,"status":"PASSED"},{"id":"EID6eec0b00-0175-1000-7a26-1d8cfa66d5aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0b74-0175-1000-56d3-9666a67faaf2","parent":{"ref":"EID6eec0b00-0175-1000-7a26-1d8cfa66d5aa"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0b74-0175-1000-aceb-335f70d8d9ae","parent":{"ref":"EID6eec0b00-0175-1000-7a26-1d8cfa66d5aa"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0b74-0175-1000-08e6-29558e81b858","parent":{"ref":"EID6eec0b00-0175-1000-7a26-1d8cfa66d5aa"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0b74-0175-1000-8c99-6905dc7e18cc","parent":{"ref":"EID6eec0b00-0175-1000-7a26-1d8cfa66d5aa"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0b74-0175-1000-fda5-ed3d42d1f62f","parent":{"ref":"EID6eec0b00-0175-1000-7a26-1d8cfa66d5aa"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID199d897c-0422-4cef-a1f8-c4b1b07c4e61"},{"ref":"EID1c5eb94a-a4a0-4464-8742-29dd508b45be"},{"ref":"EIDbf2abd35-a287-47a0-bb90-d26f82615343"}]},"parent":{"ref":"EID6eec09ea-0175-1000-31d4-1cfe07166955"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:16:04Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:16:04Z","duration":402,"status":"PASSED"},{"id":"EID6eec0b7c-0175-1000-3a53-0653c2225d70","testStepResults":{"TestStepResult":[{"id":"EID6eec0b7c-0175-1000-8026-0f50f1b628c9","attachments":{"attachment":[{"ref":"EID3577b97d-0c11-439b-8b77-365a61a3b9c5"},{"ref":"EID2d28603c-541d-4d5b-b291-f8a04c962bde"}]},"parent":{"ref":"EID6eec0b7c-0175-1000-3a53-0653c2225d70"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":122,"status":"PASSED"},{"id":"EID6eec0c20-0175-1000-92ab-135cb2e1d3bb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0cbe-0175-1000-d213-2e6f0f353c4d","parent":{"ref":"EID6eec0c20-0175-1000-92ab-135cb2e1d3bb"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0cbe-0175-1000-532c-f25bb1586799","parent":{"ref":"EID6eec0c20-0175-1000-92ab-135cb2e1d3bb"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0cbe-0175-1000-e1d4-61a906b1a2ee","parent":{"ref":"EID6eec0c20-0175-1000-92ab-135cb2e1d3bb"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0cbe-0175-1000-59a9-33d5f5207011","parent":{"ref":"EID6eec0c20-0175-1000-92ab-135cb2e1d3bb"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID66f1665d-5433-4579-aced-c762c00a3d60"},{"ref":"EIDc273fcec-4690-4324-a908-6c08207a4210"},{"ref":"EIDf7c9efab-a41b-4a0c-8b29-290f0f71e3de"}]},"parent":{"ref":"EID6eec0b7c-0175-1000-3a53-0653c2225d70"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:16:04Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:16:04Z","duration":327,"status":"PASSED"},{"id":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f","testStepResults":{"TestStepResult":[{"id":"EID6eec0cc3-0175-1000-8d39-08ff66403bdf","attachments":{"attachment":[{"ref":"EIDd0c0ba9c-b62d-4262-ac34-fed2f77aa39d"},{"ref":"EID941fb23a-451b-44d3-b30d-fe99f1e6a42f"}]},"parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":104,"status":"PASSED"},{"id":"EID6eec0d54-0175-1000-63f3-a272ea9e0486","parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0d54-0175-1000-c41b-f85d6c0b533f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0dc6-0175-1000-f5e5-45382b93df6f","parent":{"ref":"EID6eec0d54-0175-1000-c41b-f85d6c0b533f"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0dc6-0175-1000-95a9-b8ab1df5830b","parent":{"ref":"EID6eec0d54-0175-1000-c41b-f85d6c0b533f"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0dc6-0175-1000-778f-5548d2876883","parent":{"ref":"EID6eec0d54-0175-1000-c41b-f85d6c0b533f"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0dc6-0175-1000-a6cc-55ff06230508","parent":{"ref":"EID6eec0d54-0175-1000-c41b-f85d6c0b533f"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6760cb4a-ba99-49e8-b8e0-92b5acf7ba7b"},{"ref":"EID798b34cb-3e59-42db-8449-6ed1d5d94cfa"},{"ref":"EID6701b7df-4e42-4946-911e-121dde4dd66b"}]},"parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:16:05Z","duration":28,"status":"PASSED"},{"id":"EID6eec0dc6-0175-1000-4b07-2520dba586f9","attachments":{"attachment":{"ref":"EID6d190dbe-90ab-4782-909c-f2ecdaf688ae"}},"parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":1,"status":"PASSED"},{"id":"EID6eec0dd0-0175-1000-3015-052d8662597c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0e95-0175-1000-f5e1-2bc6b02b198b","parent":{"ref":"EID6eec0dd0-0175-1000-3015-052d8662597c"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0e95-0175-1000-70c0-496f75f1a603","parent":{"ref":"EID6eec0dd0-0175-1000-3015-052d8662597c"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0e95-0175-1000-e4dc-dd0b318d236d","parent":{"ref":"EID6eec0dd0-0175-1000-3015-052d8662597c"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID299b382b-f52a-447d-a573-21d17768d6f5"},{"ref":"EID318a6a24-a385-4198-a7e6-5fca46647cc6"},{"ref":"EID63fb2f9b-1d44-46c8-a257-5efed604fe94"}]},"parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:16:05Z","duration":121,"status":"PASSED"},{"id":"EID6eec0e95-0175-1000-9024-503db23aada2","attachments":{"attachment":{"ref":"EID537a4868-84d7-497b-a4e6-556a5ea4f71f"}},"parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0ea2-0175-1000-f73f-420e85c2547a","attachments":{"attachment":{"ref":"EID2e857136-6bb9-4a8f-8327-a5e790fe3b21"}},"parent":{"ref":"EID6eec0cc3-0175-1000-1ed7-a2ffac0ee25f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:16:04Z","duration":503,"status":"PASSED"},{"id":"EID6eec0ebb-0175-1000-514e-a7826bcdb61c","testStepResults":{"TestStepResult":[{"id":"EID6eec0ebb-0175-1000-f120-160786a060b0","attachments":{"attachment":[{"ref":"EID19293e15-49e7-41c2-9e8d-c51e40d0efb5"},{"ref":"EID39791d3c-5e9a-4a38-933e-1052908553ad"}]},"parent":{"ref":"EID6eec0ebb-0175-1000-514e-a7826bcdb61c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":74,"status":"PASSED"},{"id":"EID6eec0f29-0175-1000-9144-b1f0d494ee84","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0f85-0175-1000-bde5-6b45be72dade","parent":{"ref":"EID6eec0f29-0175-1000-9144-b1f0d494ee84"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0f85-0175-1000-11ac-7db331bf2b13","parent":{"ref":"EID6eec0f29-0175-1000-9144-b1f0d494ee84"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0f85-0175-1000-f566-1c716c18869b","parent":{"ref":"EID6eec0f29-0175-1000-9144-b1f0d494ee84"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0f85-0175-1000-b5d9-e144fc7a0a3b","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec0f29-0175-1000-9144-b1f0d494ee84"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDb1eeab00-baf5-4606-ab6d-64cc2f70eef0"},{"ref":"EID46edd7d9-72f5-4358-90f2-ae8884673682"},{"ref":"EID790e6ac9-39af-47ed-909b-a3513f6fae85"}]},"parent":{"ref":"EID6eec0ebb-0175-1000-514e-a7826bcdb61c"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:16:05Z","duration":22,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:16:05Z","duration":202,"status":"PASSED_MANUAL"},{"id":"EID6eec0f85-0175-1000-8eeb-8e142c4f557a","testStepResults":{"TestStepResult":{"id":"EID6eec0f85-0175-1000-6196-029fcd80d6fb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1036-0175-1000-09cf-845f1ba6837b","parent":{"ref":"EID6eec0f85-0175-1000-6196-029fcd80d6fb"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec1036-0175-1000-c5b5-ac98fa06bc74","parent":{"ref":"EID6eec0f85-0175-1000-6196-029fcd80d6fb"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec1036-0175-1000-8bfb-1127c01186c3","parent":{"ref":"EID6eec0f85-0175-1000-6196-029fcd80d6fb"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec1036-0175-1000-e8f5-168991d81ebd","parent":{"ref":"EID6eec0f85-0175-1000-6196-029fcd80d6fb"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a2473dd-b51d-4a26-a6dc-52f96e3ca2f9"},{"ref":"EIDe9290460-56f3-4c06-a3b5-59e6dd91f6a2"},{"ref":"EID07510543-c41a-4552-990d-4cc8b1b02b19"}]},"parent":{"ref":"EID6eec0f85-0175-1000-8eeb-8e142c4f557a"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:16:05Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:16:05Z","duration":177,"status":"PASSED"},{"id":"EID6eec1037-0175-1000-c757-de32f18dc68f","testStepResults":{"TestStepResult":{"id":"EID6eec1037-0175-1000-59d6-02326ff82cf2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec109e-0175-1000-a095-57b1a9f84d66","parent":{"ref":"EID6eec1037-0175-1000-59d6-02326ff82cf2"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec109e-0175-1000-0aa7-53d935bd0093","parent":{"ref":"EID6eec1037-0175-1000-59d6-02326ff82cf2"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec109e-0175-1000-17b7-7b0dec4fea8e","parent":{"ref":"EID6eec1037-0175-1000-59d6-02326ff82cf2"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec109e-0175-1000-a1ab-88b7d5bdde0a","parent":{"ref":"EID6eec1037-0175-1000-59d6-02326ff82cf2"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3825c597-0250-4368-8a9b-1d1a39c629ea"},{"ref":"EID7107604a-53f3-453d-88db-72bae1f316ba"},{"ref":"EID54135994-6732-4118-95ff-dc7c9987bcd1"}]},"parent":{"ref":"EID6eec1037-0175-1000-c757-de32f18dc68f"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:16:05Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:16:05Z","duration":103,"status":"PASSED"},{"id":"EID6eec109e-0175-1000-5dfd-4de7567376c0","testStepResults":{"TestStepResult":[{"id":"EID6eec109e-0175-1000-e6c5-af961d0c6a8d","attachments":{"attachment":[{"ref":"EIDe3ca10e3-397e-4a39-9d2a-af85c72ee216"},{"ref":"EIDe90ed41e-f738-42ff-9fc2-55588b0a0c71"},{"ref":"EID7deaf53b-7107-4352-9f5a-81006e1986bc"},{"ref":"EID966d820f-0ede-42d3-8113-bddcf4ba0cbb"},{"ref":"EID606dcae9-f09c-4548-b4d0-51cb1d0c6a40"},{"ref":"EID329d8ac8-4687-4acf-8500-d88a9ca4d380"},{"ref":"EIDee2032a7-49ec-433e-b680-2cf3f53805a1"},{"ref":"EID95427499-39a7-493d-b68c-17d290f1eb19"},{"ref":"EID382769cc-edb1-45cd-b6a3-12b51ef6a2e5"},{"ref":"EIDdc92fa1b-a066-475f-a6c6-06f7033fc5a5"},{"ref":"EIDdd345b25-1a59-4fe9-9f17-8563f2916cfd"},{"ref":"EID3bf586c8-484d-4c0f-99dd-06b1f74a2cb8"}]},"parent":{"ref":"EID6eec109e-0175-1000-5dfd-4de7567376c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":285,"status":"PASSED"},{"id":"EID6eec12f7-0175-1000-2109-4158e533301e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec13a7-0175-1000-346a-c7b5d76aeb26","parent":{"ref":"EID6eec12f7-0175-1000-2109-4158e533301e"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec13a7-0175-1000-3116-0580a4876164","parent":{"ref":"EID6eec12f7-0175-1000-2109-4158e533301e"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec13a7-0175-1000-d50f-a9f07bbee10f","parent":{"ref":"EID6eec12f7-0175-1000-2109-4158e533301e"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec13a7-0175-1000-dba6-913e942dc85e","parent":{"ref":"EID6eec12f7-0175-1000-2109-4158e533301e"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec13a7-0175-1000-cf29-e01d12209743","parent":{"ref":"EID6eec12f7-0175-1000-2109-4158e533301e"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ddc1c13-f794-42d6-8e78-734c1fb9399b"},{"ref":"EID2f43ed0d-6ad8-4fcd-901d-627e2af30f2f"},{"ref":"EIDc475a3b6-052d-45c5-b7ab-474e42bd22e1"}]},"parent":{"ref":"EID6eec109e-0175-1000-5dfd-4de7567376c0"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:16:06Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:16:05Z","duration":777,"status":"PASSED"},{"id":"EID6eec13a8-0175-1000-b5c8-623bc7126f99","testStepResults":{"TestStepResult":{"id":"EID6eec13a8-0175-1000-425c-0eb861dd7551","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1427-0175-1000-7ceb-392e78ffef5d","parent":{"ref":"EID6eec13a8-0175-1000-425c-0eb861dd7551"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1427-0175-1000-76cc-d4c0a4cc2b72","parent":{"ref":"EID6eec13a8-0175-1000-425c-0eb861dd7551"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1427-0175-1000-0bc1-d65a7d5e49da","parent":{"ref":"EID6eec13a8-0175-1000-425c-0eb861dd7551"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1427-0175-1000-9631-45e38baf0bde","parent":{"ref":"EID6eec13a8-0175-1000-425c-0eb861dd7551"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb57a589b-964c-4808-ba6b-7d8aa922d76c"},{"ref":"EIDed615172-5563-40f7-a40f-1fca0555a6d4"},{"ref":"EIDf948a4e1-d797-4d1f-8f83-e470349abc6e"}]},"parent":{"ref":"EID6eec13a8-0175-1000-b5c8-623bc7126f99"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:16:06Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:16:06Z","duration":127,"status":"PASSED"},{"id":"EID6eec1427-0175-1000-c5d3-7a5a7286d6a0","testStepResults":{"TestStepResult":{"id":"EID6eec1427-0175-1000-9302-62da6e52255a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec14f0-0175-1000-f89e-2f1fb2a6f154","parent":{"ref":"EID6eec1427-0175-1000-9302-62da6e52255a"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec14f0-0175-1000-87e7-340f06d7f315","parent":{"ref":"EID6eec1427-0175-1000-9302-62da6e52255a"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec14f0-0175-1000-70a6-1d3a24925fa0","parent":{"ref":"EID6eec1427-0175-1000-9302-62da6e52255a"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec14f0-0175-1000-3dd3-6a851b80b5b4","parent":{"ref":"EID6eec1427-0175-1000-9302-62da6e52255a"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec14f0-0175-1000-53ce-71571f81a26b","parent":{"ref":"EID6eec1427-0175-1000-9302-62da6e52255a"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec14f0-0175-1000-14f4-aaf75a65c9ab","parent":{"ref":"EID6eec1427-0175-1000-9302-62da6e52255a"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b8a9c02-f3a5-4fe8-bf27-67f6c025f7f0"},{"ref":"EID7b6b4cbf-36a5-410e-be16-53382bb7b3fe"},{"ref":"EIDb831fbef-e304-40b8-aab2-7cc5207e61fb"}]},"parent":{"ref":"EID6eec1427-0175-1000-c5d3-7a5a7286d6a0"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:16:06Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:16:06Z","duration":201,"status":"PASSED"},{"id":"EID6eec14f0-0175-1000-6d1c-96094bc7a64a","testStepResults":{"TestStepResult":{"id":"EID6eec14f0-0175-1000-3186-e74158638ece","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec157c-0175-1000-b0ce-c5cc3b4d8735","parent":{"ref":"EID6eec14f0-0175-1000-3186-e74158638ece"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec157c-0175-1000-1c4a-69fee501b527","parent":{"ref":"EID6eec14f0-0175-1000-3186-e74158638ece"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec157c-0175-1000-56bb-3945c65a5b7d","parent":{"ref":"EID6eec14f0-0175-1000-3186-e74158638ece"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec157c-0175-1000-74dc-787291d30309","parent":{"ref":"EID6eec14f0-0175-1000-3186-e74158638ece"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec157c-0175-1000-7c7d-75cfa71839fd","parent":{"ref":"EID6eec14f0-0175-1000-3186-e74158638ece"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec157c-0175-1000-7cdd-aeaa91c2e865","parent":{"ref":"EID6eec14f0-0175-1000-3186-e74158638ece"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe728f612-4e53-47e2-a434-fea99107195e"},{"ref":"EIDae863c33-884b-4a9c-be3d-7d5376b4017b"},{"ref":"EID14a21820-5983-432f-9773-6e02b30300ab"}]},"parent":{"ref":"EID6eec14f0-0175-1000-6d1c-96094bc7a64a"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:16:07Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:16:07Z","duration":140,"status":"PASSED"},{"id":"EID6eec157c-0175-1000-954b-803467a6ef8f","testStepResults":{"TestStepResult":{"id":"EID6eec157c-0175-1000-23df-79e1b558735b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec160f-0175-1000-caa4-f7b83ea017c1","parent":{"ref":"EID6eec157c-0175-1000-23df-79e1b558735b"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec160f-0175-1000-77c4-5525d95b7a14","parent":{"ref":"EID6eec157c-0175-1000-23df-79e1b558735b"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec160f-0175-1000-e3aa-5d5aa3f78cc9","parent":{"ref":"EID6eec157c-0175-1000-23df-79e1b558735b"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec160f-0175-1000-79d4-ac3b46c20dce","parent":{"ref":"EID6eec157c-0175-1000-23df-79e1b558735b"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID44344dbb-8cc6-44ad-a501-c8abc3553f70"},{"ref":"EIDd5cd5598-d616-41f8-b207-8fe7b363a894"},{"ref":"EID8484ba10-7a29-4ebd-8598-f3e2ab284b0e"}]},"parent":{"ref":"EID6eec157c-0175-1000-954b-803467a6ef8f"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:16:07Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:16:07Z","duration":147,"status":"PASSED"},{"id":"EID6eec1618-0175-1000-e10b-0b5e275e62b5","testStepResults":{"TestStepResult":[{"id":"EID6eec1618-0175-1000-0084-88bf42998b38","attachments":{"attachment":[{"ref":"EID83ada865-18ab-4747-8917-c6e4eb3eac03"},{"ref":"EIDff909781-bef5-45ba-ac14-fdc88792f049"},{"ref":"EID7f20d94b-f420-4b25-97e8-5a3f138e6267"},{"ref":"EID57c9ef27-2979-48c6-b58f-f3fd43926aaa"}]},"parent":{"ref":"EID6eec1618-0175-1000-e10b-0b5e275e62b5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":238,"status":"PASSED"},{"id":"EID6eec1733-0175-1000-8d5c-a104c0fde1e6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec17a0-0175-1000-8f04-6d8df3ffdbff","parent":{"ref":"EID6eec1733-0175-1000-8d5c-a104c0fde1e6"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17a0-0175-1000-2596-e69d88c334be","parent":{"ref":"EID6eec1733-0175-1000-8d5c-a104c0fde1e6"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17a0-0175-1000-987a-04673a76bda8","parent":{"ref":"EID6eec1733-0175-1000-8d5c-a104c0fde1e6"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17a0-0175-1000-8f9b-6dc27ecbbc98","parent":{"ref":"EID6eec1733-0175-1000-8d5c-a104c0fde1e6"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3be2c3b0-95a8-41e3-bc44-d3a41eb5b525"},{"ref":"EID8a0222b0-5592-49ce-a971-72d92455ad87"},{"ref":"EID47d8246d-77f1-4809-b8d1-d43db81175ff"}]},"parent":{"ref":"EID6eec1618-0175-1000-e10b-0b5e275e62b5"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:16:07Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:16:07Z","duration":393,"status":"PASSED"},{"id":"EID6eec17a1-0175-1000-1363-81ce892421a0","testStepResults":{"TestStepResult":{"id":"EID6eec17a1-0175-1000-7560-71da140d41f8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec17f8-0175-1000-4c72-e335292ffa91","parent":{"ref":"EID6eec17a1-0175-1000-7560-71da140d41f8"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17f8-0175-1000-eeca-bce41c547403","parent":{"ref":"EID6eec17a1-0175-1000-7560-71da140d41f8"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17f8-0175-1000-ad5c-6b55c7a10af6","parent":{"ref":"EID6eec17a1-0175-1000-7560-71da140d41f8"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17f8-0175-1000-12ba-947725676b31","parent":{"ref":"EID6eec17a1-0175-1000-7560-71da140d41f8"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfad05102-d28f-40c9-a5c0-112556ac0909"},{"ref":"EID19421bc6-8e62-422d-b5a0-f7fae10aae4a"},{"ref":"EID1fd48e67-c5fe-4787-9494-5d7dcb9f755e"}]},"parent":{"ref":"EID6eec17a1-0175-1000-1363-81ce892421a0"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:16:07Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:16:07Z","duration":97,"status":"PASSED"},{"id":"EID6eec1802-0175-1000-6de6-00e21f1f88f1","testStepResults":{"TestStepResult":[{"id":"EID6eec1802-0175-1000-fd8b-f30431c12340","parent":{"ref":"EID6eec1802-0175-1000-6de6-00e21f1f88f1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec1802-0175-1000-8a3b-535f2d1dab5b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1879-0175-1000-488a-915e1336206b","parent":{"ref":"EID6eec1802-0175-1000-8a3b-535f2d1dab5b"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec1879-0175-1000-ab64-ea4e5153741d","parent":{"ref":"EID6eec1802-0175-1000-8a3b-535f2d1dab5b"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec187a-0175-1000-06de-847b1a21b3dc","parent":{"ref":"EID6eec1802-0175-1000-8a3b-535f2d1dab5b"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec187a-0175-1000-1bfe-828b277c4bbd","parent":{"ref":"EID6eec1802-0175-1000-8a3b-535f2d1dab5b"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe5b60878-a297-4f94-84e7-d9cece2953f0"},{"ref":"EID2f4134ae-eafa-47ba-ac97-62e94c667b44"},{"ref":"EID2bc7c7f4-4123-4128-b4eb-86ba0eb2ce08"}]},"parent":{"ref":"EID6eec1802-0175-1000-6de6-00e21f1f88f1"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:16:07Z","duration":22,"status":"PASSED"},{"id":"EID6eec187a-0175-1000-997e-737c33be935e","attachments":{"attachment":{"ref":"EID5f021af5-21ca-4831-b048-5fcbd1ab1654"}},"parent":{"ref":"EID6eec1802-0175-1000-6de6-00e21f1f88f1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec18a3-0175-1000-3e2b-5df8e31a423b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1936-0175-1000-c900-a9e98d44b856","parent":{"ref":"EID6eec18a3-0175-1000-3e2b-5df8e31a423b"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1936-0175-1000-f68d-695c8cec091e","parent":{"ref":"EID6eec18a3-0175-1000-3e2b-5df8e31a423b"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1936-0175-1000-d1f4-8a423c91b9f3","parent":{"ref":"EID6eec18a3-0175-1000-3e2b-5df8e31a423b"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1936-0175-1000-fcee-5c8a26fffac9","parent":{"ref":"EID6eec18a3-0175-1000-3e2b-5df8e31a423b"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaf3b626f-4696-4e1b-8945-79154fa09bab"},{"ref":"EIDd8ab392e-cb48-4c8b-ac90-4dc9dfe06883"},{"ref":"EIDbe288fe7-2125-4ded-8ce3-a88df981169f"}]},"parent":{"ref":"EID6eec1802-0175-1000-6de6-00e21f1f88f1"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-28T11:16:07Z","duration":75,"status":"PASSED"},{"id":"EID6eec1936-0175-1000-7302-24b299c016a4","attachments":{"attachment":{"ref":"EID29055247-43ab-4bec-b7b4-b57cba7815a7"}},"parent":{"ref":"EID6eec1802-0175-1000-6de6-00e21f1f88f1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":1,"status":"PASSED"},{"id":"EID6eec1942-0175-1000-3c98-38be701fc312","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec19d4-0175-1000-9ba5-f624e26520ca","parent":{"ref":"EID6eec1942-0175-1000-3c98-38be701fc312"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19d4-0175-1000-464c-c94b96f57d14","parent":{"ref":"EID6eec1942-0175-1000-3c98-38be701fc312"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19d4-0175-1000-633b-137d667482ae","parent":{"ref":"EID6eec1942-0175-1000-3c98-38be701fc312"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19d4-0175-1000-12a2-0a7992045a44","parent":{"ref":"EID6eec1942-0175-1000-3c98-38be701fc312"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb91560fa-2d9f-4aa6-923b-3dc0c1e7cb71"},{"ref":"EIDff43dba5-bdc3-40cc-a358-1d7752b127a9"},{"ref":"EIDc479f8a8-c7ba-4769-81c7-015e698bb0d1"}]},"parent":{"ref":"EID6eec1802-0175-1000-6de6-00e21f1f88f1"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-28T11:16:08Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eec055b-0175-1000-d692-2f051edcb328"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:16:07Z","duration":466,"status":"PASSED"}]},"parent":{"ref":"EID7640be29-454f-4399-ba51-2fd76ca8a7f0"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:16:03Z","duration":5241,"status":"PASSED_MANUAL"},{"id":"EID6eec19d4-0175-1000-4266-451f0b438db5","testCaseResults":{"TestCaseResult":[{"id":"EID6eec19d4-0175-1000-df83-9aac409c26c2","testStepResults":{"TestStepResult":[{"id":"EID6eec19d4-0175-1000-b918-d6b30215c8d2","parent":{"ref":"EID6eec19d4-0175-1000-df83-9aac409c26c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19d4-0175-1000-1cf7-99c0c3903ef1","parent":{"ref":"EID6eec19d4-0175-1000-df83-9aac409c26c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":22,"status":"PASSED"},{"id":"EID6eec19d4-0175-1000-318a-1f2c783f723b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1a2a-0175-1000-1647-9abc47efca49","parent":{"ref":"EID6eec19d4-0175-1000-318a-1f2c783f723b"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a2a-0175-1000-e8f3-05060e81e85f","parent":{"ref":"EID6eec19d4-0175-1000-318a-1f2c783f723b"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a2a-0175-1000-2394-8ba683864f6b","parent":{"ref":"EID6eec19d4-0175-1000-318a-1f2c783f723b"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb661084-d1ab-4df4-87c6-7a669683ec75"},{"ref":"EIDfe879b1d-3b8c-47a7-9e8e-ac59bbc80983"},{"ref":"EIDc6f00d20-fcdd-4d07-86d7-f117f8f326f5"}]},"parent":{"ref":"EID6eec19d4-0175-1000-df83-9aac409c26c2"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:16:08Z","duration":25,"status":"PASSED"},{"id":"EID6eec1a2a-0175-1000-51c7-02cd87112e16","attachments":{"attachment":{"ref":"EID61886424-dc5e-40c8-8169-be532fc9a750"}},"parent":{"ref":"EID6eec19d4-0175-1000-df83-9aac409c26c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a34-0175-1000-aee6-b7b36fc8f575","parent":{"ref":"EID6eec19d4-0175-1000-df83-9aac409c26c2"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:16:08Z","duration":18,"status":"PASSED"}]},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:16:08Z","duration":114,"status":"PASSED"},{"id":"EID6eec1a47-0175-1000-e4da-6fe744f0fe1a","testStepResults":{"TestStepResult":[{"id":"EID6eec1a47-0175-1000-9539-47a405460697","parent":{"ref":"EID6eec1a47-0175-1000-e4da-6fe744f0fe1a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":64,"status":"PASSED"},{"id":"EID6eec1a47-0175-1000-d79e-11898f4b21b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1a9d-0175-1000-6a12-e46b4cf187e6","parent":{"ref":"EID6eec1a47-0175-1000-d79e-11898f4b21b5"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a9d-0175-1000-1994-380da747febc","parent":{"ref":"EID6eec1a47-0175-1000-d79e-11898f4b21b5"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a9d-0175-1000-c933-60139702fa6f","parent":{"ref":"EID6eec1a47-0175-1000-d79e-11898f4b21b5"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a9d-0175-1000-42a3-ec696a0d90bb","parent":{"ref":"EID6eec1a47-0175-1000-d79e-11898f4b21b5"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a9d-0175-1000-37f8-88e1e5c5998f","parent":{"ref":"EID6eec1a47-0175-1000-d79e-11898f4b21b5"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDab960a0a-5c48-4811-a667-748c29b4a61a"},{"ref":"EID442ab680-7b8c-4f3f-a7bb-0b4873d600a7"},{"ref":"EID1869a4eb-08d5-4895-83d7-b593328822c8"}]},"parent":{"ref":"EID6eec1a47-0175-1000-e4da-6fe744f0fe1a"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:16:08Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:16:08Z","duration":86,"status":"PASSED"},{"id":"EID6eec1a9d-0175-1000-7332-f1f5b2184171","testStepResults":{"TestStepResult":[{"id":"EID6eec1a9d-0175-1000-8d9a-8ab70efdaa82","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1af3-0175-1000-4637-a077e664547e","parent":{"ref":"EID6eec1a9d-0175-1000-8d9a-8ab70efdaa82"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1af3-0175-1000-8082-82b9059ab138","parent":{"ref":"EID6eec1a9d-0175-1000-8d9a-8ab70efdaa82"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1af3-0175-1000-d8ff-da5e0a15da5a","parent":{"ref":"EID6eec1a9d-0175-1000-8d9a-8ab70efdaa82"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9fa6cdac-f770-4a53-b2b8-54623c13b0c8"},{"ref":"EID1e0df0ff-c8b7-4d7a-b571-0cfc11575134"},{"ref":"EIDbc571fca-af68-4d6e-ade3-cdd3cdc680bc"}]},"parent":{"ref":"EID6eec1a9d-0175-1000-7332-f1f5b2184171"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:16:08Z","duration":26,"status":"PASSED"},{"id":"EID6eec1af3-0175-1000-c604-293280979e6f","attachments":{"attachment":{"ref":"EIDdcf626ee-2953-4487-ba11-1e4f0549b4a9"}},"parent":{"ref":"EID6eec1a9d-0175-1000-7332-f1f5b2184171"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b00-0175-1000-147a-a34847b85e89","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1b7e-0175-1000-42ed-b5b878674afd","parent":{"ref":"EID6eec1b00-0175-1000-147a-a34847b85e89"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b7e-0175-1000-14a6-1ac8ef0ec50c","parent":{"ref":"EID6eec1b00-0175-1000-147a-a34847b85e89"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b7e-0175-1000-9cef-618cfb5cd46d","parent":{"ref":"EID6eec1b00-0175-1000-147a-a34847b85e89"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b7e-0175-1000-0c9b-df6e6eff0b1a","parent":{"ref":"EID6eec1b00-0175-1000-147a-a34847b85e89"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b7e-0175-1000-310e-2c47b864aece","parent":{"ref":"EID6eec1b00-0175-1000-147a-a34847b85e89"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID18c814d6-725a-4dcb-9317-5425572803fa"},{"ref":"EIDc9c033a7-6957-418f-bf1c-1034e13f88a6"},{"ref":"EID0d83d34f-3391-419a-9e30-f2625def6b5a"}]},"parent":{"ref":"EID6eec1a9d-0175-1000-7332-f1f5b2184171"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:16:08Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:16:08Z","duration":225,"status":"PASSED"},{"id":"EID6eec1b7e-0175-1000-e4d2-1dff35acdf0f","testStepResults":{"TestStepResult":[{"id":"EID6eec1b7f-0175-1000-106b-c6b47f5c7fc6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1be3-0175-1000-1dc7-d103fa9143a4","parent":{"ref":"EID6eec1b7f-0175-1000-106b-c6b47f5c7fc6"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1be3-0175-1000-54e7-c7f754a516ed","parent":{"ref":"EID6eec1b7f-0175-1000-106b-c6b47f5c7fc6"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1be3-0175-1000-0fb6-f489a88cb261","parent":{"ref":"EID6eec1b7f-0175-1000-106b-c6b47f5c7fc6"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1be3-0175-1000-70bc-90f5a36b1758","parent":{"ref":"EID6eec1b7f-0175-1000-106b-c6b47f5c7fc6"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDed4d47cf-6254-43e4-8fcd-4171a95e7c98"},{"ref":"EIDc21d00c2-a1b3-497d-ac29-f2ebc2012d11"},{"ref":"EID09307ed0-f2cd-4ef5-8de5-87cdab8e3a63"}]},"parent":{"ref":"EID6eec1b7e-0175-1000-e4d2-1dff35acdf0f"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:16:08Z","duration":22,"status":"PASSED"},{"id":"EID6eec1be3-0175-1000-484f-b2267bd4714f","attachments":{"attachment":{"ref":"EID4232153a-a463-4742-acb8-344cc70584d4"}},"parent":{"ref":"EID6eec1b7e-0175-1000-e4d2-1dff35acdf0f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":1,"status":"PASSED"},{"id":"EID6eec1bf0-0175-1000-417c-81f87cd82673","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1c1b-0175-1000-a62b-c93a78730ff0","parent":{"ref":"EID6eec1bf0-0175-1000-417c-81f87cd82673"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1c1b-0175-1000-bdfa-6688a327b413","parent":{"ref":"EID6eec1bf0-0175-1000-417c-81f87cd82673"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID591ec227-1758-4938-8919-3a8eb92ff0a6"},{"ref":"EID7646a5ba-6f71-45de-be0f-a9d67b53834b"}]},"parent":{"ref":"EID6eec1b7e-0175-1000-e4d2-1dff35acdf0f"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:16:08Z","duration":39,"status":"PASSED"},{"id":"EID6eec1c1b-0175-1000-86d9-b775dd1f3f73","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1ca0-0175-1000-49f2-3b9fabb7afca","parent":{"ref":"EID6eec1c1b-0175-1000-86d9-b775dd1f3f73"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1ca0-0175-1000-4c53-65a1d2ab7a23","parent":{"ref":"EID6eec1c1b-0175-1000-86d9-b775dd1f3f73"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1ca0-0175-1000-aff5-b403abdebf7d","parent":{"ref":"EID6eec1c1b-0175-1000-86d9-b775dd1f3f73"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1ca0-0175-1000-11ac-5c9935842e21","parent":{"ref":"EID6eec1c1b-0175-1000-86d9-b775dd1f3f73"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdec00980-49d0-47da-906f-c8cea6d911a7"},{"ref":"EIDfdd1871f-85b8-4fb0-ab2f-609f6e1e64b2"},{"ref":"EID547d23bb-7196-4911-ae33-b2d81833e92f"}]},"parent":{"ref":"EID6eec1b7e-0175-1000-e4d2-1dff35acdf0f"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:16:08Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:16:08Z","duration":290,"status":"PASSED"},{"id":"EID6eec1ca1-0175-1000-bc72-1eea5ed6cb34","testStepResults":{"TestStepResult":{"id":"EID6eec1ca1-0175-1000-48ff-c697cbd95f52","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1d23-0175-1000-99db-94e348a3f231","parent":{"ref":"EID6eec1ca1-0175-1000-48ff-c697cbd95f52"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d23-0175-1000-5e66-c0b7936bf49a","parent":{"ref":"EID6eec1ca1-0175-1000-48ff-c697cbd95f52"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d23-0175-1000-a863-8ef427cd3d43","parent":{"ref":"EID6eec1ca1-0175-1000-48ff-c697cbd95f52"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaeaf2f67-0ef5-4e2e-860e-ee496a5f850d"},{"ref":"EIDf24d2d9f-090c-4c45-91c6-543738c300e7"},{"ref":"EID465bf049-ad9c-4dd3-a3e8-244693301ae5"}]},"parent":{"ref":"EID6eec1ca1-0175-1000-bc72-1eea5ed6cb34"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:16:08Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:16:08Z","duration":130,"status":"PASSED"},{"id":"EID6eec1d2a-0175-1000-5143-c0b78cc62449","testStepResults":{"TestStepResult":{"id":"EID6eec1d2b-0175-1000-495f-4c05bf3da25b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1d79-0175-1000-76b8-12ffba29b3d5","parent":{"ref":"EID6eec1d2b-0175-1000-495f-4c05bf3da25b"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-49e4-a88027f92d5f","parent":{"ref":"EID6eec1d2b-0175-1000-495f-4c05bf3da25b"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-81e4-b4e215f5feca","parent":{"ref":"EID6eec1d2b-0175-1000-495f-4c05bf3da25b"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc6e46cb1-2f49-40a6-a25d-6003b956be54"},{"ref":"EID8a2bb45f-a8ff-41a6-9322-9a3f27545517"},{"ref":"EID1f0c3ec1-d642-4db0-ac79-589ab3a57d38"}]},"parent":{"ref":"EID6eec1d2a-0175-1000-5143-c0b78cc62449"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:16:09Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:16:09Z","duration":79,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-776a-4c3208bb623e","testStepResults":{"TestStepResult":{"id":"EID6eec1d79-0175-1000-40e8-0f2269f2f8fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1df4-0175-1000-cea2-527435512c44","parent":{"ref":"EID6eec1d79-0175-1000-40e8-0f2269f2f8fd"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1df4-0175-1000-bc9e-54b7fe0da007","parent":{"ref":"EID6eec1d79-0175-1000-40e8-0f2269f2f8fd"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1df4-0175-1000-5e94-d08dd1d1eeae","parent":{"ref":"EID6eec1d79-0175-1000-40e8-0f2269f2f8fd"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1df4-0175-1000-1d42-89d38ce58ff1","parent":{"ref":"EID6eec1d79-0175-1000-40e8-0f2269f2f8fd"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1df4-0175-1000-ca71-de5a7c008a80","parent":{"ref":"EID6eec1d79-0175-1000-40e8-0f2269f2f8fd"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID47803c64-ee4a-4fa1-92d4-1dffc1e45657"},{"ref":"EID189a8e99-1a02-4a4b-acbb-c7e1419f3276"},{"ref":"EID8bae48f0-bbe3-4df8-8d08-2840a3ce6e1b"}]},"parent":{"ref":"EID6eec1d79-0175-1000-776a-4c3208bb623e"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:16:09Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:16:09Z","duration":130,"status":"PASSED"},{"id":"EID6eec1dfb-0175-1000-ab6a-77214652af2c","testStepResults":{"TestStepResult":{"id":"EID6eec1dfb-0175-1000-91e9-052798566d96","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1e63-0175-1000-cbb8-0d4c8f0525c3","parent":{"ref":"EID6eec1dfb-0175-1000-91e9-052798566d96"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1e63-0175-1000-5c4e-38e16dc7fef9","parent":{"ref":"EID6eec1dfb-0175-1000-91e9-052798566d96"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1e63-0175-1000-003e-fcc8bfd113d3","parent":{"ref":"EID6eec1dfb-0175-1000-91e9-052798566d96"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a32cf27-823a-4656-ac07-b394b22fa368"},{"ref":"EIDa9eed03a-6e0d-4efd-8295-90c277dc8446"},{"ref":"EIDdb312a23-5676-4f9f-8055-492754844f8a"}]},"parent":{"ref":"EID6eec1dfb-0175-1000-ab6a-77214652af2c"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:16:09Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:16:09Z","duration":104,"status":"PASSED"},{"id":"EID6eec1e63-0175-1000-3cb2-bf6d8c72fc74","testStepResults":{"TestStepResult":{"id":"EID6eec1e63-0175-1000-e545-85cd3a5abb3a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1ef6-0175-1000-b69a-aa5a355c9d66","parent":{"ref":"EID6eec1e63-0175-1000-e545-85cd3a5abb3a"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1ef6-0175-1000-23f3-c49d82ef108d","parent":{"ref":"EID6eec1e63-0175-1000-e545-85cd3a5abb3a"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1ef6-0175-1000-8a5d-c6b5556e8ed8","parent":{"ref":"EID6eec1e63-0175-1000-e545-85cd3a5abb3a"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDec68e4a9-ff04-4a61-bd38-58ca6abf8380"},{"ref":"EID9f9e447f-7c18-4be7-9813-081fb0463e9d"},{"ref":"EID25171f32-c6a7-4ea0-b812-9aa56094ad6b"}]},"parent":{"ref":"EID6eec1e63-0175-1000-3cb2-bf6d8c72fc74"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:16:09Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:16:09Z","duration":147,"status":"PASSED"},{"id":"EID6eec1ef6-0175-1000-54f4-fe12ab9fe750","testStepResults":{"TestStepResult":{"id":"EID6eec1ef6-0175-1000-77cd-273bb13f1cd1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1f53-0175-1000-6b42-b053aa7a2d60","parent":{"ref":"EID6eec1ef6-0175-1000-77cd-273bb13f1cd1"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1f53-0175-1000-13a4-acb63b221ce9","parent":{"ref":"EID6eec1ef6-0175-1000-77cd-273bb13f1cd1"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1f53-0175-1000-2489-6be5571fe9b3","parent":{"ref":"EID6eec1ef6-0175-1000-77cd-273bb13f1cd1"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1f53-0175-1000-02e2-30a02ec56e1b","parent":{"ref":"EID6eec1ef6-0175-1000-77cd-273bb13f1cd1"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID71a410d0-6fb8-4dca-83b6-b9e342835319"},{"ref":"EID0b283953-11be-4e9b-8542-e26dabdc7c57"},{"ref":"EID811abe7a-f582-4bee-b2c8-de451bf183b4"}]},"parent":{"ref":"EID6eec1ef6-0175-1000-54f4-fe12ab9fe750"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:16:09Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:16:09Z","duration":93,"status":"PASSED"},{"id":"EID6eec1f53-0175-1000-1513-b8e1da76f244","testStepResults":{"TestStepResult":{"id":"EID6eec1f5b-0175-1000-d492-360c7e7521df","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1fb5-0175-1000-a127-8c8ba0b88d48","parent":{"ref":"EID6eec1f5b-0175-1000-d492-360c7e7521df"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1fb5-0175-1000-d13c-44c4bb50a278","parent":{"ref":"EID6eec1f5b-0175-1000-d492-360c7e7521df"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1fb5-0175-1000-c987-13031a3d71a5","parent":{"ref":"EID6eec1f5b-0175-1000-d492-360c7e7521df"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1fb5-0175-1000-5d17-52b6dc7b6a8a","parent":{"ref":"EID6eec1f5b-0175-1000-d492-360c7e7521df"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID37037e52-7fa4-4004-bb97-45e82d540a83"},{"ref":"EIDa0a1bb70-1b40-4bf3-9e6a-3cce1d557fef"},{"ref":"EIDb0f3b2b1-ce27-4f50-97dd-615f0eb64e57"}]},"parent":{"ref":"EID6eec1f53-0175-1000-1513-b8e1da76f244"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:16:09Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:16:09Z","duration":98,"status":"PASSED"},{"id":"EID6eec1fb5-0175-1000-548d-d1553d24daa4","testStepResults":{"TestStepResult":[{"id":"EID6eec1fb5-0175-1000-89d0-df8ce6e921ef","parent":{"ref":"EID6eec1fb5-0175-1000-548d-d1553d24daa4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1fb6-0175-1000-0d6f-63b730aca2e4","parent":{"ref":"EID6eec1fb5-0175-1000-548d-d1553d24daa4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":86,"status":"PASSED"},{"id":"EID6eec1fb6-0175-1000-a437-a69b510e33ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2018-0175-1000-8fad-5c116dfb9a91","parent":{"ref":"EID6eec1fb6-0175-1000-a437-a69b510e33ca"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec2018-0175-1000-83c5-0afe40bb31db","parent":{"ref":"EID6eec1fb6-0175-1000-a437-a69b510e33ca"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec2018-0175-1000-222e-04bf007e8cd6","parent":{"ref":"EID6eec1fb6-0175-1000-a437-a69b510e33ca"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec2018-0175-1000-240e-a2022efa9914","parent":{"ref":"EID6eec1fb6-0175-1000-a437-a69b510e33ca"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d9bceed-b015-4ef4-9043-e325adf40ae0"},{"ref":"EIDbefe99c7-9226-4b28-9877-0cb49a238306"},{"ref":"EIDbaddc72a-45f0-4d85-bf97-f0b5478ce1e2"}]},"parent":{"ref":"EID6eec1fb5-0175-1000-548d-d1553d24daa4"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:16:09Z","duration":26,"status":"PASSED"},{"id":"EID6eec2018-0175-1000-4bb6-0b952d0ba890","attachments":{"attachment":{"ref":"EID4ea0657e-7ef0-4a9c-ae09-29a3f7eaf6be"}},"parent":{"ref":"EID6eec1fb5-0175-1000-548d-d1553d24daa4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":1,"status":"PASSED"},{"id":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2126-0175-1000-1623-59245a074043","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2126-0175-1000-ab2f-2a158d1f52f4","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2126-0175-1000-f6e7-983a87001551","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2126-0175-1000-3656-55a8e28dc227","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2126-0175-1000-5e25-31b056e8a268","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2126-0175-1000-9e1f-d167d913c585","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2126-0175-1000-5ab9-c05fb876193c","parent":{"ref":"EID6eec203d-0175-1000-3cdb-7fc2ab2dcb6d"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID38455abd-1162-4982-a16d-a161f1cb2669"},{"ref":"EID5e3aec48-878d-42c3-b391-dd89b2b2c2d6"},{"ref":"EID123ce0f4-edca-4c7b-94b3-c13b72c03ed0"}]},"parent":{"ref":"EID6eec1fb5-0175-1000-548d-d1553d24daa4"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:16:09Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:16:09Z","duration":370,"status":"PASSED"},{"id":"EID6eec2127-0175-1000-9d2e-442236873a62","testStepResults":{"TestStepResult":[{"id":"EID6eec2127-0175-1000-2cad-41729b850776","parent":{"ref":"EID6eec2127-0175-1000-9d2e-442236873a62"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2127-0175-1000-39f5-a06c19325efa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec222a-0175-1000-292d-84e41beed6eb","parent":{"ref":"EID6eec2127-0175-1000-39f5-a06c19325efa"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec222a-0175-1000-1cc1-72c483e76fc9","parent":{"ref":"EID6eec2127-0175-1000-39f5-a06c19325efa"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec222a-0175-1000-dfb1-a23fc93a9d10","parent":{"ref":"EID6eec2127-0175-1000-39f5-a06c19325efa"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec222a-0175-1000-c74f-6dfa09204619","parent":{"ref":"EID6eec2127-0175-1000-39f5-a06c19325efa"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd976f999-6469-487e-9b95-fd8690f9264b"},{"ref":"EID46a8a1d9-412e-4796-ace5-554e54197301"},{"ref":"EIDdcfd06cd-0493-4627-870c-eb1954042f93"}]},"parent":{"ref":"EID6eec2127-0175-1000-9d2e-442236873a62"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:16:10Z","duration":142,"status":"PASSED"},{"id":"EID6eec222a-0175-1000-e759-75ac9a46edad","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eec223c-0175-1000-f215-5453466b851b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2332-0175-1000-ac23-6f0c038d2558","parent":{"ref":"EID6eec223c-0175-1000-f215-5453466b851b"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2332-0175-1000-ada9-f81026602009","parent":{"ref":"EID6eec223c-0175-1000-f215-5453466b851b"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2332-0175-1000-7bc5-d741577aeaa0","parent":{"ref":"EID6eec223c-0175-1000-f215-5453466b851b"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID77b50e34-803c-4937-8416-2626c82b6830"},{"ref":"EIDf47035b9-52eb-4001-a829-7598a5f04b2a"},{"ref":"EID3710ed5c-fd0b-4639-a18d-3cf0acb41602"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:10Z","duration":146,"status":"PASSED"},{"id":"EID6eec2334-0175-1000-0bb2-46e572efbed9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec23fd-0175-1000-f250-ce619192961b","parent":{"ref":"EID6eec2334-0175-1000-0bb2-46e572efbed9"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec23fd-0175-1000-5f39-974c5d2c56a4","parent":{"ref":"EID6eec2334-0175-1000-0bb2-46e572efbed9"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec23fd-0175-1000-e02d-c07fc5c5c308","parent":{"ref":"EID6eec2334-0175-1000-0bb2-46e572efbed9"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb460d6b8-478c-49a0-be1d-741fceda393f"},{"ref":"EIDbf93968d-42b2-45dc-a7ac-529e6a71d211"},{"ref":"EID129887ea-061b-4412-8c11-798f7122ab96"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:10Z","duration":147,"status":"PASSED"},{"id":"EID6eec23ff-0175-1000-f6b6-3ff5e38ba349","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec245a-0175-1000-3a00-95b050468854","parent":{"ref":"EID6eec23ff-0175-1000-f6b6-3ff5e38ba349"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec245a-0175-1000-c905-6d9390268d38","parent":{"ref":"EID6eec23ff-0175-1000-f6b6-3ff5e38ba349"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec245a-0175-1000-cbcf-d82c2a58c181","parent":{"ref":"EID6eec23ff-0175-1000-f6b6-3ff5e38ba349"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID33d8531c-4096-4478-bfaf-960fef1114e1"},{"ref":"EID3d398126-b52d-46e5-8a34-31dddc6fadff"},{"ref":"EIDcdd6524e-0e95-4553-8983-09e5f303949a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:10Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6eec2127-0175-1000-9d2e-442236873a62"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:16:10Z","duration":561,"status":"PASSED"},{"id":"EID6eec245b-0175-1000-3d5b-d9cbf160cbdc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec24b2-0175-1000-4a59-692d03b1a4d1","parent":{"ref":"EID6eec245b-0175-1000-3d5b-d9cbf160cbdc"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec24b2-0175-1000-9333-c7cec52c58bb","parent":{"ref":"EID6eec245b-0175-1000-3d5b-d9cbf160cbdc"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec24b2-0175-1000-db83-0e241a9ddc05","parent":{"ref":"EID6eec245b-0175-1000-3d5b-d9cbf160cbdc"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec24b2-0175-1000-ba3b-3293cf4b4c6e","parent":{"ref":"EID6eec245b-0175-1000-3d5b-d9cbf160cbdc"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55423b65-0aad-41ed-a383-04641cd97a56"},{"ref":"EIDb1672e4a-1eaa-4858-8e84-0e6609ed47e4"},{"ref":"EIDe8a7bfa8-8e3a-4ee9-9e7d-212e96b43724"}]},"parent":{"ref":"EID6eec2127-0175-1000-9d2e-442236873a62"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:16:10Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:16:10Z","duration":907,"status":"PASSED"},{"id":"EID6eec24b2-0175-1000-53ff-4b16aac77ec4","testStepResults":{"TestStepResult":{"id":"EID6eec24b2-0175-1000-f193-6b0a2a1f7a4e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec251a-0175-1000-5d57-21b661d7322a","parent":{"ref":"EID6eec24b2-0175-1000-f193-6b0a2a1f7a4e"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec251a-0175-1000-4cf0-78213f9b3a28","parent":{"ref":"EID6eec24b2-0175-1000-f193-6b0a2a1f7a4e"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec251a-0175-1000-6234-511b51e083ea","parent":{"ref":"EID6eec24b2-0175-1000-f193-6b0a2a1f7a4e"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec251a-0175-1000-8372-4caf68583253","parent":{"ref":"EID6eec24b2-0175-1000-f193-6b0a2a1f7a4e"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f061e47-2e8e-46ba-8c87-010c339bb195"},{"ref":"EID65736a28-48b9-434b-a02a-21ad0de281ac"},{"ref":"EIDfd9262b9-380c-4689-88f1-8885f51cf7b4"}]},"parent":{"ref":"EID6eec24b2-0175-1000-53ff-4b16aac77ec4"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:16:11Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6eec19d4-0175-1000-4266-451f0b438db5"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:16:11Z","duration":113,"status":"PASSED"}]},"parent":{"ref":"EID7640be29-454f-4399-ba51-2fd76ca8a7f0"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:16:08Z","duration":2895,"status":"PASSED"},{"id":"EID6eec2523-0175-1000-6713-5853ed1f9485","testCaseResults":{"TestCaseResult":[{"id":"EID6eec2523-0175-1000-8640-f796f8882f04","testStepResults":{"TestStepResult":[{"id":"EID6eec2523-0175-1000-47b4-9d1d8caab0b8","parent":{"ref":"EID6eec2523-0175-1000-8640-f796f8882f04"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":255,"status":"PASSED"},{"id":"EID6eec2524-0175-1000-78f9-32268a4b9ae0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2575-0175-1000-8eb2-baf2961f8e35","parent":{"ref":"EID6eec2524-0175-1000-78f9-32268a4b9ae0"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2575-0175-1000-6ee8-f0c1899e6cd2","parent":{"ref":"EID6eec2524-0175-1000-78f9-32268a4b9ae0"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2575-0175-1000-fe80-3e47609b1f96","parent":{"ref":"EID6eec2524-0175-1000-78f9-32268a4b9ae0"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID009423a6-166d-44a3-9a98-826fac532400"},{"ref":"EIDfc33e7d3-7c89-4d61-b99b-46185995fbb7"},{"ref":"EID863bf145-b30b-425d-a286-7fbe39532572"}]},"parent":{"ref":"EID6eec2523-0175-1000-8640-f796f8882f04"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:16:11Z","duration":22,"status":"PASSED"},{"id":"EID6eec2576-0175-1000-8df1-d9bdd7c59f1e","attachments":{"attachment":{"ref":"EID9de2d406-73b8-49e7-8f92-d476228872df"}},"parent":{"ref":"EID6eec2523-0175-1000-8640-f796f8882f04"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:16:11Z","duration":100,"status":"PASSED"},{"id":"EID6eec2587-0175-1000-9e6f-500d3ac6338e","testStepResults":{"TestStepResult":[{"id":"EID6eec2587-0175-1000-d4e1-c68f083483b6","parent":{"ref":"EID6eec2587-0175-1000-9e6f-500d3ac6338e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":254,"status":"PASSED"},{"id":"EID6eec2588-0175-1000-478a-157f09b05361","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec26cb-0175-1000-0d6f-b324108289cc","parent":{"ref":"EID6eec2588-0175-1000-478a-157f09b05361"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec26cb-0175-1000-dc2a-c81f35d59495","parent":{"ref":"EID6eec2588-0175-1000-478a-157f09b05361"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec26cb-0175-1000-5c0d-bf90ed7f48a8","parent":{"ref":"EID6eec2588-0175-1000-478a-157f09b05361"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec26cb-0175-1000-66ae-c9f8484351e9","parent":{"ref":"EID6eec2588-0175-1000-478a-157f09b05361"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8c26f72b-6ef9-42d1-bbb9-8c1dd2ef5853"},{"ref":"EID073ac30d-d113-4925-91de-3af86c034ab5"},{"ref":"EID6fa9a29d-be8a-4fbb-ab46-dcce597bda4d"}]},"parent":{"ref":"EID6eec2587-0175-1000-9e6f-500d3ac6338e"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:16:11Z","duration":190,"status":"PASSED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:16:11Z","duration":324,"status":"PASSED"},{"id":"EID6eec26cb-0175-1000-3fa7-27ed71fbe3ba","testStepResults":{"TestStepResult":[{"id":"EID6eec26cb-0175-1000-af90-3a29309aff86","parent":{"ref":"EID6eec26cb-0175-1000-3fa7-27ed71fbe3ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":254,"status":"PASSED"},{"id":"EID6eec26cb-0175-1000-a36b-567d3dbe1bf2","parent":{"ref":"EID6eec26cb-0175-1000-3fa7-27ed71fbe3ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":10,"status":"PASSED"},{"id":"EID6eec26d5-0175-1000-95e5-cda29cf18e74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec27df-0175-1000-4335-74115d82a24f","parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-bf00-f030b97d134f","parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-1232-1aadc5397fb6","parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-76de-71b7aee9a439","parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-795b-0e6c3d00a604","parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-cb9e-43c01649a212","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"FAILED"},{"id":"EID6eec27df-0175-1000-2a7b-20a1550dfe66","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6eec26d5-0175-1000-95e5-cda29cf18e74"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID22091a52-1cf6-44c6-8f00-9b5fbc20f277"},{"ref":"EIDf24840ea-e4ac-488f-9d47-c4e97e1eaf8a"},{"ref":"EIDdeea7d56-ccce-4d75-a9be-ff498f789210"}]},"parent":{"ref":"EID6eec26cb-0175-1000-3fa7-27ed71fbe3ba"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:16:11Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:16:11Z","duration":276,"status":"FAILED"},{"id":"EID6eec27df-0175-1000-be7b-0b319824e0e6","testStepResults":{"TestStepResult":[{"id":"EID6eec27df-0175-1000-5aea-a13ef5fb88e7","parent":{"ref":"EID6eec27df-0175-1000-be7b-0b319824e0e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":254,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-8d02-8a62fc6d63a7","parent":{"ref":"EID6eec27df-0175-1000-be7b-0b319824e0e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec27df-0175-1000-9157-027a6efd614a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2888-0175-1000-91dc-274ffa579f1b","parent":{"ref":"EID6eec27df-0175-1000-9157-027a6efd614a"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2888-0175-1000-c1ee-92acd3b2bd19","parent":{"ref":"EID6eec27df-0175-1000-9157-027a6efd614a"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2888-0175-1000-8d7b-122b347f7817","parent":{"ref":"EID6eec27df-0175-1000-9157-027a6efd614a"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2888-0175-1000-5673-707dbcc036fd","parent":{"ref":"EID6eec27df-0175-1000-9157-027a6efd614a"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2888-0175-1000-90ed-d0158ea270ed","parent":{"ref":"EID6eec27df-0175-1000-9157-027a6efd614a"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2888-0175-1000-7247-1d3f5272fb50","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6eec27df-0175-1000-9157-027a6efd614a"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0a68ca01-9a20-492d-af24-119ec0fb34bb"},{"ref":"EID5393fa52-ecf0-4863-a044-aaff13d79583"},{"ref":"EIDa709755b-17b3-4da5-90c6-14092894f727"}]},"parent":{"ref":"EID6eec27df-0175-1000-be7b-0b319824e0e6"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:16:11Z","duration":73,"status":"FAILED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:16:11Z","duration":169,"status":"FAILED"},{"id":"EID6eec2888-0175-1000-8fd5-2e2cb1caba22","testStepResults":{"TestStepResult":[{"id":"EID6eec2888-0175-1000-67b2-51970491a9f0","parent":{"ref":"EID6eec2888-0175-1000-8fd5-2e2cb1caba22"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:16:12Z","duration":254,"status":"PASSED"},{"id":"EID6eec2888-0175-1000-56a8-e0ca594e1a64","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDce84e542-2dfc-4417-933c-56147b81e64d"},{"ref":"EID63d2b188-005d-4b98-b087-0ed02a8d67de"},{"ref":"EIDa85b61e6-1aaf-4de5-8186-adf707eabb8e"},{"ref":"EID7d27f92f-5a02-4a1a-b5ae-efcfbbb81765"},{"ref":"EID589e783a-6085-4417-bf9a-d42365a79686"},{"ref":"EID77570ea0-e8b7-42f0-b871-209d67ca67e5"},{"ref":"EIDa87a3f19-6f2e-4cce-9dec-71f768403ccc"},{"ref":"EID54f8e919-a89d-4e8e-881c-82a230113c32"},{"ref":"EID2a8ac840-b4c7-49fd-aeb0-507163193750"},{"ref":"EID51d768cd-7b7e-4da6-9cbe-b3307aa17812"},{"ref":"EID86ef1b66-9448-4112-82ee-e29921a13b04"},{"ref":"EID67cb3890-fce0-4979-a859-f659ea30b3ac"},{"ref":"EID26a39516-ca68-491c-bfe0-323b2228296b"},{"ref":"EID04fc9d11-61e2-4eb9-89e3-a91b0fc1c6ba"},{"ref":"EIDfc253cd7-db77-47f1-a73c-c2d5d18a5fe3"}]},"parent":{"ref":"EID6eec2888-0175-1000-8fd5-2e2cb1caba22"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:16:12Z","duration":456,"status":"SKIPPED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:16:12Z","duration":809,"status":"SKIPPED"},{"id":"EID6eec2bba-0175-1000-f1c2-f8609f790156","testStepResults":{"TestStepResult":[{"id":"EID6eec2bba-0175-1000-5810-530351bee1ba","parent":{"ref":"EID6eec2bba-0175-1000-f1c2-f8609f790156"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:16:12Z","duration":254,"status":"PASSED"},{"id":"EID6eec2bba-0175-1000-8754-73d309efa6e6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2c5c-0175-1000-4b7a-6a76ca1c5bfd","parent":{"ref":"EID6eec2bba-0175-1000-8754-73d309efa6e6"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2c5c-0175-1000-8e74-90e2f1fda088","parent":{"ref":"EID6eec2bba-0175-1000-8754-73d309efa6e6"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2c5c-0175-1000-c887-434a4a737686","parent":{"ref":"EID6eec2bba-0175-1000-8754-73d309efa6e6"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2c5c-0175-1000-8d99-cce4eec95376","parent":{"ref":"EID6eec2bba-0175-1000-8754-73d309efa6e6"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID87c30fdc-c6cd-4d13-a8ec-f41c0b1915a1"},{"ref":"EID25616b27-68f0-4204-8347-a73af336237a"},{"ref":"EID77426744-ef7c-40ca-bbae-c5b56799cba2"}]},"parent":{"ref":"EID6eec2bba-0175-1000-f1c2-f8609f790156"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:16:12Z","duration":86,"status":"PASSED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:16:12Z","duration":162,"status":"PASSED"},{"id":"EID6eec2c5c-0175-1000-0283-286cd8f78d28","testStepResults":{"TestStepResult":[{"id":"EID6eec2c5c-0175-1000-c845-d1781b451c57","parent":{"ref":"EID6eec2c5c-0175-1000-0283-286cd8f78d28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":255,"status":"PASSED"},{"id":"EID6eec2c5d-0175-1000-2562-4c224aa69260","parent":{"ref":"EID6eec2c5c-0175-1000-0283-286cd8f78d28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2c5d-0175-1000-38f9-4aa33695d48d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2d3d-0175-1000-fea1-04be9e0b06cb","parent":{"ref":"EID6eec2c5d-0175-1000-38f9-4aa33695d48d"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d3d-0175-1000-310c-7b39cccbd8ca","parent":{"ref":"EID6eec2c5d-0175-1000-38f9-4aa33695d48d"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d3d-0175-1000-f864-91b170e173d7","parent":{"ref":"EID6eec2c5d-0175-1000-38f9-4aa33695d48d"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d3d-0175-1000-5252-3385820d64e9","parent":{"ref":"EID6eec2c5d-0175-1000-38f9-4aa33695d48d"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8653c02-5f59-4e3e-ac1b-3cc6b4e48446"},{"ref":"EID07d468a9-959f-4bc0-bafb-4ba80f1210c0"},{"ref":"EID9c7f36ea-1e92-43e5-8563-044d675bb6cf"}]},"parent":{"ref":"EID6eec2c5c-0175-1000-0283-286cd8f78d28"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:16:13Z","duration":78,"status":"PASSED"},{"id":"EID6eec2d46-0175-1000-a874-acc2fb8e5dbd","attachments":{"attachment":{"ref":"EID5e5a82ab-c781-4a08-8d5a-342782e8aecc"}},"parent":{"ref":"EID6eec2c5c-0175-1000-0283-286cd8f78d28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":1,"status":"PASSED"},{"id":"EID6eec2d5a-0175-1000-3ca1-0e241cea58fb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2d62-0175-1000-7f66-6b9f8aace0ae","parent":{"ref":"EID6eec2d5a-0175-1000-3ca1-0e241cea58fb"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d62-0175-1000-74b9-172d777ebb9f","parent":{"ref":"EID6eec2d5a-0175-1000-3ca1-0e241cea58fb"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d62-0175-1000-72d5-3595aecd6d4c","parent":{"ref":"EID6eec2d5a-0175-1000-3ca1-0e241cea58fb"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84de1665-1c62-4e9d-95e6-b78598f190d8"},{"ref":"EIDa682d8a7-604a-4077-ba54-c8428a3a1f09"}]},"parent":{"ref":"EID6eec2c5c-0175-1000-0283-286cd8f78d28"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eec2523-0175-1000-6713-5853ed1f9485"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:16:13Z","duration":262,"status":"PASSED"}]},"parent":{"ref":"EID7640be29-454f-4399-ba51-2fd76ca8a7f0"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:16:11Z","duration":2111,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID4d9bceed-b015-4ef4-9043-e325adf40ae0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDbaddc72a-45f0-4d85-bf97-f0b5478ce1e2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDd0c0ba9c-b62d-4262-ac34-fed2f77aa39d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDd0c0ba9c-b62d-4262-ac34-fed2f77aa39d"}},{"type":"Message","id":"EID589e783a-6085-4417-bf9a-d42365a79686","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID589e783a-6085-4417-bf9a-d42365a79686"}},{"type":"ServiceEndpoint","id":"EID9f061e47-2e8e-46ba-8c87-010c339bb195","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID8a2bb45f-a8ff-41a6-9322-9a3f27545517","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID8a2bb45f-a8ff-41a6-9322-9a3f27545517"}},{"type":"ServiceEndpoint","id":"EID55423b65-0aad-41ed-a383-04641cd97a56","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID44328df0-2458-4dd0-af93-e2f4aa63a073","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID44328df0-2458-4dd0-af93-e2f4aa63a073"}},{"type":"GetParameter","id":"EIDbf2abd35-a287-47a0-bb90-d26f82615343","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID547d23bb-7196-4911-ae33-b2d81833e92f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EIDdd345b25-1a59-4fe9-9f17-8563f2916cfd","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDdd345b25-1a59-4fe9-9f17-8563f2916cfd"}},{"type":"ServiceResponse","id":"EID1e0df0ff-c8b7-4d7a-b571-0cfc11575134","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID1e0df0ff-c8b7-4d7a-b571-0cfc11575134"}},{"type":"Message","id":"EIDce84e542-2dfc-4417-933c-56147b81e64d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDce84e542-2dfc-4417-933c-56147b81e64d"}},{"type":"Message","id":"EIDe3ca10e3-397e-4a39-9d2a-af85c72ee216","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDe3ca10e3-397e-4a39-9d2a-af85c72ee216"}},{"type":"Message","id":"EID4232153a-a463-4742-acb8-344cc70584d4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID4232153a-a463-4742-acb8-344cc70584d4"}},{"type":"GetParameter","id":"EID6701b7df-4e42-4946-911e-121dde4dd66b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID4f6de133-5c25-4b80-b06d-880eb772509a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDe9290460-56f3-4c06-a3b5-59e6dd91f6a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDe9290460-56f3-4c06-a3b5-59e6dd91f6a2"}},{"type":"Message","id":"EID54f8e919-a89d-4e8e-881c-82a230113c32","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID54f8e919-a89d-4e8e-881c-82a230113c32"}},{"type":"GetParameter","id":"EID54135994-6732-4118-95ff-dc7c9987bcd1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID8484ba10-7a29-4ebd-8598-f3e2ab284b0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID87c30fdc-c6cd-4d13-a8ec-f41c0b1915a1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID22091a52-1cf6-44c6-8f00-9b5fbc20f277","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDd6381037-166c-4fba-8859-39796671bdf3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID6d190dbe-90ab-4782-909c-f2ecdaf688ae","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID6d190dbe-90ab-4782-909c-f2ecdaf688ae"}},{"type":"ServiceResponse","id":"EIDae863c33-884b-4a9c-be3d-7d5376b4017b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDae863c33-884b-4a9c-be3d-7d5376b4017b"}},{"type":"ServiceEndpoint","id":"EID7d271f53-592c-4c01-875d-e6da31a77206","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDb7c6708e-6238-490d-99c2-b9fe0b3b11b1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDb7c6708e-6238-490d-99c2-b9fe0b3b11b1"}},{"type":"ServiceEndpoint","id":"EIDdec00980-49d0-47da-906f-c8cea6d911a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3be2c3b0-95a8-41e3-bc44-d3a41eb5b525","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID1a32cf27-823a-4656-ac07-b394b22fa368","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDe0c596f3-e540-4c5f-aa41-d994bd466794","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDec68e4a9-ff04-4a61-bd38-58ca6abf8380","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EID3710ed5c-fd0b-4639-a18d-3cf0acb41602","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDdcfd06cd-0493-4627-870c-eb1954042f93","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID7deaf53b-7107-4352-9f5a-81006e1986bc","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID7deaf53b-7107-4352-9f5a-81006e1986bc"}},{"type":"ServiceEndpoint","id":"EID9fa6cdac-f770-4a53-b2b8-54623c13b0c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID29055247-43ab-4bec-b7b4-b57cba7815a7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID29055247-43ab-4bec-b7b4-b57cba7815a7"}},{"type":"GetParameter","id":"EID9c7f36ea-1e92-43e5-8563-044d675bb6cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID8a0222b0-5592-49ce-a971-72d92455ad87","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID8a0222b0-5592-49ce-a971-72d92455ad87"}},{"type":"ServiceResponse","id":"EID0b283953-11be-4e9b-8542-e26dabdc7c57","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID0b283953-11be-4e9b-8542-e26dabdc7c57"}},{"type":"ServiceResponse","id":"EID19421bc6-8e62-422d-b5a0-f7fae10aae4a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID19421bc6-8e62-422d-b5a0-f7fae10aae4a"}},{"type":"GetParameter","id":"EID36d0dc72-0972-41b9-b7e8-7567eedf3199","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID8c26f72b-6ef9-42d1-bbb9-8c1dd2ef5853","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID63fb2f9b-1d44-46c8-a257-5efed604fe94","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID7646a5ba-6f71-45de-be0f-a9d67b53834b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2Rvd25sb2Fkcy9jYWRhc3RyYWxwYXJjZWxzLnppcA=="},{"type":"ServiceEndpoint","id":"EID34a8a6a4-a889-4aa7-9c21-4615c02cbdea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID0a68ca01-9a20-492d-af24-119ec0fb34bb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID47d8246d-77f1-4809-b8d1-d43db81175ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID2f4134ae-eafa-47ba-ac97-62e94c667b44","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID2f4134ae-eafa-47ba-ac97-62e94c667b44"}},{"type":"GetParameter","id":"EIDe8a7bfa8-8e3a-4ee9-9e7d-212e96b43724","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID5e3aec48-878d-42c3-b391-dd89b2b2c2d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID5e3aec48-878d-42c3-b391-dd89b2b2c2d6"}},{"type":"GetParameter","id":"EID1869a4eb-08d5-4895-83d7-b593328822c8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID04fc9d11-61e2-4eb9-89e3-a91b0fc1c6ba","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID04fc9d11-61e2-4eb9-89e3-a91b0fc1c6ba"}},{"type":"GetParameter","id":"EIDa709755b-17b3-4da5-90c6-14092894f727","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDdb312a23-5676-4f9f-8055-492754844f8a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID57c9ef27-2979-48c6-b58f-f3fd43926aaa","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID57c9ef27-2979-48c6-b58f-f3fd43926aaa"}},{"type":"GetParameter","id":"EID0d83d34f-3391-419a-9e30-f2625def6b5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EID09307ed0-f2cd-4ef5-8de5-87cdab8e3a63","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb57a589b-964c-4808-ba6b-7d8aa922d76c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID863bf145-b30b-425d-a286-7fbe39532572","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID1a3554ad-f5ed-4fa0-b807-40f7a72deb83","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID1a3554ad-f5ed-4fa0-b807-40f7a72deb83"}},{"type":"ServiceEndpoint","id":"EIDaeaf2f67-0ef5-4e2e-860e-ee496a5f850d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EIDcdd6524e-0e95-4553-8983-09e5f303949a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDbf93968d-42b2-45dc-a7ac-529e6a71d211","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDbf93968d-42b2-45dc-a7ac-529e6a71d211"}},{"type":"ServiceResponse","id":"EIDb1672e4a-1eaa-4858-8e84-0e6609ed47e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDb1672e4a-1eaa-4858-8e84-0e6609ed47e4"}},{"type":"ServiceEndpoint","id":"EID420ba700-43c6-4e91-a0d9-f730c7f9e3c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDa9eed03a-6e0d-4efd-8295-90c277dc8446","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDa9eed03a-6e0d-4efd-8295-90c277dc8446"}},{"type":"Message","id":"EID382769cc-edb1-45cd-b6a3-12b51ef6a2e5","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID382769cc-edb1-45cd-b6a3-12b51ef6a2e5"}},{"type":"ServiceResponse","id":"EIDc9c033a7-6957-418f-bf1c-1034e13f88a6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDc9c033a7-6957-418f-bf1c-1034e13f88a6"}},{"type":"GetParameter","id":"EIDa682d8a7-604a-4077-ba54-c8428a3a1f09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID5393fa52-ecf0-4863-a044-aaff13d79583","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID5393fa52-ecf0-4863-a044-aaff13d79583"}},{"type":"Message","id":"EID3bf586c8-484d-4c0f-99dd-06b1f74a2cb8","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID3bf586c8-484d-4c0f-99dd-06b1f74a2cb8"}},{"type":"ServiceEndpoint","id":"EID44344dbb-8cc6-44ad-a501-c8abc3553f70","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID77570ea0-e8b7-42f0-b871-209d67ca67e5","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID77570ea0-e8b7-42f0-b871-209d67ca67e5"}},{"type":"ServiceResponse","id":"EIDbefe99c7-9226-4b28-9877-0cb49a238306","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDbefe99c7-9226-4b28-9877-0cb49a238306"}},{"type":"Message","id":"EID2d28603c-541d-4d5b-b291-f8a04c962bde","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID2d28603c-541d-4d5b-b291-f8a04c962bde"}},{"type":"GetParameter","id":"EIDfd9262b9-380c-4689-88f1-8885f51cf7b4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID1c5eb94a-a4a0-4464-8742-29dd508b45be","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID1c5eb94a-a4a0-4464-8742-29dd508b45be"}},{"type":"ServiceEndpoint","id":"EIDe728f612-4e53-47e2-a434-fea99107195e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDc21d00c2-a1b3-497d-ac29-f2ebc2012d11","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDc21d00c2-a1b3-497d-ac29-f2ebc2012d11"}},{"type":"GetParameter","id":"EIDb831fbef-e304-40b8-aab2-7cc5207e61fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID83ada865-18ab-4747-8917-c6e4eb3eac03","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID83ada865-18ab-4747-8917-c6e4eb3eac03"}},{"type":"ServiceResponse","id":"EID189a8e99-1a02-4a4b-acbb-c7e1419f3276","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID189a8e99-1a02-4a4b-acbb-c7e1419f3276"}},{"type":"GetParameter","id":"EID77426744-ef7c-40ca-bbae-c5b56799cba2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID8bae48f0-bbe3-4df8-8d08-2840a3ce6e1b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID7f20d94b-f420-4b25-97e8-5a3f138e6267","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID7f20d94b-f420-4b25-97e8-5a3f138e6267"}},{"type":"Message","id":"EID26a39516-ca68-491c-bfe0-323b2228296b","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID26a39516-ca68-491c-bfe0-323b2228296b"}},{"type":"ServiceResponse","id":"EIDf24840ea-e4ac-488f-9d47-c4e97e1eaf8a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDf24840ea-e4ac-488f-9d47-c4e97e1eaf8a"}},{"type":"GetParameter","id":"EID1f0c3ec1-d642-4db0-ac79-589ab3a57d38","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EIDd5cd5598-d616-41f8-b207-8fe7b363a894","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDd5cd5598-d616-41f8-b207-8fe7b363a894"}},{"type":"GetParameter","id":"EID1fd48e67-c5fe-4787-9494-5d7dcb9f755e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID3825c597-0250-4368-8a9b-1d1a39c629ea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb1eeab00-baf5-4606-ab6d-64cc2f70eef0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDfe879b1d-3b8c-47a7-9e8e-ac59bbc80983","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDfe879b1d-3b8c-47a7-9e8e-ac59bbc80983"}},{"type":"ServiceResponse","id":"EID798b34cb-3e59-42db-8449-6ed1d5d94cfa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID798b34cb-3e59-42db-8449-6ed1d5d94cfa"}},{"type":"Message","id":"EID61886424-dc5e-40c8-8169-be532fc9a750","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID61886424-dc5e-40c8-8169-be532fc9a750"}},{"type":"GetParameter","id":"EIDc6f00d20-fcdd-4d07-86d7-f117f8f326f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID258ef4a7-f430-433e-9ca1-c401c5bce1c1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID258ef4a7-f430-433e-9ca1-c401c5bce1c1"}},{"type":"Message","id":"EID537a4868-84d7-497b-a4e6-556a5ea4f71f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID537a4868-84d7-497b-a4e6-556a5ea4f71f"}},{"type":"ServiceResponse","id":"EID7107604a-53f3-453d-88db-72bae1f316ba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID7107604a-53f3-453d-88db-72bae1f316ba"}},{"type":"Message","id":"EIDa87a3f19-6f2e-4cce-9dec-71f768403ccc","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDa87a3f19-6f2e-4cce-9dec-71f768403ccc"}},{"type":"ServiceEndpoint","id":"EID84de1665-1c62-4e9d-95e6-b78598f190d8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDff909781-bef5-45ba-ac14-fdc88792f049","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDff909781-bef5-45ba-ac14-fdc88792f049"}},{"type":"ServiceEndpoint","id":"EIDfb661084-d1ab-4df4-87c6-7a669683ec75","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID07510543-c41a-4552-990d-4cc8b1b02b19","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb91560fa-2d9f-4aa6-923b-3dc0c1e7cb71","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID25171f32-c6a7-4ea0-b812-9aa56094ad6b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EIDf7c9efab-a41b-4a0c-8b29-290f0f71e3de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID39791d3c-5e9a-4a38-933e-1052908553ad","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID39791d3c-5e9a-4a38-933e-1052908553ad"}},{"type":"ServiceResponse","id":"EIDf24d2d9f-090c-4c45-91c6-543738c300e7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDf24d2d9f-090c-4c45-91c6-543738c300e7"}},{"type":"ServiceResponse","id":"EID25616b27-68f0-4204-8347-a73af336237a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID25616b27-68f0-4204-8347-a73af336237a"}},{"type":"LogFile","id":"EID137cf0f1-48f3-404c-8350-a88560112fc1","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID137cf0f1-48f3-404c-8350-a88560112fc1"}},{"type":"GetParameter","id":"EIDbe288fe7-2125-4ded-8ce3-a88df981169f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceEndpoint","id":"EID77b50e34-803c-4937-8416-2626c82b6830","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID6fa9a29d-be8a-4fbb-ab46-dcce597bda4d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID2a8ac840-b4c7-49fd-aeb0-507163193750","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID2a8ac840-b4c7-49fd-aeb0-507163193750"}},{"type":"Message","id":"EIDa85b61e6-1aaf-4de5-8186-adf707eabb8e","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDa85b61e6-1aaf-4de5-8186-adf707eabb8e"}},{"type":"ServiceResponse","id":"EIDff43dba5-bdc3-40cc-a358-1d7752b127a9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDff43dba5-bdc3-40cc-a358-1d7752b127a9"}},{"type":"ServiceEndpoint","id":"EIDd976f999-6469-487e-9b95-fd8690f9264b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EIDe90ed41e-f738-42ff-9fc2-55588b0a0c71","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDe90ed41e-f738-42ff-9fc2-55588b0a0c71"}},{"type":"GetParameter","id":"EIDdeea7d56-ccce-4d75-a9be-ff498f789210","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID7b6b4cbf-36a5-410e-be16-53382bb7b3fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID7b6b4cbf-36a5-410e-be16-53382bb7b3fe"}},{"type":"Message","id":"EIDfc253cd7-db77-47f1-a73c-c2d5d18a5fe3","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDfc253cd7-db77-47f1-a73c-c2d5d18a5fe3"}},{"type":"ServiceResponse","id":"EID9f9e447f-7c18-4be7-9813-081fb0463e9d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID9f9e447f-7c18-4be7-9813-081fb0463e9d"}},{"type":"Message","id":"EID3577b97d-0c11-439b-8b77-365a61a3b9c5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID3577b97d-0c11-439b-8b77-365a61a3b9c5"}},{"type":"ServiceEndpoint","id":"EID37037e52-7fa4-4004-bb97-45e82d540a83","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb460d6b8-478c-49a0-be1d-741fceda393f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID95427499-39a7-493d-b68c-17d290f1eb19","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID95427499-39a7-493d-b68c-17d290f1eb19"}},{"type":"GetParameter","id":"EID14a21820-5983-432f-9773-6e02b30300ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDfc33e7d3-7c89-4d61-b99b-46185995fbb7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDfc33e7d3-7c89-4d61-b99b-46185995fbb7"}},{"type":"ServiceResponse","id":"EIDf6b66697-d9a4-4864-9129-90b80a039fe5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDf6b66697-d9a4-4864-9129-90b80a039fe5"}},{"type":"ServiceEndpoint","id":"EID33d8531c-4096-4478-bfaf-960fef1114e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID318a6a24-a385-4198-a7e6-5fca46647cc6","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID318a6a24-a385-4198-a7e6-5fca46647cc6"}},{"type":"ServiceEndpoint","id":"EID591ec227-1758-4938-8919-3a8eb92ff0a6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2Rvd25sb2Fkcy9jYWRhc3RyYWxwYXJjZWxzLnppcA=="},{"type":"Message","id":"EID5f021af5-21ca-4831-b048-5fcbd1ab1654","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID5f021af5-21ca-4831-b048-5fcbd1ab1654"}},{"type":"Message","id":"EID86ef1b66-9448-4112-82ee-e29921a13b04","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID86ef1b66-9448-4112-82ee-e29921a13b04"}},{"type":"GetParameter","id":"EIDbc571fca-af68-4d6e-ade3-cdd3cdc680bc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDed4d47cf-6254-43e4-8fcd-4171a95e7c98","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID19293e15-49e7-41c2-9e8d-c51e40d0efb5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID19293e15-49e7-41c2-9e8d-c51e40d0efb5"}},{"type":"Message","id":"EIDdc92fa1b-a066-475f-a6c6-06f7033fc5a5","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDdc92fa1b-a066-475f-a6c6-06f7033fc5a5"}},{"type":"ServiceEndpoint","id":"EIDab960a0a-5c48-4811-a667-748c29b4a61a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EIDf47035b9-52eb-4001-a829-7598a5f04b2a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDf47035b9-52eb-4001-a829-7598a5f04b2a"}},{"type":"Message","id":"EID7d27f92f-5a02-4a1a-b5ae-efcfbbb81765","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID7d27f92f-5a02-4a1a-b5ae-efcfbbb81765"}},{"type":"Message","id":"EID3bd06952-4d1d-4285-b2ba-8e1f50ba1283","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID3bd06952-4d1d-4285-b2ba-8e1f50ba1283"}},{"type":"ServiceEndpoint","id":"EID66f1665d-5433-4579-aced-c762c00a3d60","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID606dcae9-f09c-4548-b4d0-51cb1d0c6a40","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID606dcae9-f09c-4548-b4d0-51cb1d0c6a40"}},{"type":"ServiceResponse","id":"EID3d398126-b52d-46e5-8a34-31dddc6fadff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID3d398126-b52d-46e5-8a34-31dddc6fadff"}},{"type":"GetParameter","id":"EIDc479f8a8-c7ba-4769-81c7-015e698bb0d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID546b5083-113a-4596-bed6-d4f66d4c6235","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID546b5083-113a-4596-bed6-d4f66d4c6235"}},{"type":"ServiceEndpoint","id":"EIDc6e46cb1-2f49-40a6-a25d-6003b956be54","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID67cb3890-fce0-4979-a859-f659ea30b3ac","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID67cb3890-fce0-4979-a859-f659ea30b3ac"}},{"type":"GetParameter","id":"EIDf948a4e1-d797-4d1f-8f83-e470349abc6e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID073ac30d-d113-4925-91de-3af86c034ab5","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID073ac30d-d113-4925-91de-3af86c034ab5"}},{"type":"ServiceEndpoint","id":"EID2a2473dd-b51d-4a26-a6dc-52f96e3ca2f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDb0f3b2b1-ce27-4f50-97dd-615f0eb64e57","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID442ab680-7b8c-4f3f-a7bb-0b4873d600a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID442ab680-7b8c-4f3f-a7bb-0b4873d600a7"}},{"type":"ServiceEndpoint","id":"EIDaf3b626f-4696-4e1b-8945-79154fa09bab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EIDc273fcec-4690-4324-a908-6c08207a4210","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDc273fcec-4690-4324-a908-6c08207a4210"}},{"type":"ServiceResponse","id":"EID46edd7d9-72f5-4358-90f2-ae8884673682","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID46edd7d9-72f5-4358-90f2-ae8884673682"}},{"type":"GetParameter","id":"EID790e6ac9-39af-47ed-909b-a3513f6fae85","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDe6fc5116-c7aa-4cd1-ba9f-af380bce2503","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDe6fc5116-c7aa-4cd1-ba9f-af380bce2503"}},{"type":"ServiceEndpoint","id":"EIDd8653c02-5f59-4e3e-ac1b-3cc6b4e48446","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID18be8472-13de-4608-9df6-16c0ee96db3a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID18be8472-13de-4608-9df6-16c0ee96db3a"}},{"type":"ServiceEndpoint","id":"EID38455abd-1162-4982-a16d-a161f1cb2669","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EID123ce0f4-edca-4c7b-94b3-c13b72c03ed0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EID129887ea-061b-4412-8c11-798f7122ab96","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID77928e60-b26c-4a62-8d94-036b0ed56720","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID18c814d6-725a-4dcb-9317-5425572803fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EIDee2032a7-49ec-433e-b680-2cf3f53805a1","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDee2032a7-49ec-433e-b680-2cf3f53805a1"}},{"type":"ServiceEndpoint","id":"EIDfad05102-d28f-40c9-a5c0-112556ac0909","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDa0a1bb70-1b40-4bf3-9e6a-3cce1d557fef","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDa0a1bb70-1b40-4bf3-9e6a-3cce1d557fef"}},{"type":"ServiceEndpoint","id":"EIDf73535ea-b041-46b7-9614-077fc9e53395","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID6760cb4a-ba99-49e8-b8e0-92b5acf7ba7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID2f43ed0d-6ad8-4fcd-901d-627e2af30f2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID2f43ed0d-6ad8-4fcd-901d-627e2af30f2f"}},{"type":"ServiceEndpoint","id":"EID47803c64-ee4a-4fa1-92d4-1dffc1e45657","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EIDed615172-5563-40f7-a40f-1fca0555a6d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDed615172-5563-40f7-a40f-1fca0555a6d4"}},{"type":"Message","id":"EID9de2d406-73b8-49e7-8f92-d476228872df","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID9de2d406-73b8-49e7-8f92-d476228872df"}},{"type":"GetParameter","id":"EIDd3c5195c-c26a-40b6-b37e-8d0fa12afcd9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID465bf049-ad9c-4dd3-a3e8-244693301ae5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID5e5a82ab-c781-4a08-8d5a-342782e8aecc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID5e5a82ab-c781-4a08-8d5a-342782e8aecc"}},{"type":"Message","id":"EID98378b91-34c6-4c2b-8e93-c3ece76424f0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID98378b91-34c6-4c2b-8e93-c3ece76424f0"}},{"type":"ServiceEndpoint","id":"EID71a410d0-6fb8-4dca-83b6-b9e342835319","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID65736a28-48b9-434b-a02a-21ad0de281ac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID65736a28-48b9-434b-a02a-21ad0de281ac"}},{"type":"GetParameter","id":"EIDd9119c46-e446-4320-85ed-594f2f710910","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID46a8a1d9-412e-4796-ace5-554e54197301","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID46a8a1d9-412e-4796-ace5-554e54197301"}},{"type":"ServiceResponse","id":"EIDfdd1871f-85b8-4fb0-ab2f-609f6e1e64b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDfdd1871f-85b8-4fb0-ab2f-609f6e1e64b2"}},{"type":"Message","id":"EID941fb23a-451b-44d3-b30d-fe99f1e6a42f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID941fb23a-451b-44d3-b30d-fe99f1e6a42f"}},{"type":"Message","id":"EID51d768cd-7b7e-4da6-9cbe-b3307aa17812","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID51d768cd-7b7e-4da6-9cbe-b3307aa17812"}},{"type":"ServiceEndpoint","id":"EID7ddc1c13-f794-42d6-8e78-734c1fb9399b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID009423a6-166d-44a3-9a98-826fac532400","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID2e857136-6bb9-4a8f-8327-a5e790fe3b21","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID2e857136-6bb9-4a8f-8327-a5e790fe3b21"}},{"type":"Message","id":"EIDdcf626ee-2953-4487-ba11-1e4f0549b4a9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDdcf626ee-2953-4487-ba11-1e4f0549b4a9"}},{"type":"GetParameter","id":"EID811abe7a-f582-4bee-b2c8-de451bf183b4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID4c827518-3d23-4ae8-b148-39160d663e3d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID4c827518-3d23-4ae8-b148-39160d663e3d"}},{"type":"GetParameter","id":"EID2bc7c7f4-4123-4128-b4eb-86ba0eb2ce08","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDee325513-a5cb-42df-9533-30529098d4fc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDee325513-a5cb-42df-9533-30529098d4fc"}},{"type":"ServiceResponse","id":"EIDd8ab392e-cb48-4c8b-ac90-4dc9dfe06883","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EIDd8ab392e-cb48-4c8b-ac90-4dc9dfe06883"}},{"type":"ServiceEndpoint","id":"EID199d897c-0422-4cef-a1f8-c4b1b07c4e61","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID4c51d7a1-1799-492e-ad1a-e888d14636dd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID4c51d7a1-1799-492e-ad1a-e888d14636dd"}},{"type":"Message","id":"EID63d2b188-005d-4b98-b087-0ed02a8d67de","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID63d2b188-005d-4b98-b087-0ed02a8d67de"}},{"type":"ServiceEndpoint","id":"EIDa969f387-4c79-4f82-8467-808cf3507245","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID07d468a9-959f-4bc0-bafb-4ba80f1210c0","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID07d468a9-959f-4bc0-bafb-4ba80f1210c0"}},{"type":"ServiceEndpoint","id":"EID4b8a9c02-f3a5-4fe8-bf27-67f6c025f7f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDc475a3b6-052d-45c5-b7ab-474e42bd22e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID329d8ac8-4687-4acf-8500-d88a9ca4d380","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID329d8ac8-4687-4acf-8500-d88a9ca4d380"}},{"type":"ServiceEndpoint","id":"EID299b382b-f52a-447d-a573-21d17768d6f5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID4ea0657e-7ef0-4a9c-ae09-29a3f7eaf6be","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID4ea0657e-7ef0-4a9c-ae09-29a3f7eaf6be"}},{"type":"Message","id":"EID966d820f-0ede-42d3-8113-bddcf4ba0cbb","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7640be29-454f-4399-ba51-2fd76ca8a7f0/Attachments/EID966d820f-0ede-42d3-8113-bddcf4ba0cbb"}},{"type":"ServiceEndpoint","id":"EIDe5b60878-a297-4f94-84e7-d9cece2953f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:16:02Z","duration":10658,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.007
11:16:22.904 [print] EIDa739edde-614a-425e-b278-48801e78b28a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:22.904 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:16:22.904 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:22.904 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:16:22.905 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a739edde-614a-425e-b278-48801e78b28a.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:16:22.905 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a739edde-614a-425e-b278-48801e78b28a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:22.905 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa739edde-614a-425e-b278-48801e78b28a/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.012
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.003
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.001
11:16:22.923 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:16:22.923 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.558
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:58.902 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.557
11:12:58.903 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS"}}}

11:13:02.460 response time in milliseconds: 3451.71
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:02 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883582281","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:02.460 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.454
* print "testing url:" + metadata.url 0.000
11:16:53.791 [print] testing url:https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.454
11:16:53.791 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:54.244 response time in milliseconds: 452.30
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:53 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.418
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.418
11:16:54.252 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:54.668 response time in milliseconds: 415.28
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:54 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:54.670 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.402
* print "testing url:" + metadata.url 0.000
11:15:23.797 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.402
11:15:23.798 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:24.200 response time in milliseconds: 401.87
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:24 GMT
1 < ETag: "1a4aa-5af58ad530e96-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.394
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.394
11:15:24.203 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:24.597 response time in milliseconds: 393.77
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:24 GMT
1 < ETag: "1a4aa-5af58a653b16e-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:24.597 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.281
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:13.863 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.280
11:12:13.870 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 301
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities"}}}

11:12:17.143 response time in milliseconds: 3168.31
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:16 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883536962","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:12:17.144 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.705
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:51.504 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.705
11:16:51.504 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities"}}}

11:16:53.209 response time in milliseconds: 1597.15
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:53 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883813040","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:53.209 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.805
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:53.215 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.804
11:16:53.216 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 276
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities"}}}

11:16:55.020 response time in milliseconds: 1698.29
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:54 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883814856","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:55.020 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.395
* print "testing url:" + metadata.url 0.000
11:14:31.389 [print] testing url:https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.395
11:14:31.390 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:31.785 response time in milliseconds: 394.39
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:31 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.409
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.409
11:14:31.789 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:32.198 response time in milliseconds: 408.57
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:32 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:32.198 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.409
* print "testing url:" + metadata.url 0.000
11:04:54.975 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.409
11:04:54.976 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:55.384 response time in milliseconds: 407.77
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:55 GMT
1 < ETag: "18264-5af58ad52204f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.423
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.421
11:04:55.394 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:55.815 response time in milliseconds: 418.11
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:55 GMT
1 < ETag: "18264-5af58ad52204f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:04:55.817 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.581
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
11:05:24.807 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.579
11:05:24.811 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 283
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs"}}}

11:05:26.386 response time in milliseconds: 1469.76
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:05:26 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883126212","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:05:26.388 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
5.552
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:09.411 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.552
11:13:09.412 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities"}}}

11:13:14.963 response time in milliseconds: 5444.14
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:14 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883594789","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:14.964 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.788
* print "testing url:" + metadata.url 0.000
11:09:17.500 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.788
11:09:17.500 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:18.288 response time in milliseconds: 787.25
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4327
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:09:18 GMT
1 < Etag: "2b808852de163596115b571d04ab8e33-1"
1 < Last-Modified: Tue, 26 Nov 2019 15:47:04 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642236A9ABDFF34
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.518
Given url metadata.url 0.000
When method HEAD 0.517
11:09:18.292 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:18.809 response time in milliseconds: 516.99
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4327
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:09:18 GMT
1 < Etag: "2b808852de163596115b571d04ab8e33-1"
1 < Last-Modified: Tue, 26 Nov 2019 15:47:04 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642236AC48EC9F8
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
4.285
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:24.554 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.285
11:09:24.555 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities"}}}

11:09:28.839 response time in milliseconds: 4179.33
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:28 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883368672","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:28.840 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.407
* print "testing url:" + metadata.url 0.000
11:10:03.654 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.407
11:10:03.654 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:04.058 response time in milliseconds: 403.16
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:10:03 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.404
Given url metadata.url 0.000
When method HEAD 0.403
11:10:04.068 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:04.467 response time in milliseconds: 399.18
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:10:04 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
55.811
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:17.337 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.158
11:09:17.338 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}

11:09:27.493 response time in milliseconds: 9394.08
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:26 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:09:23 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/2b27741c-b36b-41ef-8773-554f0e1c2b23.json","testRuns":{"TestRun":{"id":"EID2b27741c-b36b-41ef-8773-554f0e1c2b23","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:09:22.988Z","testTasks":{"TestTask":{"id":"EID54f81559-935d-4cd0-9715-a2b48f022973","parent":{"ref":"EID2b27741c-b36b-41ef-8773-554f0e1c2b23"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7e340ffb-4b78-4a34-ad34-15c41fcb30f9"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7e340ffb-4b78-4a34-ad34-15c41fcb30f9","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:09:17.778Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:09:19.192Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:09:27.496 [print] EID2b27741c-b36b-41ef-8773-554f0e1c2b23
* print response.EtfItemCollection.testRuns.TestRun.status 0.002
11:09:27.498 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
11:09:27.500 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.001
11:09:27.502 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2b27741c-b36b-41ef-8773-554f0e1c2b23.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:09:27.503 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:09:27.503 [print] statuspath TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23
* print 'progresspath ', progresspath 0.000
11:09:27.503 [print] progresspath  TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
Given path progresspath 0.000
When method GET 0.517
11:09:27.504 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:28.021 response time in milliseconds: 516.28
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:09:27 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:09:28.021 [print] {
  "val": "30",
  "max": "31",
  "log": [
    "28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)",
    "28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:09:23 - Preparing 1 Test Task:",
    "28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)",
    "28.10.2020 11:09:23 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:09:23 -  with parameters: ",
    "28.10.2020 11:09:23 - etf.testcases = *",
    "28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:09:23 - Setting state to CREATED",
    "28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z",
    "28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:09:25 - Project Properties: ",
    "28.10.2020 11:09:25 - etf.testcases - * ",
    "28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ",
    "28.10.2020 11:09:25 - username -  ",
    "28.10.2020 11:09:25 - authUser -  ",
    "28.10.2020 11:09:25 - authMethod - basic ",
    "28.10.2020 11:09:25 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 40.684
11:09:28.022 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:28.546 response time in milliseconds: 523.64
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:09:28 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized"]}

11:09:28.552 retry condition not satisfied: response.val == response.max
11:09:28.552 sleeping before retry #1
11:09:33.553 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:34.070 response time in milliseconds: 516.39
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:09:34 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized","28.10.2020 11:09:33 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:09:34.071 retry condition not satisfied: response.val == response.max
11:09:34.071 sleeping before retry #2
11:09:39.072 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:39.593 response time in milliseconds: 520.64
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:09:39 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized","28.10.2020 11:09:33 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:09:39.599 retry condition not satisfied: response.val == response.max
11:09:39.600 sleeping before retry #3
11:09:44.601 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:45.115 response time in milliseconds: 512.89
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:09:45 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized","28.10.2020 11:09:33 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:09:45.115 retry condition not satisfied: response.val == response.max
11:09:45.115 sleeping before retry #4
11:09:50.116 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:50.650 response time in milliseconds: 525.74
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:09:50 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized","28.10.2020 11:09:33 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:09:50.651 retry condition not satisfied: response.val == response.max
11:09:50.651 sleeping before retry #5
11:09:55.652 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:56.176 response time in milliseconds: 524.18
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:09:56 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized","28.10.2020 11:09:33 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:09:56.177 retry condition not satisfied: response.val == response.max
11:09:56.177 sleeping before retry #6
11:10:01.178 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:01.697 response time in milliseconds: 518.40
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:10:01 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:09:23 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:22 UTC 2020)","28.10.2020 11:09:23 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:23 - Preparing 1 Test Task:","28.10.2020 11:09:23 -  TestTask 1 (54f81559-935d-4cd0-9715-a2b48f022973)","28.10.2020 11:09:23 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:23 -  with parameters: ","28.10.2020 11:09:23 - etf.testcases = *","28.10.2020 11:09:23 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:23 - Setting state to CREATED","28.10.2020 11:09:23 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:23 - Starting TestRun.2b27741c-b36b-41ef-8773-554f0e1c2b23 at 2020-10-28T11:09:25Z","28.10.2020 11:09:25 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:25 - Project Properties: ","28.10.2020 11:09:25 - etf.testcases - * ","28.10.2020 11:09:25 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:09:25 - username -  ","28.10.2020 11:09:25 - authUser -  ","28.10.2020 11:09:25 - authMethod - basic ","28.10.2020 11:09:25 - TestRunTask initialized","28.10.2020 11:09:33 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:10:01.697 retry condition not satisfied: response.val == response.max
11:10:01.697 sleeping before retry #7
11:10:06.698 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:08.705 response time in milliseconds: 2006.44
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:10:08 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:10:08.706 retry condition satisfied
* print response 0.000
11:10:08.706 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.424
11:10:08.707 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:13.118 response time in milliseconds: 3336.87
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Cache-Control: public, max-age=120
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:10:11 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Last-Modified: Wed, 28 Oct 2020 11:10:09 GMT
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/2b27741c-b36b-41ef-8773-554f0e1c2b23.json","testRuns":{"TestRun":{"id":"EID2b27741c-b36b-41ef-8773-554f0e1c2b23","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:09:22.988Z","testTasks":{"TestTask":{"id":"EID54f81559-935d-4cd0-9715-a2b48f022973","parent":{"ref":"EID2b27741c-b36b-41ef-8773-554f0e1c2b23"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7e340ffb-4b78-4a34-ad34-15c41fcb30f9"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID700f2d4f-ace8-4722-8abf-d09e04eb2684"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7e340ffb-4b78-4a34-ad34-15c41fcb30f9","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:09:17.778Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:09:19.192Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID700f2d4f-ace8-4722-8abf-d09e04eb2684","testObject":{"ref":"EID7e340ffb-4b78-4a34-ad34-15c41fcb30f9"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee5f3d2-0175-1000-5dc5-0ab5e38f3ab3","testCaseResults":{"TestCaseResult":[{"id":"EID6ee5f3d2-0175-1000-f6d9-be3be1fc63ad","testStepResults":{"TestStepResult":[{"id":"EID6ee5f3d3-0175-1000-f04a-9bba6a5218f7","parent":{"ref":"EID6ee5f3d2-0175-1000-f6d9-be3be1fc63ad"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:09:25Z","duration":25,"status":"PASSED"},{"id":"EID6ee5f3ed-0175-1000-f241-a5e549de1324","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5f48c-0175-1000-601c-13ce8b4afe46","parent":{"ref":"EID6ee5f3ed-0175-1000-f241-a5e549de1324"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f48c-0175-1000-1d74-8f30ebf9d872","parent":{"ref":"EID6ee5f3ed-0175-1000-f241-a5e549de1324"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f48c-0175-1000-88e1-f42db646bfee","parent":{"ref":"EID6ee5f3ed-0175-1000-f241-a5e549de1324"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f48c-0175-1000-e62d-3f155a9ba4ad","parent":{"ref":"EID6ee5f3ed-0175-1000-f241-a5e549de1324"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda04b0f7-ed4b-42d0-bdf8-efb7fb5673fa"},{"ref":"EID7e64000c-e646-4dfa-9fbd-02cacdd86eab"},{"ref":"EIDd9d9065b-92c9-48e4-b9be-b7f6a126cc51"}]},"parent":{"ref":"EID6ee5f3d2-0175-1000-f6d9-be3be1fc63ad"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:09:25Z","duration":51,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f3d2-0175-1000-5dc5-0ab5e38f3ab3"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:09:25Z","duration":213,"status":"PASSED"},{"id":"EID6ee5f4b0-0175-1000-6296-092e70b58fc0","testStepResults":{"TestStepResult":{"id":"EID6ee5f4b0-0175-1000-8c05-639a3565a4e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5f52c-0175-1000-bc12-97c4d535f54c","parent":{"ref":"EID6ee5f4b0-0175-1000-8c05-639a3565a4e2"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f52d-0175-1000-1e76-6703ea8c806e","parent":{"ref":"EID6ee5f4b0-0175-1000-8c05-639a3565a4e2"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f52d-0175-1000-ef28-5f4d9f39a64e","parent":{"ref":"EID6ee5f4b0-0175-1000-8c05-639a3565a4e2"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID00974278-3427-4615-9aac-3f7f0f7edafa"},{"ref":"EID79e7f231-eb94-44c6-9d12-73fec3dda4c1"},{"ref":"EIDd8eac0ad-599b-4871-8e20-e6fa48b49227"}]},"parent":{"ref":"EID6ee5f4b0-0175-1000-6296-092e70b58fc0"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:09:25Z","duration":51,"status":"PASSED"}},"parent":{"ref":"EID6ee5f3d2-0175-1000-5dc5-0ab5e38f3ab3"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:09:25Z","duration":125,"status":"PASSED"}]},"parent":{"ref":"EID700f2d4f-ace8-4722-8abf-d09e04eb2684"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:09:25Z","duration":347,"status":"PASSED"},{"id":"EID6ee5f52d-0175-1000-af71-d134a968a88c","testCaseResults":{"TestCaseResult":[{"id":"EID6ee5f52d-0175-1000-6a6c-738b3d3af267","testStepResults":{"TestStepResult":[{"id":"EID6ee5f52d-0175-1000-74d3-db52e4148d2f","parent":{"ref":"EID6ee5f52d-0175-1000-6a6c-738b3d3af267"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:09:25Z","duration":60,"status":"PASSED"},{"id":"EID6ee5f536-0175-1000-907b-32ee0830b60f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5f639-0175-1000-21f9-19a840f8cb12","parent":{"ref":"EID6ee5f536-0175-1000-907b-32ee0830b60f"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f639-0175-1000-547d-dd13275a08c9","parent":{"ref":"EID6ee5f536-0175-1000-907b-32ee0830b60f"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f639-0175-1000-93ea-5fc9e1a4a70c","parent":{"ref":"EID6ee5f536-0175-1000-907b-32ee0830b60f"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f639-0175-1000-6c94-8d91635a1a99","parent":{"ref":"EID6ee5f536-0175-1000-907b-32ee0830b60f"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f639-0175-1000-7c20-42faab626aa8","parent":{"ref":"EID6ee5f536-0175-1000-907b-32ee0830b60f"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:09:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe243fb12-3eb8-4c3d-b7c1-6010a2fc6ed5"},{"ref":"EID3bdfbf3f-15e7-4d4c-a7d1-4973815da9d3"},{"ref":"EID4d725f4d-6990-4fd1-9749-aa4fb0036f14"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-6a6c-738b3d3af267"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:09:25Z","duration":160,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:09:25Z","duration":268,"status":"PASSED"},{"id":"EID6ee5f639-0175-1000-349e-9ef27e2ff4b3","testStepResults":{"TestStepResult":[{"id":"EID6ee5f642-0175-1000-2a11-ded1dcdc75f4","attachments":{"attachment":[{"ref":"EID29786666-7080-43cd-9aba-db1782b9f851"},{"ref":"EIDe65f7200-4b2f-41e3-a96c-3f0543770b4a"}]},"parent":{"ref":"EID6ee5f639-0175-1000-349e-9ef27e2ff4b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:09:25Z","duration":108,"status":"PASSED"},{"id":"EID6ee5f6e1-0175-1000-faf7-b9fec61d1174","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5f7b4-0175-1000-f0d8-c019dc211a99","parent":{"ref":"EID6ee5f6e1-0175-1000-faf7-b9fec61d1174"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f7b4-0175-1000-7d60-153ff348ff95","parent":{"ref":"EID6ee5f6e1-0175-1000-faf7-b9fec61d1174"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f7b4-0175-1000-166e-19f946a0942c","parent":{"ref":"EID6ee5f6e1-0175-1000-faf7-b9fec61d1174"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5f7b4-0175-1000-aaaa-a8c1d21f849d","parent":{"ref":"EID6ee5f6e1-0175-1000-faf7-b9fec61d1174"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc9554709-884e-40ee-9824-c44d599d9186"},{"ref":"EIDbe6d03ca-485b-48db-9205-1c85c0b19e0f"},{"ref":"EIDc5e976ed-b0ec-4d59-b619-939c300e486c"}]},"parent":{"ref":"EID6ee5f639-0175-1000-349e-9ef27e2ff4b3"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:09:26Z","duration":43,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:09:25Z","duration":379,"status":"PASSED"},{"id":"EID6ee5f7b4-0175-1000-4ba3-a953faa1b1c2","testStepResults":{"TestStepResult":[{"id":"EID6ee5f7be-0175-1000-2634-5a1a5a49f297","attachments":{"attachment":[{"ref":"EIDd946cc95-6433-4445-a44c-7ea17dc050cc"},{"ref":"EID6b737448-31d8-4425-8ca8-a7d15ba57465"}]},"parent":{"ref":"EID6ee5f7b4-0175-1000-4ba3-a953faa1b1c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:09:26Z","duration":178,"status":"PASSED"},{"id":"EID6ee5f896-0175-1000-913c-ea71f45f04c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5fa3b-0175-1000-a8d3-64aa22fba505","parent":{"ref":"EID6ee5f896-0175-1000-913c-ea71f45f04c9"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fa3b-0175-1000-3db3-84df69c7a915","parent":{"ref":"EID6ee5f896-0175-1000-913c-ea71f45f04c9"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fa3b-0175-1000-d01e-82226454d914","parent":{"ref":"EID6ee5f896-0175-1000-913c-ea71f45f04c9"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fa3b-0175-1000-ca7c-1191dbfbfa39","parent":{"ref":"EID6ee5f896-0175-1000-913c-ea71f45f04c9"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fa3b-0175-1000-9cdf-9749121e5510","parent":{"ref":"EID6ee5f896-0175-1000-913c-ea71f45f04c9"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:09:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2cf81120-5195-485e-9498-63a703cdcd79"},{"ref":"EID2948cd8e-6344-4459-8515-b3222c8a07fd"},{"ref":"EIDd5c2f3df-00da-41af-8b42-28c126a78b6c"}]},"parent":{"ref":"EID6ee5f7b4-0175-1000-4ba3-a953faa1b1c2"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:09:26Z","duration":328,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:09:26Z","duration":654,"status":"PASSED"},{"id":"EID6ee5fa43-0175-1000-c54e-9f50be4fca18","testStepResults":{"TestStepResult":[{"id":"EID6ee5fa43-0175-1000-347d-e8fcf9539319","attachments":{"attachment":[{"ref":"EIDce667cdf-7809-4e56-9979-c0c27e2c1ff3"},{"ref":"EID1a986391-d060-4bd7-a249-16654f2b07a3"}]},"parent":{"ref":"EID6ee5fa43-0175-1000-c54e-9f50be4fca18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:09:26Z","duration":135,"status":"PASSED"},{"id":"EID6ee5faed-0175-1000-fc48-99538d20ecbb","parent":{"ref":"EID6ee5fa43-0175-1000-c54e-9f50be4fca18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5faed-0175-1000-1b68-1d77ff186317","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5fc53-0175-1000-e0f3-f427846a2d63","parent":{"ref":"EID6ee5faed-0175-1000-1b68-1d77ff186317"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fc53-0175-1000-4046-8dd3b81237eb","parent":{"ref":"EID6ee5faed-0175-1000-1b68-1d77ff186317"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fc53-0175-1000-7899-c4d5b3e800e2","parent":{"ref":"EID6ee5faed-0175-1000-1b68-1d77ff186317"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fc53-0175-1000-c542-abd009ec93e6","parent":{"ref":"EID6ee5faed-0175-1000-1b68-1d77ff186317"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID986ffc5e-7a45-403f-a47d-f5480a3512cd"},{"ref":"EID99c3d680-fe81-4fca-ab68-4c1ba681220c"},{"ref":"EID13455f3d-36e0-47a6-9bed-dc2a35d95663"}]},"parent":{"ref":"EID6ee5fa43-0175-1000-c54e-9f50be4fca18"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:09:27Z","duration":244,"status":"PASSED"},{"id":"EID6ee5fc53-0175-1000-ae04-a643a6258926","attachments":{"attachment":{"ref":"EID3ab6d182-8c0f-4cda-84e0-ae2955a0bed3"}},"parent":{"ref":"EID6ee5fa43-0175-1000-c54e-9f50be4fca18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:09:27Z","duration":1,"status":"PASSED"},{"id":"EID6ee5fc5e-0175-1000-7638-7fd39953487e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5fd23-0175-1000-cc39-90d9b61dbe16","parent":{"ref":"EID6ee5fc5e-0175-1000-7638-7fd39953487e"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fd23-0175-1000-8473-833194247d3e","parent":{"ref":"EID6ee5fc5e-0175-1000-7638-7fd39953487e"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fd23-0175-1000-88f4-08681d85cfa0","parent":{"ref":"EID6ee5fc5e-0175-1000-7638-7fd39953487e"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fd23-0175-1000-32e8-5aae4d47b1fe","parent":{"ref":"EID6ee5fc5e-0175-1000-7638-7fd39953487e"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee5fd23-0175-1000-ab1c-c445a9931512","parent":{"ref":"EID6ee5fc5e-0175-1000-7638-7fd39953487e"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:09:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa7178120-2b8a-4d08-9545-af8e7c7d0076"},{"ref":"EIDfd423fbd-5ff9-43bf-afdf-9a4cfbe61a7c"},{"ref":"EID95bce398-6748-4de2-9663-aba85d13fb12"}]},"parent":{"ref":"EID6ee5fa43-0175-1000-c54e-9f50be4fca18"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:09:27Z","duration":71,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:09:26Z","duration":736,"status":"PASSED"},{"id":"EID6ee5fd23-0175-1000-1cf1-353fecb63054","testStepResults":{"TestStepResult":[{"id":"EID6ee5fd23-0175-1000-c340-35bc5e601da9","attachments":{"attachment":[{"ref":"EIDd8057b5f-9bdc-4a9d-96f6-8a4efb505212"},{"ref":"EID133369d9-6460-4f87-8ccb-580092d7b74c"}]},"parent":{"ref":"EID6ee5fd23-0175-1000-1cf1-353fecb63054"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:09:27Z","duration":214,"status":"PASSED"},{"id":"EID6ee5fe26-0175-1000-35aa-d316ae14a04a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5ff53-0175-1000-fc7c-90a47739b667","parent":{"ref":"EID6ee5fe26-0175-1000-35aa-d316ae14a04a"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee5ff53-0175-1000-536c-78e14204b450","parent":{"ref":"EID6ee5fe26-0175-1000-35aa-d316ae14a04a"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee5ff53-0175-1000-09b5-3a4d8d55f929","parent":{"ref":"EID6ee5fe26-0175-1000-35aa-d316ae14a04a"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee5ff53-0175-1000-61b5-53488d512074","parent":{"ref":"EID6ee5fe26-0175-1000-35aa-d316ae14a04a"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID340f9678-8cf6-461a-846c-de46108617a0"},{"ref":"EID30e78332-881e-4758-a9cc-c20ad075892c"},{"ref":"EIDf7deafe6-0d18-40f7-bfa3-db476526419a"}]},"parent":{"ref":"EID6ee5fd23-0175-1000-1cf1-353fecb63054"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:09:27Z","duration":215,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:09:27Z","duration":560,"status":"PASSED"},{"id":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8","testStepResults":{"TestStepResult":[{"id":"EID6ee5ff5b-0175-1000-408e-0ec1548550d0","attachments":{"attachment":[{"ref":"EIDd9fcc632-9c43-4df2-b654-878b5fe4e3d1"},{"ref":"EIDe9b580b0-fd9e-4599-ab57-949950a696c3"}]},"parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:09:28Z","duration":145,"status":"PASSED"},{"id":"EID6ee60016-0175-1000-a3bc-cb8c2a89df9e","parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:09:28Z","duration":1,"status":"PASSED"},{"id":"EID6ee60017-0175-1000-0305-a78135a59342","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee60109-0175-1000-7221-82945dc7907c","parent":{"ref":"EID6ee60017-0175-1000-0305-a78135a59342"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee60109-0175-1000-035c-b5ce6bd3a862","parent":{"ref":"EID6ee60017-0175-1000-0305-a78135a59342"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee60109-0175-1000-4abc-90cb4fe7249b","parent":{"ref":"EID6ee60017-0175-1000-0305-a78135a59342"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee60109-0175-1000-02e2-ba7f34f6efb0","parent":{"ref":"EID6ee60017-0175-1000-0305-a78135a59342"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:09:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42e4b90f-3bcd-4ee2-ae8b-28d5a909330b"},{"ref":"EID08533b56-9150-4282-b189-b9897686627b"},{"ref":"EIDe4d6a003-f284-48c2-a91f-c637f5696900"}]},"parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:09:28Z","duration":151,"status":"PASSED"},{"id":"EID6ee6010a-0175-1000-8313-a4ec978d5400","attachments":{"attachment":{"ref":"EIDbe6a3aa0-a5c5-44e9-89e1-4a737c8377ff"}},"parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:09:28Z","duration":5,"status":"PASSED"},{"id":"EID6ee6012e-0175-1000-e9bd-2fbbbf3ea30d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee60238-0175-1000-76c4-fbc404172043","parent":{"ref":"EID6ee6012e-0175-1000-e9bd-2fbbbf3ea30d"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee60238-0175-1000-6008-620966c7d56c","parent":{"ref":"EID6ee6012e-0175-1000-e9bd-2fbbbf3ea30d"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee60238-0175-1000-cffa-8aca76225462","parent":{"ref":"EID6ee6012e-0175-1000-e9bd-2fbbbf3ea30d"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID480f8d35-b75c-4d2b-b193-52ba9bcae7c3"},{"ref":"EID6773ca23-75e3-4ad2-8ad9-8a24717411a2"},{"ref":"EID033b9b3b-2dc9-453b-8351-acd06c081e54"}]},"parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:09:28Z","duration":198,"status":"PASSED"},{"id":"EID6ee60238-0175-1000-523e-5581da1828c9","attachments":{"attachment":{"ref":"EIDbb7c51d2-5f5e-4f77-88bd-7f47cd800006"}},"parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee60244-0175-1000-a412-b1116c7dadd2","attachments":{"attachment":{"ref":"EID9bd28478-4052-47e6-af02-66bb4b5b260c"}},"parent":{"ref":"EID6ee5ff53-0175-1000-0753-c2a2fc04b8f8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:09:29Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:09:28Z","duration":764,"status":"PASSED"},{"id":"EID6ee6024f-0175-1000-eed0-3b67c1b96f59","testStepResults":{"TestStepResult":[{"id":"EID6ee6024f-0175-1000-57a8-9266daca02d7","attachments":{"attachment":[{"ref":"EID86d26009-79ca-43e2-991c-82af89bbdb91"},{"ref":"EID2638b651-293e-4558-a269-93e3de5d4803"}]},"parent":{"ref":"EID6ee6024f-0175-1000-eed0-3b67c1b96f59"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:09:29Z","duration":155,"status":"PASSED"},{"id":"EID6ee60317-0175-1000-fea3-3bda8351ac02","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6047a-0175-1000-4324-80b3d9d6fa15","parent":{"ref":"EID6ee60317-0175-1000-fea3-3bda8351ac02"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee6047a-0175-1000-dde9-97e81e56260d","parent":{"ref":"EID6ee60317-0175-1000-fea3-3bda8351ac02"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee6047a-0175-1000-d09f-17a71f5b2765","parent":{"ref":"EID6ee60317-0175-1000-fea3-3bda8351ac02"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee6047a-0175-1000-4add-67c6572f8419","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee60317-0175-1000-fea3-3bda8351ac02"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID89c7afae-08f1-46cb-99c3-70929cd59c59"},{"ref":"EIDf7530bf8-ecf1-4009-8d10-10614f101bc3"},{"ref":"EIDb8d9dbe1-4e7a-4fff-9233-b74d322ea384"}]},"parent":{"ref":"EID6ee6024f-0175-1000-eed0-3b67c1b96f59"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:09:29Z","duration":245,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:09:29Z","duration":564,"status":"PASSED_MANUAL"},{"id":"EID6ee60484-0175-1000-bb67-ee90c450a1ec","testStepResults":{"TestStepResult":{"id":"EID6ee60484-0175-1000-bc72-795d08902252","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee604fe-0175-1000-d32b-048fe43c676a","parent":{"ref":"EID6ee60484-0175-1000-bc72-795d08902252"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee604fe-0175-1000-c069-1306911d17e3","parent":{"ref":"EID6ee60484-0175-1000-bc72-795d08902252"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee604fe-0175-1000-26be-4aefcd3820cf","parent":{"ref":"EID6ee60484-0175-1000-bc72-795d08902252"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee604fe-0175-1000-c683-9e98b09d9fa8","parent":{"ref":"EID6ee60484-0175-1000-bc72-795d08902252"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7f3c15e0-f01e-42fe-bf1c-856db0ef5ee6"},{"ref":"EID9a24d9d5-65e8-46cb-820d-e5a8b980e50d"},{"ref":"EID3aa69c9b-6958-4e51-b5d8-8ef4fb1bcbb1"}]},"parent":{"ref":"EID6ee60484-0175-1000-bb67-ee90c450a1ec"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:09:29Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:09:29Z","duration":201,"status":"PASSED"},{"id":"EID6ee6054e-0175-1000-6752-f1cd65fb1c13","testStepResults":{"TestStepResult":{"id":"EID6ee6054e-0175-1000-ca3d-80a47aebd828","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee605e0-0175-1000-325c-5afbc5988f46","parent":{"ref":"EID6ee6054e-0175-1000-ca3d-80a47aebd828"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee605e0-0175-1000-0d81-9ff73b1d0ec2","parent":{"ref":"EID6ee6054e-0175-1000-ca3d-80a47aebd828"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee605e0-0175-1000-6938-d72ab57678e6","parent":{"ref":"EID6ee6054e-0175-1000-ca3d-80a47aebd828"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee605e0-0175-1000-e1c3-616796070a25","parent":{"ref":"EID6ee6054e-0175-1000-ca3d-80a47aebd828"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:09:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID788c02c6-81e2-4a3c-8686-517821ad123d"},{"ref":"EIDe0827896-6da6-49fe-ae09-b536bddf6236"},{"ref":"EID3fbc7f81-7745-49e5-82ce-868a69d27f26"}]},"parent":{"ref":"EID6ee6054e-0175-1000-6752-f1cd65fb1c13"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:09:29Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:09:29Z","duration":155,"status":"PASSED"},{"id":"EID6ee605e9-0175-1000-dfc6-91458a61b170","testStepResults":{"TestStepResult":[{"id":"EID6ee605e9-0175-1000-a9c5-1bd303ab0805","attachments":{"attachment":[{"ref":"EID7ebd57ac-0b3e-4b61-ae15-24e455a6cbdb"},{"ref":"EIDd3e2fb98-f383-4521-8cd3-3c17425d1421"},{"ref":"EIDd815817e-9620-41df-94bd-cd073166dc57"},{"ref":"EIDcc2f6153-8848-4473-b36c-6d2736cb1220"},{"ref":"EID76af43f6-f44b-4915-9d1e-2dd3a0afc899"},{"ref":"EID5f66f36b-fbdf-46a9-a04b-7591dd8e44b0"},{"ref":"EID1678a2ba-fe55-4329-b642-d5bf525e4460"},{"ref":"EIDd0006387-d93e-4221-8c9c-e02df8512d56"},{"ref":"EID10281d19-4bb6-4c97-a863-1d533b830d62"},{"ref":"EIDbbcd1006-b35d-42b7-b49b-2cf1069420b7"},{"ref":"EIDc32f1612-e921-4b72-9fbd-010cb44db91e"},{"ref":"EID52263b15-9d9a-4b37-9b6d-65c99ffd0614"}]},"parent":{"ref":"EID6ee605e9-0175-1000-dfc6-91458a61b170"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:09:29Z","duration":661,"status":"PASSED"},{"id":"EID6ee60919-0175-1000-28d1-4c1bd2d90239","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee609af-0175-1000-6983-4862da66620a","parent":{"ref":"EID6ee60919-0175-1000-28d1-4c1bd2d90239"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:09:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee609af-0175-1000-b6eb-d6423ff2557d","parent":{"ref":"EID6ee60919-0175-1000-28d1-4c1bd2d90239"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:09:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee609af-0175-1000-836b-f30ee0540e0c","parent":{"ref":"EID6ee60919-0175-1000-28d1-4c1bd2d90239"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:09:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee609af-0175-1000-a412-5836b8da53b8","parent":{"ref":"EID6ee60919-0175-1000-28d1-4c1bd2d90239"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:09:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee609af-0175-1000-8e7e-2f6756496d7d","parent":{"ref":"EID6ee60919-0175-1000-28d1-4c1bd2d90239"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:09:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3daf3e33-0ca5-4749-bc59-082e940e83f7"},{"ref":"EID9b45d8c3-5432-4559-9007-e1805ccf8e64"},{"ref":"EID98ec0570-4cb9-44cc-8e81-4deba16ed6c0"}]},"parent":{"ref":"EID6ee605e9-0175-1000-dfc6-91458a61b170"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:09:30Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:09:29Z","duration":976,"status":"PASSED"},{"id":"EID6ee609b9-0175-1000-58a0-e0c818200234","testStepResults":{"TestStepResult":{"id":"EID6ee609b9-0175-1000-6865-9590178c2026","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee60a8f-0175-1000-bcfb-d3b4db0336e3","parent":{"ref":"EID6ee609b9-0175-1000-6865-9590178c2026"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60a8f-0175-1000-f562-0b8d1105ce16","parent":{"ref":"EID6ee609b9-0175-1000-6865-9590178c2026"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60a8f-0175-1000-46fe-1e955715f56e","parent":{"ref":"EID6ee609b9-0175-1000-6865-9590178c2026"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60a8f-0175-1000-160c-5ebe85961cd6","parent":{"ref":"EID6ee609b9-0175-1000-6865-9590178c2026"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDefd98410-5a1d-4f8f-bdc1-79d7bedab3cc"},{"ref":"EID774adbb1-b7b6-497a-9759-7fe9519e577e"},{"ref":"EID1e136243-7fa9-4e4b-b3c1-a288086425c8"}]},"parent":{"ref":"EID6ee609b9-0175-1000-58a0-e0c818200234"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:09:30Z","duration":54,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:09:30Z","duration":235,"status":"PASSED"},{"id":"EID6ee60aa4-0175-1000-d71b-57f676ee098d","testStepResults":{"TestStepResult":{"id":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee60c0f-0175-1000-2762-2cc7bca57299","parent":{"ref":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60c0f-0175-1000-94de-02096184f452","parent":{"ref":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60c0f-0175-1000-5a6d-bffa5dbd745e","parent":{"ref":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60c0f-0175-1000-dc0d-4aeb57b887df","parent":{"ref":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60c0f-0175-1000-b81a-e064d0e16135","parent":{"ref":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60c0f-0175-1000-c525-075f2d40ab05","parent":{"ref":"EID6ee60aa4-0175-1000-ad0c-71ae527243e1"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDce494568-2afa-4bb5-ac01-abd981ae7626"},{"ref":"EIDf5bc61a9-05ff-411b-8cb5-7fd82b0203e4"},{"ref":"EID2503d490-a829-46e8-b56e-7717c85641f5"}]},"parent":{"ref":"EID6ee60aa4-0175-1000-d71b-57f676ee098d"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:09:31Z","duration":121,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:09:31Z","duration":373,"status":"PASSED"},{"id":"EID6ee60c19-0175-1000-b3c0-38e888437152","testStepResults":{"TestStepResult":{"id":"EID6ee60c19-0175-1000-e31b-99260d97f685","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee60d08-0175-1000-31f6-ded4d41f3b5a","parent":{"ref":"EID6ee60c19-0175-1000-e31b-99260d97f685"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60d09-0175-1000-43a5-57b69f392c0e","parent":{"ref":"EID6ee60c19-0175-1000-e31b-99260d97f685"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60d09-0175-1000-8cf2-e28bdd92a239","parent":{"ref":"EID6ee60c19-0175-1000-e31b-99260d97f685"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60d09-0175-1000-3aae-4b859f630a3b","parent":{"ref":"EID6ee60c19-0175-1000-e31b-99260d97f685"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60d09-0175-1000-d441-c6643bb74c31","parent":{"ref":"EID6ee60c19-0175-1000-e31b-99260d97f685"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee60d09-0175-1000-dd9d-d988bfb0ebbf","parent":{"ref":"EID6ee60c19-0175-1000-e31b-99260d97f685"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:09:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9dc40c4d-ce5c-409c-a64a-145be7f23ba3"},{"ref":"EIDa80636af-c170-4cbf-9c8f-af10f5c8831d"},{"ref":"EID427fcc28-8564-48d9-8a56-ba4b2f81e730"}]},"parent":{"ref":"EID6ee60c19-0175-1000-b3c0-38e888437152"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:09:31Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:09:31Z","duration":240,"status":"PASSED"},{"id":"EID6ee60d09-0175-1000-21be-ffd110f3f735","testStepResults":{"TestStepResult":{"id":"EID6ee60d09-0175-1000-262b-22f68941a5de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee60e5d-0175-1000-e7ec-e6c1b61e3e77","parent":{"ref":"EID6ee60d09-0175-1000-262b-22f68941a5de"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee60e5d-0175-1000-a3b1-1d5206c95a1e","parent":{"ref":"EID6ee60d09-0175-1000-262b-22f68941a5de"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee60e5d-0175-1000-c7e2-b74a617aa53e","parent":{"ref":"EID6ee60d09-0175-1000-262b-22f68941a5de"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee60e5d-0175-1000-735d-a6a863822f3e","parent":{"ref":"EID6ee60d09-0175-1000-262b-22f68941a5de"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff1fc50b-9a79-44ca-a80f-1fcf4444d186"},{"ref":"EIDf3f9f918-2451-48fb-aa4a-090b309825bf"},{"ref":"EIDb1fbd21a-f2b7-4971-8cc8-00cd1e9a8de5"}]},"parent":{"ref":"EID6ee60d09-0175-1000-21be-ffd110f3f735"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:09:31Z","duration":209,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:09:31Z","duration":341,"status":"PASSED"},{"id":"EID6ee60e5e-0175-1000-9ce6-8982aa31fafd","testStepResults":{"TestStepResult":[{"id":"EID6ee60e5e-0175-1000-4b87-1a1503bb2567","attachments":{"attachment":[{"ref":"EIDd90c3042-2a50-4190-95ea-b9cdcc3c724b"},{"ref":"EIDbc89c7fd-3821-48d0-a489-97b2cfbfc050"},{"ref":"EIDf9d04031-87e0-4c1d-bca6-6dbbdfa79607"},{"ref":"EID91509428-b4b8-4e13-9b58-c97916b855a5"}]},"parent":{"ref":"EID6ee60e5e-0175-1000-9ce6-8982aa31fafd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:09:32Z","duration":441,"status":"PASSED"},{"id":"EID6ee610b4-0175-1000-fbd4-63ae52b06ca1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61136-0175-1000-e128-288acc0379a1","parent":{"ref":"EID6ee610b4-0175-1000-fbd4-63ae52b06ca1"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee61136-0175-1000-c2e1-ca9f06d3d72a","parent":{"ref":"EID6ee610b4-0175-1000-fbd4-63ae52b06ca1"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee61136-0175-1000-f839-f9d4f8e44c87","parent":{"ref":"EID6ee610b4-0175-1000-fbd4-63ae52b06ca1"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee61136-0175-1000-855f-74572b142f7d","parent":{"ref":"EID6ee610b4-0175-1000-fbd4-63ae52b06ca1"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc67f592a-4046-4d07-9b56-7816c1c1af80"},{"ref":"EID176be30c-bef7-4b3a-a19e-dd4aff8f0722"},{"ref":"EID88200048-008c-40aa-add2-d43e61e2e5ca"}]},"parent":{"ref":"EID6ee60e5e-0175-1000-9ce6-8982aa31fafd"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:09:32Z","duration":43,"status":"PASSED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:09:32Z","duration":729,"status":"PASSED"},{"id":"EID6ee61137-0175-1000-74a0-d9d7aa01803e","testStepResults":{"TestStepResult":{"id":"EID6ee6113f-0175-1000-8511-00f2012a1377","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee611c0-0175-1000-b1df-f61ae39601a3","parent":{"ref":"EID6ee6113f-0175-1000-8511-00f2012a1377"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee611c0-0175-1000-91cc-ddc32264d845","parent":{"ref":"EID6ee6113f-0175-1000-8511-00f2012a1377"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee611c0-0175-1000-f80c-ef8987cef0c3","parent":{"ref":"EID6ee6113f-0175-1000-8511-00f2012a1377"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee611c0-0175-1000-fe94-b6bd1122a9f2","parent":{"ref":"EID6ee6113f-0175-1000-8511-00f2012a1377"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeea8dd9b-3688-41b6-a01d-5ef966dbe564"},{"ref":"EIDa7104e52-353e-4ad6-830f-9b2348b5f937"},{"ref":"EIDca521b6f-6fc1-4957-aa03-9276ed52ffa9"}]},"parent":{"ref":"EID6ee61137-0175-1000-74a0-d9d7aa01803e"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:09:32Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:09:32Z","duration":137,"status":"PASSED"},{"id":"EID6ee611c1-0175-1000-ccc4-447599cc5c8f","testStepResults":{"TestStepResult":[{"id":"EID6ee611c1-0175-1000-f379-1a13aef29041","parent":{"ref":"EID6ee611c1-0175-1000-ccc4-447599cc5c8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:09:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee611c1-0175-1000-1b6b-d6dfe54585d0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61273-0175-1000-b3a1-322315116cbc","parent":{"ref":"EID6ee611c1-0175-1000-1b6b-d6dfe54585d0"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee61274-0175-1000-4121-12f70339dd58","parent":{"ref":"EID6ee611c1-0175-1000-1b6b-d6dfe54585d0"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee61274-0175-1000-10f9-b9904e70460c","parent":{"ref":"EID6ee611c1-0175-1000-1b6b-d6dfe54585d0"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee61274-0175-1000-3284-79de34f7317a","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee611c1-0175-1000-1b6b-d6dfe54585d0"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdf9e8275-90c2-480e-9b33-e27cfaf42875"},{"ref":"EIDefcf1c55-788a-4bf0-a6e5-c5fbe51e7aa5"},{"ref":"EID2f02e7a3-d59f-445e-95e0-bf523c5947d8"}]},"parent":{"ref":"EID6ee611c1-0175-1000-ccc4-447599cc5c8f"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:09:32Z","duration":90,"status":"FAILED"}]},"parent":{"ref":"EID6ee5f52d-0175-1000-af71-d134a968a88c"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:09:32Z","duration":179,"status":"FAILED"}]},"parent":{"ref":"EID700f2d4f-ace8-4722-8abf-d09e04eb2684"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:09:25Z","duration":7495,"status":"FAILED"},{"id":"EID6ee61274-0175-1000-b99c-8dad0683748b","testCaseResults":{"TestCaseResult":[{"id":"EID6ee61274-0175-1000-7c6c-94b0f650bebb","testStepResults":{"TestStepResult":[{"id":"EID6ee61274-0175-1000-7034-83217bff8417","parent":{"ref":"EID6ee61274-0175-1000-7c6c-94b0f650bebb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee61274-0175-1000-58a6-93c8ad6a17c9","parent":{"ref":"EID6ee61274-0175-1000-7c6c-94b0f650bebb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:09:33Z","duration":44,"status":"PASSED"},{"id":"EID6ee61274-0175-1000-9eb7-60c713a1df29","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61391-0175-1000-858b-1e3eed3418ab","parent":{"ref":"EID6ee61274-0175-1000-9eb7-60c713a1df29"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee61391-0175-1000-340a-24d542709725","parent":{"ref":"EID6ee61274-0175-1000-9eb7-60c713a1df29"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee61391-0175-1000-d692-15af36e95939","parent":{"ref":"EID6ee61274-0175-1000-9eb7-60c713a1df29"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID193f829c-10a6-4792-8e74-a8e350a6808b"},{"ref":"EID264c0cc8-b67f-4c2e-b7fa-b66407cabf7b"},{"ref":"EID0c0ebcbd-6c73-431d-be35-79b31cb393d4"}]},"parent":{"ref":"EID6ee61274-0175-1000-7c6c-94b0f650bebb"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:09:33Z","duration":212,"status":"PASSED"},{"id":"EID6ee61391-0175-1000-efc1-f84041bdddf2","attachments":{"attachment":{"ref":"EIDa1519fc7-d2f1-4225-93ce-ef9971720986"}},"parent":{"ref":"EID6ee61274-0175-1000-7c6c-94b0f650bebb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee6139c-0175-1000-6578-523d99bad2cf","parent":{"ref":"EID6ee61274-0175-1000-7c6c-94b0f650bebb"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:09:33Z","duration":11,"status":"PASSED"}]},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:09:33Z","duration":308,"status":"PASSED"},{"id":"EID6ee613a8-0175-1000-5576-745efef104cd","testStepResults":{"TestStepResult":[{"id":"EID6ee613a8-0175-1000-0336-9adc85b4ad3d","parent":{"ref":"EID6ee613a8-0175-1000-5576-745efef104cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:09:33Z","duration":51,"status":"PASSED"},{"id":"EID6ee613a9-0175-1000-9140-1ecdf6e0145a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6145b-0175-1000-a639-5dce5aee6701","parent":{"ref":"EID6ee613a9-0175-1000-9140-1ecdf6e0145a"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee6145c-0175-1000-db48-3f9475a251fc","parent":{"ref":"EID6ee613a9-0175-1000-9140-1ecdf6e0145a"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee6145c-0175-1000-7c3c-ed66df98ccb7","parent":{"ref":"EID6ee613a9-0175-1000-9140-1ecdf6e0145a"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee6145c-0175-1000-fefd-7587e9754665","parent":{"ref":"EID6ee613a9-0175-1000-9140-1ecdf6e0145a"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee6145c-0175-1000-622a-4514b9af73d0","parent":{"ref":"EID6ee613a9-0175-1000-9140-1ecdf6e0145a"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbe955154-44a7-4b2f-9a1f-190a9bdffb29"},{"ref":"EID1ff04305-a5a8-4fd6-b766-f85c78fcd025"},{"ref":"EID848ffc2a-46d4-484f-ab3f-1d3aa9ab7c69"}]},"parent":{"ref":"EID6ee613a8-0175-1000-5576-745efef104cd"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:09:33Z","duration":114,"status":"PASSED"}]},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:09:33Z","duration":180,"status":"PASSED"},{"id":"EID6ee6145c-0175-1000-d5d2-acf04ed31970","testStepResults":{"TestStepResult":[{"id":"EID6ee6145c-0175-1000-7f8c-9aa3233aac82","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee614ea-0175-1000-eba4-5c69fe72572d","parent":{"ref":"EID6ee6145c-0175-1000-7f8c-9aa3233aac82"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee614ea-0175-1000-cdf8-3fbc5d6a1eff","parent":{"ref":"EID6ee6145c-0175-1000-7f8c-9aa3233aac82"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee614ea-0175-1000-6e3a-2c0f70d4723d","parent":{"ref":"EID6ee6145c-0175-1000-7f8c-9aa3233aac82"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:09:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3edb90de-5c5b-472f-aeae-00dc4b346254"},{"ref":"EIDae794335-63f6-4b8f-a521-408eb8bcced9"},{"ref":"EID7071bb13-7ea0-4530-986f-2fd87b9d2dcf"}]},"parent":{"ref":"EID6ee6145c-0175-1000-d5d2-acf04ed31970"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:09:33Z","duration":48,"status":"PASSED"},{"id":"EID6ee614ea-0175-1000-633f-97ae669f87e9","attachments":{"attachment":{"ref":"EID62b3e03f-a50d-42b4-8654-27b9b59d896c"}},"parent":{"ref":"EID6ee6145c-0175-1000-d5d2-acf04ed31970"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:09:33Z","duration":1,"status":"PASSED"},{"id":"EID6ee614f5-0175-1000-a819-6ad38f899760","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61662-0175-1000-5fdb-25705d044804","parent":{"ref":"EID6ee614f5-0175-1000-a819-6ad38f899760"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61662-0175-1000-eb3e-f6346fa5a64c","parent":{"ref":"EID6ee614f5-0175-1000-a819-6ad38f899760"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61662-0175-1000-a5b5-f5e4e9bbbb2c","parent":{"ref":"EID6ee614f5-0175-1000-a819-6ad38f899760"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61662-0175-1000-309d-780b6c4b63c0","parent":{"ref":"EID6ee614f5-0175-1000-a819-6ad38f899760"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61662-0175-1000-b6df-ea626b6f8a8a","parent":{"ref":"EID6ee614f5-0175-1000-a819-6ad38f899760"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6557c906-2949-486f-adfe-bf44e691f5e4"},{"ref":"EID9a822e22-79be-486c-b89b-4268f8e5100b"},{"ref":"EID9a548bc5-f329-4256-9854-fb8894b52eec"}]},"parent":{"ref":"EID6ee6145c-0175-1000-d5d2-acf04ed31970"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:09:33Z","duration":275,"status":"PASSED"}]},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:09:33Z","duration":518,"status":"PASSED"},{"id":"EID6ee61662-0175-1000-27a7-1ec578f038d7","testStepResults":{"TestStepResult":[{"id":"EID6ee61662-0175-1000-d3bb-a76d29126e02","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61859-0175-1000-bbf8-33b6aa4c13a1","parent":{"ref":"EID6ee61662-0175-1000-d3bb-a76d29126e02"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61859-0175-1000-2d56-2bc8228910ef","parent":{"ref":"EID6ee61662-0175-1000-d3bb-a76d29126e02"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61859-0175-1000-98aa-33cbb80e3cef","parent":{"ref":"EID6ee61662-0175-1000-d3bb-a76d29126e02"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61859-0175-1000-8ef2-53ac93b00e12","parent":{"ref":"EID6ee61662-0175-1000-d3bb-a76d29126e02"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID76478988-dece-441d-88c6-f9fbc587aeb7"},{"ref":"EIDb94cd2f6-c94b-4b70-bf43-80412d507d0f"},{"ref":"EID75a58d09-f667-4e5f-a5cd-5df2ae6aa939"}]},"parent":{"ref":"EID6ee61662-0175-1000-27a7-1ec578f038d7"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:09:34Z","duration":402,"status":"PASSED"},{"id":"EID6ee61859-0175-1000-2f2d-4e6401a9376e","attachments":{"attachment":{"ref":"EID618755e9-4569-4382-a6d6-b8bcb6665ff5"}},"parent":{"ref":"EID6ee61662-0175-1000-27a7-1ec578f038d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:09:34Z","duration":1,"status":"PASSED"},{"id":"EID6ee6186b-0175-1000-91b2-cc599a3136c6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61897-0175-1000-ad00-6e782b14fbf6","parent":{"ref":"EID6ee6186b-0175-1000-91b2-cc599a3136c6"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee61897-0175-1000-52f1-3bcec7099979","parent":{"ref":"EID6ee6186b-0175-1000-91b2-cc599a3136c6"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID31c58063-bdda-4a15-be29-a1deebd85fec"},{"ref":"EID01f9925f-235b-40e6-837f-cba50e0b879c"}]},"parent":{"ref":"EID6ee61662-0175-1000-27a7-1ec578f038d7"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:09:34Z","duration":40,"status":"PASSED"},{"id":"EID6ee61897-0175-1000-e67e-320104882724","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6191c-0175-1000-d979-a0d48cc4fb57","parent":{"ref":"EID6ee61897-0175-1000-e67e-320104882724"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee6191c-0175-1000-ff77-739a471dec25","parent":{"ref":"EID6ee61897-0175-1000-e67e-320104882724"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee6191c-0175-1000-33cd-2f423a8ab947","parent":{"ref":"EID6ee61897-0175-1000-e67e-320104882724"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee6191c-0175-1000-daba-4a62f967e0d4","parent":{"ref":"EID6ee61897-0175-1000-e67e-320104882724"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:09:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda93bae7-c45a-4ea3-a1c3-d37b75b57b20"},{"ref":"EID0887b79f-f3c0-45c1-92e2-a061531129a2"},{"ref":"EID04f55f1b-2eb3-430e-9c71-d8034a6e7bd8"}]},"parent":{"ref":"EID6ee61662-0175-1000-27a7-1ec578f038d7"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:09:34Z","duration":38,"status":"PASSED"}]},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:09:34Z","duration":698,"status":"PASSED"},{"id":"EID6ee6191c-0175-1000-c200-2c7a8563441a","testStepResults":{"TestStepResult":{"id":"EID6ee6191c-0175-1000-922e-a4289747f707","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee619eb-0175-1000-b4fa-9039f3dcac01","parent":{"ref":"EID6ee6191c-0175-1000-922e-a4289747f707"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee619eb-0175-1000-481f-ddc281603726","parent":{"ref":"EID6ee6191c-0175-1000-922e-a4289747f707"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee619eb-0175-1000-3b1b-6d90f7a7ef40","parent":{"ref":"EID6ee6191c-0175-1000-922e-a4289747f707"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID94b24b34-0929-4b89-8729-e803dd1ae61c"},{"ref":"EID8ceb46d7-1907-4027-ba66-dbb5075d3e22"},{"ref":"EID4f055fdc-e189-4dd7-ba70-32e2f6fd0415"}]},"parent":{"ref":"EID6ee6191c-0175-1000-c200-2c7a8563441a"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:09:34Z","duration":148,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:09:34Z","duration":208,"status":"PASSED"},{"id":"EID6ee619ec-0175-1000-09dc-fdbdb72b0ffc","testStepResults":{"TestStepResult":{"id":"EID6ee619ec-0175-1000-03bb-682f34300021","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61a98-0175-1000-a24f-753c7ca84fd1","parent":{"ref":"EID6ee619ec-0175-1000-03bb-682f34300021"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61a98-0175-1000-280a-b9dfabc6b62a","parent":{"ref":"EID6ee619ec-0175-1000-03bb-682f34300021"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61a98-0175-1000-aac2-8b17a6b81ab7","parent":{"ref":"EID6ee619ec-0175-1000-03bb-682f34300021"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb59f9995-35c0-4026-b539-8427bb87ac4b"},{"ref":"EIDecfb592a-213c-4fcf-937f-48711f6571c2"},{"ref":"EID185d565b-0156-4cb1-b2c6-3813b6f5f869"}]},"parent":{"ref":"EID6ee619ec-0175-1000-09dc-fdbdb72b0ffc"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:09:35Z","duration":115,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:09:35Z","duration":172,"status":"PASSED"},{"id":"EID6ee61a98-0175-1000-548b-8c5a0e131e91","testStepResults":{"TestStepResult":{"id":"EID6ee61a98-0175-1000-cf13-d54dd0fe7224","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61bad-0175-1000-7b31-ab349d2fdfef","parent":{"ref":"EID6ee61a98-0175-1000-cf13-d54dd0fe7224"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61bad-0175-1000-ab27-649a7abf21c1","parent":{"ref":"EID6ee61a98-0175-1000-cf13-d54dd0fe7224"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61bad-0175-1000-df3c-d23b7a9fa534","parent":{"ref":"EID6ee61a98-0175-1000-cf13-d54dd0fe7224"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61bad-0175-1000-5800-865dcecb2580","parent":{"ref":"EID6ee61a98-0175-1000-cf13-d54dd0fe7224"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61bad-0175-1000-f173-1be24528c3db","parent":{"ref":"EID6ee61a98-0175-1000-cf13-d54dd0fe7224"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID05f5348f-ba85-44ee-968d-c86b301064da"},{"ref":"EID1ef621eb-aac3-4c8f-8194-affd0b4d1efe"},{"ref":"EIDdbb6d29e-5169-406d-9026-3fc810fbe8ab"}]},"parent":{"ref":"EID6ee61a98-0175-1000-548b-8c5a0e131e91"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:09:35Z","duration":125,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:09:35Z","duration":277,"status":"PASSED"},{"id":"EID6ee61bad-0175-1000-498a-40c7da95dcf4","testStepResults":{"TestStepResult":{"id":"EID6ee61bad-0175-1000-f9b5-5415d408915e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61d7f-0175-1000-8128-ed32f3199fdc","parent":{"ref":"EID6ee61bad-0175-1000-f9b5-5415d408915e"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61d7f-0175-1000-ba3f-333a4e021bea","parent":{"ref":"EID6ee61bad-0175-1000-f9b5-5415d408915e"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee61d7f-0175-1000-f6e0-94cd90988800","parent":{"ref":"EID6ee61bad-0175-1000-f9b5-5415d408915e"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:09:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb731b10-7e7e-4f06-877f-3441968321c3"},{"ref":"EIDb9ab51cd-e815-4c61-be7d-74487a9f1752"},{"ref":"EID6fdb7f20-f360-4841-824d-810cc3d0eab0"}]},"parent":{"ref":"EID6ee61bad-0175-1000-498a-40c7da95dcf4"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:09:35Z","duration":397,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:09:35Z","duration":466,"status":"PASSED"},{"id":"EID6ee61d7f-0175-1000-1d81-c56f92d33a56","testStepResults":{"TestStepResult":{"id":"EID6ee61d7f-0175-1000-f971-f37aadbf8440","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61e32-0175-1000-29a6-8217d6d62751","parent":{"ref":"EID6ee61d7f-0175-1000-f971-f37aadbf8440"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61e32-0175-1000-cf8a-44f8b07f08e9","parent":{"ref":"EID6ee61d7f-0175-1000-f971-f37aadbf8440"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61e32-0175-1000-38ad-d796ca451bdb","parent":{"ref":"EID6ee61d7f-0175-1000-f971-f37aadbf8440"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID97c64f8e-c3cf-4a5a-abb7-b28b6d712ec3"},{"ref":"EID20d54230-6d35-4f1a-ad85-1f99b7af6b61"},{"ref":"EIDa780b902-8b4f-4ee9-9783-59a58e64288b"}]},"parent":{"ref":"EID6ee61d7f-0175-1000-1d81-c56f92d33a56"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:09:35Z","duration":93,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:09:35Z","duration":180,"status":"PASSED"},{"id":"EID6ee61e33-0175-1000-2740-4043a44df14a","testStepResults":{"TestStepResult":{"id":"EID6ee61e33-0175-1000-2a04-2f58c2f89cf6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61ef3-0175-1000-8fda-e53b7bc06687","parent":{"ref":"EID6ee61e33-0175-1000-2a04-2f58c2f89cf6"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61ef3-0175-1000-8694-ae1827d0709c","parent":{"ref":"EID6ee61e33-0175-1000-2a04-2f58c2f89cf6"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61ef3-0175-1000-ea85-0082a3a5dfac","parent":{"ref":"EID6ee61e33-0175-1000-2a04-2f58c2f89cf6"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61ef3-0175-1000-8311-345d0b826df3","parent":{"ref":"EID6ee61e33-0175-1000-2a04-2f58c2f89cf6"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID184169aa-7677-478a-ada7-4b7b58aea149"},{"ref":"EIDa5ff17d1-3bc4-40b2-a72b-7dea87f0cd2e"},{"ref":"EID9254e627-bcf8-4720-9e6c-884fba42a080"}]},"parent":{"ref":"EID6ee61e33-0175-1000-2740-4043a44df14a"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:09:36Z","duration":112,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:09:36Z","duration":215,"status":"PASSED"},{"id":"EID6ee61f0a-0175-1000-2b5a-89ab397e8f04","testStepResults":{"TestStepResult":{"id":"EID6ee61f0a-0175-1000-519b-634728899cbf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee61f93-0175-1000-0b6b-3f901349d0ab","parent":{"ref":"EID6ee61f0a-0175-1000-519b-634728899cbf"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61f93-0175-1000-3472-a989aca35817","parent":{"ref":"EID6ee61f0a-0175-1000-519b-634728899cbf"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61f93-0175-1000-3020-2702acb46e62","parent":{"ref":"EID6ee61f0a-0175-1000-519b-634728899cbf"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61f93-0175-1000-6b07-9cb9ceef685b","parent":{"ref":"EID6ee61f0a-0175-1000-519b-634728899cbf"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2258458c-8513-43c3-94cf-bb43a0d2d89e"},{"ref":"EID701529f7-33ca-46a2-bd17-54d863656c9a"},{"ref":"EIDd46bb728-4ded-476d-9c7d-6a4a4b405d3f"}]},"parent":{"ref":"EID6ee61f0a-0175-1000-2b5a-89ab397e8f04"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:09:36Z","duration":57,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:09:36Z","duration":137,"status":"PASSED"},{"id":"EID6ee61f94-0175-1000-7327-cfa846c6cca2","testStepResults":{"TestStepResult":[{"id":"EID6ee61f94-0175-1000-1215-22c893a34864","parent":{"ref":"EID6ee61f94-0175-1000-7327-cfa846c6cca2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee61f94-0175-1000-29e7-831fb0a054f3","parent":{"ref":"EID6ee61f94-0175-1000-7327-cfa846c6cca2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:09:36Z","duration":211,"status":"PASSED"},{"id":"EID6ee61f94-0175-1000-da64-2fce629009fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6202d-0175-1000-baad-c26a7aceb17d","parent":{"ref":"EID6ee61f94-0175-1000-da64-2fce629009fd"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6202d-0175-1000-88e7-1c06e5bd8d92","parent":{"ref":"EID6ee61f94-0175-1000-da64-2fce629009fd"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6202d-0175-1000-4ac4-b585c8a4addf","parent":{"ref":"EID6ee61f94-0175-1000-da64-2fce629009fd"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6202d-0175-1000-4225-d620aa550127","parent":{"ref":"EID6ee61f94-0175-1000-da64-2fce629009fd"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2fbf658c-0b1c-4999-bbc6-08255fee7f66"},{"ref":"EID53bad3c6-25eb-47ef-b823-9221dcc7fdb4"},{"ref":"EIDcb2111ff-c11f-4613-9fc8-3cc5fb3f965f"}]},"parent":{"ref":"EID6ee61f94-0175-1000-7327-cfa846c6cca2"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:09:36Z","duration":44,"status":"PASSED"},{"id":"EID6ee6202d-0175-1000-9149-715aa4ddd13f","attachments":{"attachment":{"ref":"EIDb6bdfc5d-e09e-4c88-9036-cd0c0baf74c6"}},"parent":{"ref":"EID6ee61f94-0175-1000-7327-cfa846c6cca2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:09:36Z","duration":1,"status":"PASSED"},{"id":"EID6ee62039-0175-1000-f2c4-75b6133fda8b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6210a-0175-1000-b997-37da1e1905a1","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6210a-0175-1000-bb81-f215a17fc0cc","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6210a-0175-1000-fb64-16627d85e07c","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6210a-0175-1000-28a5-01496d9718ed","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6210a-0175-1000-089e-86667bc5608a","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6210a-0175-1000-77a9-6353dea129d6","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee6210a-0175-1000-6ff1-f44c56b834df","parent":{"ref":"EID6ee62039-0175-1000-f2c4-75b6133fda8b"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1b04d41-55c9-4475-8056-67998718479d"},{"ref":"EID853a7dfd-24d2-4277-8ac9-d7870241318e"},{"ref":"EIDab3445ec-308e-40d8-a50a-426d8f31e854"}]},"parent":{"ref":"EID6ee61f94-0175-1000-7327-cfa846c6cca2"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:09:36Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:09:36Z","duration":383,"status":"PASSED"},{"id":"EID6ee62113-0175-1000-1260-1dbb62340b8b","testStepResults":{"TestStepResult":[{"id":"EID6ee62113-0175-1000-80d2-50985401e13d","parent":{"ref":"EID6ee62113-0175-1000-1260-1dbb62340b8b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:09:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee62113-0175-1000-48d9-6b46c315d5a1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee625b2-0175-1000-694d-0f4960a953a6","parent":{"ref":"EID6ee62113-0175-1000-48d9-6b46c315d5a1"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee625b2-0175-1000-cb97-64090f71c0ec","parent":{"ref":"EID6ee62113-0175-1000-48d9-6b46c315d5a1"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee625b2-0175-1000-20e0-3981c3b4bf31","parent":{"ref":"EID6ee62113-0175-1000-48d9-6b46c315d5a1"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee625b2-0175-1000-51f4-a19e10d1307d","parent":{"ref":"EID6ee62113-0175-1000-48d9-6b46c315d5a1"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe5abe546-7dca-4050-9e64-ce1b3165496f"},{"ref":"EIDef3cf282-5f3b-43dc-9b98-fa636a15b387"},{"ref":"EID4d9d64a4-9e6e-4649-8bc5-1f62bd72e37d"}]},"parent":{"ref":"EID6ee62113-0175-1000-1260-1dbb62340b8b"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:09:36Z","duration":1077,"status":"PASSED"},{"id":"EID6ee625bb-0175-1000-147e-756cf927d021","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee625cd-0175-1000-b8ac-1337568b660c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee628a2-0175-1000-c819-cd1a0b43ee17","parent":{"ref":"EID6ee625cd-0175-1000-b8ac-1337568b660c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee628a2-0175-1000-680c-0ba7196e06ea","parent":{"ref":"EID6ee625cd-0175-1000-b8ac-1337568b660c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee628a2-0175-1000-674d-a9938abe5db5","parent":{"ref":"EID6ee625cd-0175-1000-b8ac-1337568b660c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7310ccc6-de1a-4bd4-852e-52190a8939a7"},{"ref":"EIDc130f0aa-4fed-4a55-98a3-eabd2e5b94d6"},{"ref":"EIDccd86ab0-c870-48cf-9bfe-51b55d69fb98"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:09:38Z","duration":578,"status":"PASSED"},{"id":"EID6ee628a4-0175-1000-dfad-3b0cd67071e9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62904-0175-1000-5c1d-4392a7ed0ce0","parent":{"ref":"EID6ee628a4-0175-1000-dfad-3b0cd67071e9"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee62904-0175-1000-20ac-8b66ffe1af7d","parent":{"ref":"EID6ee628a4-0175-1000-dfad-3b0cd67071e9"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee62904-0175-1000-88f7-682f0417fad5","parent":{"ref":"EID6ee628a4-0175-1000-dfad-3b0cd67071e9"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:09:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc952802e-74c1-4d4f-98dd-8a0c6f199c49"},{"ref":"EIDdaace8df-a24e-4a13-b2f6-dcbc0350b3dc"},{"ref":"EID500a82ab-5bbc-4368-8a06-e688e1aa4fab"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:09:38Z","duration":42,"status":"PASSED"},{"id":"EID6ee62906-0175-1000-16fa-c80891cc9286","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee629ce-0175-1000-6b16-819338feba62","parent":{"ref":"EID6ee62906-0175-1000-16fa-c80891cc9286"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee629ce-0175-1000-7031-5efcca9b1006","parent":{"ref":"EID6ee62906-0175-1000-16fa-c80891cc9286"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee629ce-0175-1000-5bd1-2bee13a8d656","parent":{"ref":"EID6ee62906-0175-1000-16fa-c80891cc9286"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID830512da-1651-4461-80e4-61235204602c"},{"ref":"EID573a1713-46da-47a8-92c8-498c886ba9d4"},{"ref":"EIDfd5bbdc2-f307-460f-9f38-b86ff894d5ee"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:09:38Z","duration":150,"status":"PASSED"}]},"parent":{"ref":"EID6ee62113-0175-1000-1260-1dbb62340b8b"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:09:38Z","duration":1044,"status":"PASSED"},{"id":"EID6ee629cf-0175-1000-959a-63b2a3e7d5cb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62a93-0175-1000-68f1-285bd1a88d33","parent":{"ref":"EID6ee629cf-0175-1000-959a-63b2a3e7d5cb"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62a93-0175-1000-7f95-f8cab381642f","parent":{"ref":"EID6ee629cf-0175-1000-959a-63b2a3e7d5cb"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:09:39Z","duration":1,"status":"PASSED"},{"id":"EID6ee62a94-0175-1000-6838-172f82807a36","parent":{"ref":"EID6ee629cf-0175-1000-959a-63b2a3e7d5cb"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62a94-0175-1000-3655-6f3edbd28795","parent":{"ref":"EID6ee629cf-0175-1000-959a-63b2a3e7d5cb"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDecb150f3-f070-42b6-9cc4-577b3d7833fe"},{"ref":"EID83d3da64-3569-476f-9c60-118f321d02f1"},{"ref":"EID8bac2b73-64be-44d4-872f-2f71a7753cb0"}]},"parent":{"ref":"EID6ee62113-0175-1000-1260-1dbb62340b8b"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:09:39Z","duration":138,"status":"PASSED"}]},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:09:36Z","duration":2441,"status":"PASSED"},{"id":"EID6ee62a9d-0175-1000-4e98-28fddef4cfe1","testStepResults":{"TestStepResult":{"id":"EID6ee62a9d-0175-1000-19cf-d28661561270","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62b12-0175-1000-1301-2fef0849dce0","parent":{"ref":"EID6ee62a9d-0175-1000-19cf-d28661561270"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62b12-0175-1000-949d-78b5fb7a96ee","parent":{"ref":"EID6ee62a9d-0175-1000-19cf-d28661561270"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62b12-0175-1000-fe8c-dc675a72e42f","parent":{"ref":"EID6ee62a9d-0175-1000-19cf-d28661561270"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62b12-0175-1000-b209-244a36f3df6d","parent":{"ref":"EID6ee62a9d-0175-1000-19cf-d28661561270"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:09:39Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2adb652c-70f9-4938-b0ae-76e096066db5"},{"ref":"EID6bc1fc8b-ccb9-49c8-91ab-631b975721f9"},{"ref":"EIDb10c2127-7a72-47a5-a087-b18555ec8072"}]},"parent":{"ref":"EID6ee62a9d-0175-1000-4e98-28fddef4cfe1"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:09:39Z","duration":54,"status":"PASSED"}},"parent":{"ref":"EID6ee61274-0175-1000-b99c-8dad0683748b"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:09:39Z","duration":118,"status":"PASSED"}]},"parent":{"ref":"EID700f2d4f-ace8-4722-8abf-d09e04eb2684"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:09:33Z","duration":6303,"status":"PASSED"},{"id":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab","testCaseResults":{"TestCaseResult":[{"id":"EID6ee62b13-0175-1000-5a6a-fe24d8c6fa2c","testStepResults":{"TestStepResult":[{"id":"EID6ee62b13-0175-1000-6413-79394e7935e6","parent":{"ref":"EID6ee62b13-0175-1000-5a6a-fe24d8c6fa2c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:09:39Z","duration":499,"status":"PASSED"},{"id":"EID6ee62b13-0175-1000-ecaa-abd6995ecc45","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62c31-0175-1000-5ac5-8d425a21c63a","parent":{"ref":"EID6ee62b13-0175-1000-ecaa-abd6995ecc45"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62c31-0175-1000-25d6-061de1625fda","parent":{"ref":"EID6ee62b13-0175-1000-ecaa-abd6995ecc45"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62c31-0175-1000-c834-5c394d56c620","parent":{"ref":"EID6ee62b13-0175-1000-ecaa-abd6995ecc45"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID370f509a-b330-4bb0-a7a0-c2ed0f5e545a"},{"ref":"EID429eb302-e92f-4483-ba88-f32f484cf62e"},{"ref":"EIDa0b16ea5-39db-41c5-9776-eb88d9001777"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5a6a-fe24d8c6fa2c"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:09:39Z","duration":211,"status":"PASSED"},{"id":"EID6ee62c32-0175-1000-2a8e-33ae77e5618e","attachments":{"attachment":{"ref":"EIDca3f5d77-2acf-441d-88fa-f8a033bb8c3b"}},"parent":{"ref":"EID6ee62b13-0175-1000-5a6a-fe24d8c6fa2c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:09:39Z","duration":298,"status":"PASSED"},{"id":"EID6ee62c3e-0175-1000-6735-4b830a63dcc2","testStepResults":{"TestStepResult":[{"id":"EID6ee62c3e-0175-1000-59e5-2c338e1e8137","parent":{"ref":"EID6ee62c3e-0175-1000-6735-4b830a63dcc2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:09:39Z","duration":499,"status":"PASSED"},{"id":"EID6ee62c3e-0175-1000-3d25-28d3964901ce","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62cf4-0175-1000-e261-e7987f56a9d1","parent":{"ref":"EID6ee62c3e-0175-1000-3d25-28d3964901ce"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62cf4-0175-1000-6bf8-3517b587f88c","parent":{"ref":"EID6ee62c3e-0175-1000-3d25-28d3964901ce"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62cf4-0175-1000-f081-bd835f7f44b5","parent":{"ref":"EID6ee62c3e-0175-1000-3d25-28d3964901ce"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62cf4-0175-1000-f485-799509e5e832","parent":{"ref":"EID6ee62c3e-0175-1000-3d25-28d3964901ce"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4566e083-9663-48a9-a3ce-9ec81964da13"},{"ref":"EIDb8f4b3cd-e7a9-4a36-80aa-fb9f7818ebee"},{"ref":"EID948b0c24-d7ed-4841-8fc6-36ee289eaad2"}]},"parent":{"ref":"EID6ee62c3e-0175-1000-6735-4b830a63dcc2"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:09:39Z","duration":115,"status":"PASSED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:09:39Z","duration":182,"status":"PASSED"},{"id":"EID6ee62cf4-0175-1000-8e71-b91fef0cfc09","testStepResults":{"TestStepResult":[{"id":"EID6ee62cf4-0175-1000-f04f-cb501e3da576","parent":{"ref":"EID6ee62cf4-0175-1000-8e71-b91fef0cfc09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:09:39Z","duration":499,"status":"PASSED"},{"id":"EID6ee62cf4-0175-1000-c722-e5255297b07a","parent":{"ref":"EID6ee62cf4-0175-1000-8e71-b91fef0cfc09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:09:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee62cf4-0175-1000-1151-20afaa348165","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62da9-0175-1000-6f88-d41387979628","parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62da9-0175-1000-8773-1d61426cb173","parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62da9-0175-1000-c001-e8bcb8a2ace2","parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62da9-0175-1000-00a9-f87aefeda4d2","parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62da9-0175-1000-09dd-23087a0d0793","parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62da9-0175-1000-f055-20e1ac2bdb07","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"FAILED"},{"id":"EID6ee62da9-0175-1000-b9e9-74f17f0196fb","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee62cf4-0175-1000-1151-20afaa348165"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID33292371-cbcc-4656-92ad-fe3dfe86992a"},{"ref":"EID6b2681a8-ac9a-44f8-b57b-c67c70c3175b"},{"ref":"EID743c12e5-2814-4516-b211-e3bc785f7424"}]},"parent":{"ref":"EID6ee62cf4-0175-1000-8e71-b91fef0cfc09"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:09:39Z","duration":81,"status":"FAILED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:09:39Z","duration":189,"status":"FAILED"},{"id":"EID6ee62db1-0175-1000-e6db-43ef339f0fb9","testStepResults":{"TestStepResult":[{"id":"EID6ee62db1-0175-1000-2d36-e3d256506ba1","parent":{"ref":"EID6ee62db1-0175-1000-e6db-43ef339f0fb9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:09:40Z","duration":499,"status":"PASSED"},{"id":"EID6ee62db2-0175-1000-a9ad-9a4ed06ecfcb","parent":{"ref":"EID6ee62db1-0175-1000-e6db-43ef339f0fb9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee62e56-0175-1000-3838-9f2ac6aacbad","parent":{"ref":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62e56-0175-1000-8dc6-4c0eb5d3741f","parent":{"ref":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62e56-0175-1000-aa06-95889d057aef","parent":{"ref":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62e56-0175-1000-92bd-17cfec510efe","parent":{"ref":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62e56-0175-1000-27ba-7ff11d5ce516","parent":{"ref":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee62e56-0175-1000-6f59-3d9cc79f43cf","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee62db2-0175-1000-d0f1-f9e8408aa307"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:09:40Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID74425ccc-afd0-4318-8f35-681b81cadf12"},{"ref":"EIDb4e5e270-5a9b-498d-b286-8562b5fc9d4f"},{"ref":"EID9edafcc9-5e45-4b21-84a4-9529caf94b4a"}]},"parent":{"ref":"EID6ee62db1-0175-1000-e6db-43ef339f0fb9"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:09:40Z","duration":78,"status":"FAILED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:09:40Z","duration":165,"status":"FAILED"},{"id":"EID6ee62e56-0175-1000-61d0-6e5330c6a3b3","testStepResults":{"TestStepResult":[{"id":"EID6ee62e57-0175-1000-d102-1b5a69512509","parent":{"ref":"EID6ee62e56-0175-1000-61d0-6e5330c6a3b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:09:40Z","duration":499,"status":"PASSED"},{"id":"EID6ee62e57-0175-1000-2f7a-4627989171b0","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID66ac7c65-1ca0-4cdc-8740-5f8ffa39fc25"},{"ref":"EID0d07f964-3bc9-433c-aa88-2c81c2ad0861"},{"ref":"EID663099ee-b8ef-44a1-8b0b-04d3f8db8ae6"},{"ref":"EIDabd55d4a-305a-4bf7-84c8-361f5d20f4fd"},{"ref":"EID594c0e3d-bcc5-47bd-98ab-8797509c0252"},{"ref":"EIDa2e90a3a-4f3e-4a61-a5ce-f672555fd671"},{"ref":"EID81e11f59-2c31-40c2-9905-8ce3759d50b0"},{"ref":"EID750327fc-fa3a-47d6-9a42-d7f1b4641fd6"},{"ref":"EID8f00829c-9587-4b57-8199-de2d2a00a9d6"},{"ref":"EID9d7941b9-ccc3-4904-82c9-f68edb204795"},{"ref":"EID557fd894-896c-4952-8352-26423ced2307"},{"ref":"EID95c65bbb-f551-4d1a-9056-ef003b26a8bb"},{"ref":"EID0e152b06-26d4-40b3-a47e-1f081e76ebd9"},{"ref":"EIDd94f2953-75be-4b23-9f81-6ecec7f50c1e"},{"ref":"EIDab37d5b3-a2e1-40cd-8972-aef21459c3db"}]},"parent":{"ref":"EID6ee62e56-0175-1000-61d0-6e5330c6a3b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:09:40Z","duration":442,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:09:40Z","duration":683,"status":"SKIPPED"},{"id":"EID6ee63109-0175-1000-a8e3-0b1ef1ae18e4","testStepResults":{"TestStepResult":[{"id":"EID6ee63109-0175-1000-2bbe-68d679ffdbed","parent":{"ref":"EID6ee63109-0175-1000-a8e3-0b1ef1ae18e4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:09:41Z","duration":499,"status":"PASSED"},{"id":"EID6ee63109-0175-1000-857d-8a3c61aa0e08","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee63199-0175-1000-996f-dc5812a4e70a","parent":{"ref":"EID6ee63109-0175-1000-857d-8a3c61aa0e08"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63199-0175-1000-5288-4c7d72dfc787","parent":{"ref":"EID6ee63109-0175-1000-857d-8a3c61aa0e08"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63199-0175-1000-d5ed-da1e2084be86","parent":{"ref":"EID6ee63109-0175-1000-857d-8a3c61aa0e08"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63199-0175-1000-ca95-bfae4b4f740d","parent":{"ref":"EID6ee63109-0175-1000-857d-8a3c61aa0e08"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48a24124-ef8e-4cc9-b8af-5ba89ad11fe4"},{"ref":"EID1bcc32e1-0c01-409c-9537-67f9d36b6e91"},{"ref":"EIDe23112cf-8db8-4cb8-a58e-63e6c0d4cd3d"}]},"parent":{"ref":"EID6ee63109-0175-1000-a8e3-0b1ef1ae18e4"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:09:41Z","duration":75,"status":"PASSED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:09:41Z","duration":145,"status":"PASSED"},{"id":"EID6ee6319a-0175-1000-9912-e83150a8c109","testStepResults":{"TestStepResult":[{"id":"EID6ee6319a-0175-1000-c4a0-c36150130456","parent":{"ref":"EID6ee6319a-0175-1000-9912-e83150a8c109"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:09:41Z","duration":499,"status":"PASSED"},{"id":"EID6ee6319a-0175-1000-fc99-e099b1f77dfd","parent":{"ref":"EID6ee6319a-0175-1000-9912-e83150a8c109"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee6319a-0175-1000-4446-98edd75cf4df","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee63231-0175-1000-38c1-8b03de167862","parent":{"ref":"EID6ee6319a-0175-1000-4446-98edd75cf4df"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63231-0175-1000-2a61-4fb9de2d7edf","parent":{"ref":"EID6ee6319a-0175-1000-4446-98edd75cf4df"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63231-0175-1000-855d-ac9f8024c2e2","parent":{"ref":"EID6ee6319a-0175-1000-4446-98edd75cf4df"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63231-0175-1000-7526-31bc2c756478","parent":{"ref":"EID6ee6319a-0175-1000-4446-98edd75cf4df"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda1b9d1b-f8c4-4db7-86df-7108ce96db32"},{"ref":"EID33818722-8cc6-412f-8e94-085c50df6c90"},{"ref":"EIDf851cb1f-2ef6-4bc8-929b-dc01d89c68df"}]},"parent":{"ref":"EID6ee6319a-0175-1000-9912-e83150a8c109"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:09:41Z","duration":79,"status":"PASSED"},{"id":"EID6ee63231-0175-1000-180e-b247a67ac923","attachments":{"attachment":{"ref":"EID572ed84a-eaf2-4d13-9646-5bec6a3d8693"}},"parent":{"ref":"EID6ee6319a-0175-1000-9912-e83150a8c109"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:09:41Z","duration":1,"status":"PASSED"},{"id":"EID6ee6323d-0175-1000-cf1f-f43cea1ccc2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee63242-0175-1000-a847-58e6028cda5c","parent":{"ref":"EID6ee6323d-0175-1000-cf1f-f43cea1ccc2a"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63242-0175-1000-6394-b0ddb3d7df87","parent":{"ref":"EID6ee6323d-0175-1000-cf1f-f43cea1ccc2a"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee63242-0175-1000-ba59-f816d5d3492a","parent":{"ref":"EID6ee6323d-0175-1000-cf1f-f43cea1ccc2a"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID950fbdaa-9b53-499a-93a2-12eccacadfba"},{"ref":"EID53334a83-bbf5-4fb4-b37c-d7ab854896dc"}]},"parent":{"ref":"EID6ee6319a-0175-1000-9912-e83150a8c109"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:09:41Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee62b13-0175-1000-5e57-3e67a9b10cab"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:09:41Z","duration":168,"status":"PASSED"}]},"parent":{"ref":"EID700f2d4f-ace8-4722-8abf-d09e04eb2684"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:09:39Z","duration":1839,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EIDc67f592a-4046-4d07-9b56-7816c1c1af80","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID83d3da64-3569-476f-9c60-118f321d02f1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID83d3da64-3569-476f-9c60-118f321d02f1"}},{"type":"Message","id":"EID9d7941b9-ccc3-4904-82c9-f68edb204795","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID9d7941b9-ccc3-4904-82c9-f68edb204795"}},{"type":"ServiceEndpoint","id":"EID00974278-3427-4615-9aac-3f7f0f7edafa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDc9554709-884e-40ee-9824-c44d599d9186","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDcb2111ff-c11f-4613-9fc8-3cc5fb3f965f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDa0b16ea5-39db-41c5-9776-eb88d9001777","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd8eac0ad-599b-4871-8e20-e6fa48b49227","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID176be30c-bef7-4b3a-a19e-dd4aff8f0722","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID176be30c-bef7-4b3a-a19e-dd4aff8f0722"}},{"type":"GetParameter","id":"EID2f02e7a3-d59f-445e-95e0-bf523c5947d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa2e90a3a-4f3e-4a61-a5ce-f672555fd671","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDa2e90a3a-4f3e-4a61-a5ce-f672555fd671"}},{"type":"ServiceEndpoint","id":"EID89c7afae-08f1-46cb-99c3-70929cd59c59","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDdbb6d29e-5169-406d-9026-3fc810fbe8ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDa7178120-2b8a-4d08-9545-af8e7c7d0076","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID31c58063-bdda-4a15-be29-a1deebd85fec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9kb3dubG9hZHMva3JtX21hcmllbmVyYXBwb3J0YWdlZWVuaGVkZW5fZXUyMDE4X2dwa2cuemlw"},{"type":"ServiceResponse","id":"EID53bad3c6-25eb-47ef-b823-9221dcc7fdb4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID53bad3c6-25eb-47ef-b823-9221dcc7fdb4"}},{"type":"Message","id":"EID8f00829c-9587-4b57-8199-de2d2a00a9d6","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID8f00829c-9587-4b57-8199-de2d2a00a9d6"}},{"type":"Message","id":"EIDd946cc95-6433-4445-a44c-7ea17dc050cc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd946cc95-6433-4445-a44c-7ea17dc050cc"}},{"type":"Message","id":"EID86d26009-79ca-43e2-991c-82af89bbdb91","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID86d26009-79ca-43e2-991c-82af89bbdb91"}},{"type":"ServiceEndpoint","id":"EIDbe955154-44a7-4b2f-9a1f-190a9bdffb29","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDb59f9995-35c0-4026-b539-8427bb87ac4b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDa780b902-8b4f-4ee9-9783-59a58e64288b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID853a7dfd-24d2-4277-8ac9-d7870241318e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID853a7dfd-24d2-4277-8ac9-d7870241318e"}},{"type":"ServiceEndpoint","id":"EID3daf3e33-0ca5-4749-bc59-082e940e83f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4d9d64a4-9e6e-4649-8bc5-1f62bd72e37d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID66ac7c65-1ca0-4cdc-8740-5f8ffa39fc25","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID66ac7c65-1ca0-4cdc-8740-5f8ffa39fc25"}},{"type":"Message","id":"EID52263b15-9d9a-4b37-9b6d-65c99ffd0614","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID52263b15-9d9a-4b37-9b6d-65c99ffd0614"}},{"type":"ServiceEndpoint","id":"EID950fbdaa-9b53-499a-93a2-12eccacadfba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID370f509a-b330-4bb0-a7a0-c2ed0f5e545a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID8ceb46d7-1907-4027-ba66-dbb5075d3e22","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID8ceb46d7-1907-4027-ba66-dbb5075d3e22"}},{"type":"Message","id":"EIDbbcd1006-b35d-42b7-b49b-2cf1069420b7","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDbbcd1006-b35d-42b7-b49b-2cf1069420b7"}},{"type":"GetParameter","id":"EID9a548bc5-f329-4256-9854-fb8894b52eec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID6fdb7f20-f360-4841-824d-810cc3d0eab0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID2948cd8e-6344-4459-8515-b3222c8a07fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID2948cd8e-6344-4459-8515-b3222c8a07fd"}},{"type":"ServiceEndpoint","id":"EID2cf81120-5195-485e-9498-63a703cdcd79","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID2adb652c-70f9-4938-b0ae-76e096066db5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID48a24124-ef8e-4cc9-b8af-5ba89ad11fe4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa5ff17d1-3bc4-40b2-a72b-7dea87f0cd2e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDa5ff17d1-3bc4-40b2-a72b-7dea87f0cd2e"}},{"type":"Message","id":"EID9bd28478-4052-47e6-af02-66bb4b5b260c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID9bd28478-4052-47e6-af02-66bb4b5b260c"}},{"type":"ServiceResponse","id":"EID701529f7-33ca-46a2-bd17-54d863656c9a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID701529f7-33ca-46a2-bd17-54d863656c9a"}},{"type":"ServiceEndpoint","id":"EID788c02c6-81e2-4a3c-8686-517821ad123d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID5f66f36b-fbdf-46a9-a04b-7591dd8e44b0","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID5f66f36b-fbdf-46a9-a04b-7591dd8e44b0"}},{"type":"Message","id":"EIDb6bdfc5d-e09e-4c88-9036-cd0c0baf74c6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDb6bdfc5d-e09e-4c88-9036-cd0c0baf74c6"}},{"type":"GetParameter","id":"EIDd5c2f3df-00da-41af-8b42-28c126a78b6c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID76478988-dece-441d-88c6-f9fbc587aeb7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID0c0ebcbd-6c73-431d-be35-79b31cb393d4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDbe6a3aa0-a5c5-44e9-89e1-4a737c8377ff","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDbe6a3aa0-a5c5-44e9-89e1-4a737c8377ff"}},{"type":"Message","id":"EID81e11f59-2c31-40c2-9905-8ce3759d50b0","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID81e11f59-2c31-40c2-9905-8ce3759d50b0"}},{"type":"Message","id":"EID6b737448-31d8-4425-8ca8-a7d15ba57465","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID6b737448-31d8-4425-8ca8-a7d15ba57465"}},{"type":"Message","id":"EIDca3f5d77-2acf-441d-88fa-f8a033bb8c3b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDca3f5d77-2acf-441d-88fa-f8a033bb8c3b"}},{"type":"ServiceEndpoint","id":"EIDff1fc50b-9a79-44ca-a80f-1fcf4444d186","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID6bc1fc8b-ccb9-49c8-91ab-631b975721f9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID6bc1fc8b-ccb9-49c8-91ab-631b975721f9"}},{"type":"ServiceEndpoint","id":"EID480f8d35-b75c-4d2b-b193-52ba9bcae7c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID618755e9-4569-4382-a6d6-b8bcb6665ff5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID618755e9-4569-4382-a6d6-b8bcb6665ff5"}},{"type":"GetParameter","id":"EIDe4d6a003-f284-48c2-a91f-c637f5696900","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID429eb302-e92f-4483-ba88-f32f484cf62e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID429eb302-e92f-4483-ba88-f32f484cf62e"}},{"type":"ServiceResponse","id":"EIDb9ab51cd-e815-4c61-be7d-74487a9f1752","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDb9ab51cd-e815-4c61-be7d-74487a9f1752"}},{"type":"ServiceResponse","id":"EID33818722-8cc6-412f-8e94-085c50df6c90","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID33818722-8cc6-412f-8e94-085c50df6c90"}},{"type":"Message","id":"EID2638b651-293e-4558-a269-93e3de5d4803","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID2638b651-293e-4558-a269-93e3de5d4803"}},{"type":"ServiceResponse","id":"EID0887b79f-f3c0-45c1-92e2-a061531129a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID0887b79f-f3c0-45c1-92e2-a061531129a2"}},{"type":"ServiceEndpoint","id":"EID74425ccc-afd0-4318-8f35-681b81cadf12","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDae794335-63f6-4b8f-a521-408eb8bcced9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDae794335-63f6-4b8f-a521-408eb8bcced9"}},{"type":"GetParameter","id":"EID8bac2b73-64be-44d4-872f-2f71a7753cb0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDc32f1612-e921-4b72-9fbd-010cb44db91e","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDc32f1612-e921-4b72-9fbd-010cb44db91e"}},{"type":"ServiceResponse","id":"EIDa7104e52-353e-4ad6-830f-9b2348b5f937","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDa7104e52-353e-4ad6-830f-9b2348b5f937"}},{"type":"LogFile","id":"EID030ed077-ada7-4959-867b-e43c1f68b0b4","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID030ed077-ada7-4959-867b-e43c1f68b0b4"}},{"type":"Message","id":"EID663099ee-b8ef-44a1-8b0b-04d3f8db8ae6","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID663099ee-b8ef-44a1-8b0b-04d3f8db8ae6"}},{"type":"ServiceEndpoint","id":"EID340f9678-8cf6-461a-846c-de46108617a0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID6557c906-2949-486f-adfe-bf44e691f5e4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EIDefcf1c55-788a-4bf0-a6e5-c5fbe51e7aa5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDefcf1c55-788a-4bf0-a6e5-c5fbe51e7aa5"}},{"type":"GetParameter","id":"EIDd9d9065b-92c9-48e4-b9be-b7f6a126cc51","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID7ebd57ac-0b3e-4b61-ae15-24e455a6cbdb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID7ebd57ac-0b3e-4b61-ae15-24e455a6cbdb"}},{"type":"ServiceResponse","id":"EID08533b56-9150-4282-b189-b9897686627b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID08533b56-9150-4282-b189-b9897686627b"}},{"type":"Message","id":"EID62b3e03f-a50d-42b4-8654-27b9b59d896c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID62b3e03f-a50d-42b4-8654-27b9b59d896c"}},{"type":"ServiceResponse","id":"EID30e78332-881e-4758-a9cc-c20ad075892c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID30e78332-881e-4758-a9cc-c20ad075892c"}},{"type":"ServiceResponse","id":"EIDe0827896-6da6-49fe-ae09-b536bddf6236","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDe0827896-6da6-49fe-ae09-b536bddf6236"}},{"type":"ServiceResponse","id":"EID774adbb1-b7b6-497a-9759-7fe9519e577e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID774adbb1-b7b6-497a-9759-7fe9519e577e"}},{"type":"Message","id":"EIDd3e2fb98-f383-4521-8cd3-3c17425d1421","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd3e2fb98-f383-4521-8cd3-3c17425d1421"}},{"type":"ServiceEndpoint","id":"EIDe243fb12-3eb8-4c3d-b7c1-6010a2fc6ed5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDc130f0aa-4fed-4a55-98a3-eabd2e5b94d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDc130f0aa-4fed-4a55-98a3-eabd2e5b94d6"}},{"type":"ServiceResponse","id":"EIDf3f9f918-2451-48fb-aa4a-090b309825bf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDf3f9f918-2451-48fb-aa4a-090b309825bf"}},{"type":"GetParameter","id":"EIDb1fbd21a-f2b7-4971-8cc8-00cd1e9a8de5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDdaace8df-a24e-4a13-b2f6-dcbc0350b3dc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDdaace8df-a24e-4a13-b2f6-dcbc0350b3dc"}},{"type":"Message","id":"EIDe9b580b0-fd9e-4599-ab57-949950a696c3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDe9b580b0-fd9e-4599-ab57-949950a696c3"}},{"type":"ServiceEndpoint","id":"EID4566e083-9663-48a9-a3ce-9ec81964da13","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa80636af-c170-4cbf-9c8f-af10f5c8831d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDa80636af-c170-4cbf-9c8f-af10f5c8831d"}},{"type":"GetParameter","id":"EID7071bb13-7ea0-4530-986f-2fd87b9d2dcf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID2258458c-8513-43c3-94cf-bb43a0d2d89e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID9a822e22-79be-486c-b89b-4268f8e5100b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID9a822e22-79be-486c-b89b-4268f8e5100b"}},{"type":"ServiceEndpoint","id":"EIDe5abe546-7dca-4050-9e64-ce1b3165496f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID95c65bbb-f551-4d1a-9056-ef003b26a8bb","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID95c65bbb-f551-4d1a-9056-ef003b26a8bb"}},{"type":"GetParameter","id":"EIDd46bb728-4ded-476d-9c7d-6a4a4b405d3f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID133369d9-6460-4f87-8ccb-580092d7b74c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID133369d9-6460-4f87-8ccb-580092d7b74c"}},{"type":"Message","id":"EID29786666-7080-43cd-9aba-db1782b9f851","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID29786666-7080-43cd-9aba-db1782b9f851"}},{"type":"GetParameter","id":"EIDc5e976ed-b0ec-4d59-b619-939c300e486c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDe23112cf-8db8-4cb8-a58e-63e6c0d4cd3d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID3bdfbf3f-15e7-4d4c-a7d1-4973815da9d3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID3bdfbf3f-15e7-4d4c-a7d1-4973815da9d3"}},{"type":"GetParameter","id":"EID3fbc7f81-7745-49e5-82ce-868a69d27f26","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID1e136243-7fa9-4e4b-b3c1-a288086425c8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID1678a2ba-fe55-4329-b642-d5bf525e4460","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID1678a2ba-fe55-4329-b642-d5bf525e4460"}},{"type":"Message","id":"EID750327fc-fa3a-47d6-9a42-d7f1b4641fd6","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID750327fc-fa3a-47d6-9a42-d7f1b4641fd6"}},{"type":"GetParameter","id":"EID948b0c24-d7ed-4841-8fc6-36ee289eaad2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID572ed84a-eaf2-4d13-9646-5bec6a3d8693","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID572ed84a-eaf2-4d13-9646-5bec6a3d8693"}},{"type":"GetParameter","id":"EID033b9b3b-2dc9-453b-8351-acd06c081e54","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3edb90de-5c5b-472f-aeae-00dc4b346254","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID42e4b90f-3bcd-4ee2-ae8b-28d5a909330b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID99c3d680-fe81-4fca-ab68-4c1ba681220c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID99c3d680-fe81-4fca-ab68-4c1ba681220c"}},{"type":"Message","id":"EID594c0e3d-bcc5-47bd-98ab-8797509c0252","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID594c0e3d-bcc5-47bd-98ab-8797509c0252"}},{"type":"ServiceResponse","id":"EIDf5bc61a9-05ff-411b-8cb5-7fd82b0203e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDf5bc61a9-05ff-411b-8cb5-7fd82b0203e4"}},{"type":"Message","id":"EID91509428-b4b8-4e13-9b58-c97916b855a5","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID91509428-b4b8-4e13-9b58-c97916b855a5"}},{"type":"Message","id":"EIDe65f7200-4b2f-41e3-a96c-3f0543770b4a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDe65f7200-4b2f-41e3-a96c-3f0543770b4a"}},{"type":"ServiceEndpoint","id":"EIDc952802e-74c1-4d4f-98dd-8a0c6f199c49","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDce667cdf-7809-4e56-9979-c0c27e2c1ff3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDce667cdf-7809-4e56-9979-c0c27e2c1ff3"}},{"type":"Message","id":"EIDd8057b5f-9bdc-4a9d-96f6-8a4efb505212","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd8057b5f-9bdc-4a9d-96f6-8a4efb505212"}},{"type":"ServiceEndpoint","id":"EID9dc40c4d-ce5c-409c-a64a-145be7f23ba3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDda93bae7-c45a-4ea3-a1c3-d37b75b57b20","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID2fbf658c-0b1c-4999-bbc6-08255fee7f66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDb8f4b3cd-e7a9-4a36-80aa-fb9f7818ebee","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDb8f4b3cd-e7a9-4a36-80aa-fb9f7818ebee"}},{"type":"Message","id":"EID1a986391-d060-4bd7-a249-16654f2b07a3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID1a986391-d060-4bd7-a249-16654f2b07a3"}},{"type":"ServiceResponse","id":"EID6773ca23-75e3-4ad2-8ad9-8a24717411a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID6773ca23-75e3-4ad2-8ad9-8a24717411a2"}},{"type":"ServiceResponse","id":"EIDef3cf282-5f3b-43dc-9b98-fa636a15b387","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDef3cf282-5f3b-43dc-9b98-fa636a15b387"}},{"type":"ServiceResponse","id":"EIDf7530bf8-ecf1-4009-8d10-10614f101bc3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDf7530bf8-ecf1-4009-8d10-10614f101bc3"}},{"type":"GetParameter","id":"EID4d725f4d-6990-4fd1-9749-aa4fb0036f14","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID13455f3d-36e0-47a6-9bed-dc2a35d95663","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID04f55f1b-2eb3-430e-9c71-d8034a6e7bd8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDab3445ec-308e-40d8-a50a-426d8f31e854","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDf1b04d41-55c9-4475-8056-67998718479d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDbb731b10-7e7e-4f06-877f-3441968321c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDd0006387-d93e-4221-8c9c-e02df8512d56","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd0006387-d93e-4221-8c9c-e02df8512d56"}},{"type":"Message","id":"EID557fd894-896c-4952-8352-26423ced2307","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID557fd894-896c-4952-8352-26423ced2307"}},{"type":"ServiceResponse","id":"EIDfd423fbd-5ff9-43bf-afdf-9a4cfbe61a7c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDfd423fbd-5ff9-43bf-afdf-9a4cfbe61a7c"}},{"type":"Message","id":"EIDa1519fc7-d2f1-4225-93ce-ef9971720986","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDa1519fc7-d2f1-4225-93ce-ef9971720986"}},{"type":"GetParameter","id":"EIDfd5bbdc2-f307-460f-9f38-b86ff894d5ee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID6b2681a8-ac9a-44f8-b57b-c67c70c3175b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID6b2681a8-ac9a-44f8-b57b-c67c70c3175b"}},{"type":"GetParameter","id":"EID185d565b-0156-4cb1-b2c6-3813b6f5f869","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID97c64f8e-c3cf-4a5a-abb7-b28b6d712ec3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDeea8dd9b-3688-41b6-a01d-5ef966dbe564","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4f055fdc-e189-4dd7-ba70-32e2f6fd0415","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDccd86ab0-c870-48cf-9bfe-51b55d69fb98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID193f829c-10a6-4792-8e74-a8e350a6808b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDf7deafe6-0d18-40f7-bfa3-db476526419a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7e64000c-e646-4dfa-9fbd-02cacdd86eab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID7e64000c-e646-4dfa-9fbd-02cacdd86eab"}},{"type":"Message","id":"EID3ab6d182-8c0f-4cda-84e0-ae2955a0bed3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID3ab6d182-8c0f-4cda-84e0-ae2955a0bed3"}},{"type":"ServiceResponse","id":"EIDecfb592a-213c-4fcf-937f-48711f6571c2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDecfb592a-213c-4fcf-937f-48711f6571c2"}},{"type":"ServiceResponse","id":"EIDbe6d03ca-485b-48db-9205-1c85c0b19e0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDbe6d03ca-485b-48db-9205-1c85c0b19e0f"}},{"type":"ServiceEndpoint","id":"EID184169aa-7677-478a-ada7-4b7b58aea149","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID427fcc28-8564-48d9-8a56-ba4b2f81e730","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID76af43f6-f44b-4915-9d1e-2dd3a0afc899","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID76af43f6-f44b-4915-9d1e-2dd3a0afc899"}},{"type":"Message","id":"EIDbc89c7fd-3821-48d0-a489-97b2cfbfc050","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDbc89c7fd-3821-48d0-a489-97b2cfbfc050"}},{"type":"Message","id":"EIDf9d04031-87e0-4c1d-bca6-6dbbdfa79607","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDf9d04031-87e0-4c1d-bca6-6dbbdfa79607"}},{"type":"ServiceResponse","id":"EID79e7f231-eb94-44c6-9d12-73fec3dda4c1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID79e7f231-eb94-44c6-9d12-73fec3dda4c1"}},{"type":"ServiceResponse","id":"EIDb94cd2f6-c94b-4b70-bf43-80412d507d0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDb94cd2f6-c94b-4b70-bf43-80412d507d0f"}},{"type":"GetParameter","id":"EID9254e627-bcf8-4720-9e6c-884fba42a080","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDda04b0f7-ed4b-42d0-bdf8-efb7fb5673fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDcc2f6153-8848-4473-b36c-6d2736cb1220","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDcc2f6153-8848-4473-b36c-6d2736cb1220"}},{"type":"ServiceResponse","id":"EID9b45d8c3-5432-4559-9007-e1805ccf8e64","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID9b45d8c3-5432-4559-9007-e1805ccf8e64"}},{"type":"Message","id":"EIDbb7c51d2-5f5e-4f77-88bd-7f47cd800006","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDbb7c51d2-5f5e-4f77-88bd-7f47cd800006"}},{"type":"GetParameter","id":"EID2503d490-a829-46e8-b56e-7717c85641f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDab37d5b3-a2e1-40cd-8972-aef21459c3db","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDab37d5b3-a2e1-40cd-8972-aef21459c3db"}},{"type":"GetParameter","id":"EIDb8d9dbe1-4e7a-4fff-9233-b74d322ea384","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID7310ccc6-de1a-4bd4-852e-52190a8939a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID98ec0570-4cb9-44cc-8e81-4deba16ed6c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDd90c3042-2a50-4190-95ea-b9cdcc3c724b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd90c3042-2a50-4190-95ea-b9cdcc3c724b"}},{"type":"ServiceEndpoint","id":"EIDda1b9d1b-f8c4-4db7-86df-7108ce96db32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID53334a83-bbf5-4fb4-b37c-d7ab854896dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDd9fcc632-9c43-4df2-b654-878b5fe4e3d1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd9fcc632-9c43-4df2-b654-878b5fe4e3d1"}},{"type":"ServiceEndpoint","id":"EID94b24b34-0929-4b89-8729-e803dd1ae61c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID986ffc5e-7a45-403f-a47d-f5480a3512cd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID7f3c15e0-f01e-42fe-bf1c-856db0ef5ee6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDd815817e-9620-41df-94bd-cd073166dc57","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd815817e-9620-41df-94bd-cd073166dc57"}},{"type":"ServiceResponse","id":"EID20d54230-6d35-4f1a-ad85-1f99b7af6b61","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID20d54230-6d35-4f1a-ad85-1f99b7af6b61"}},{"type":"ServiceResponse","id":"EIDb4e5e270-5a9b-498d-b286-8562b5fc9d4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDb4e5e270-5a9b-498d-b286-8562b5fc9d4f"}},{"type":"Message","id":"EIDd94f2953-75be-4b23-9f81-6ecec7f50c1e","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDd94f2953-75be-4b23-9f81-6ecec7f50c1e"}},{"type":"Message","id":"EIDabd55d4a-305a-4bf7-84c8-361f5d20f4fd","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EIDabd55d4a-305a-4bf7-84c8-361f5d20f4fd"}},{"type":"GetParameter","id":"EID01f9925f-235b-40e6-837f-cba50e0b879c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9kb3dubG9hZHMva3JtX21hcmllbmVyYXBwb3J0YWdlZWVuaGVkZW5fZXUyMDE4X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EIDce494568-2afa-4bb5-ac01-abd981ae7626","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID95bce398-6748-4de2-9663-aba85d13fb12","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDdf9e8275-90c2-480e-9b33-e27cfaf42875","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID05f5348f-ba85-44ee-968d-c86b301064da","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDecb150f3-f070-42b6-9cc4-577b3d7833fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDca521b6f-6fc1-4957-aa03-9276ed52ffa9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID0d07f964-3bc9-433c-aa88-2c81c2ad0861","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID0d07f964-3bc9-433c-aa88-2c81c2ad0861"}},{"type":"GetParameter","id":"EID848ffc2a-46d4-484f-ab3f-1d3aa9ab7c69","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID9edafcc9-5e45-4b21-84a4-9529caf94b4a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDf851cb1f-2ef6-4bc8-929b-dc01d89c68df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID9a24d9d5-65e8-46cb-820d-e5a8b980e50d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID9a24d9d5-65e8-46cb-820d-e5a8b980e50d"}},{"type":"GetParameter","id":"EID743c12e5-2814-4516-b211-e3bc785f7424","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID33292371-cbcc-4656-92ad-fe3dfe86992a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID3aa69c9b-6958-4e51-b5d8-8ef4fb1bcbb1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID88200048-008c-40aa-add2-d43e61e2e5ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1ef621eb-aac3-4c8f-8194-affd0b4d1efe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID1ef621eb-aac3-4c8f-8194-affd0b4d1efe"}},{"type":"GetParameter","id":"EID500a82ab-5bbc-4368-8a06-e688e1aa4fab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDb10c2127-7a72-47a5-a087-b18555ec8072","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID830512da-1651-4461-80e4-61235204602c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID1bcc32e1-0c01-409c-9537-67f9d36b6e91","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID1bcc32e1-0c01-409c-9537-67f9d36b6e91"}},{"type":"Message","id":"EID0e152b06-26d4-40b3-a47e-1f081e76ebd9","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID0e152b06-26d4-40b3-a47e-1f081e76ebd9"}},{"type":"ServiceResponse","id":"EID573a1713-46da-47a8-92c8-498c886ba9d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID573a1713-46da-47a8-92c8-498c886ba9d4"}},{"type":"ServiceEndpoint","id":"EIDefd98410-5a1d-4f8f-bdc1-79d7bedab3cc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1ff04305-a5a8-4fd6-b766-f85c78fcd025","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID1ff04305-a5a8-4fd6-b766-f85c78fcd025"}},{"type":"GetParameter","id":"EID75a58d09-f667-4e5f-a5cd-5df2ae6aa939","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID10281d19-4bb6-4c97-a863-1d533b830d62","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID10281d19-4bb6-4c97-a863-1d533b830d62"}},{"type":"ServiceResponse","id":"EID264c0cc8-b67f-4c2e-b7fa-b66407cabf7b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID700f2d4f-ace8-4722-8abf-d09e04eb2684/Attachments/EID264c0cc8-b67f-4c2e-b7fa-b66407cabf7b"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:09:25Z","duration":16020,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:10:13.131 [print] EID2b27741c-b36b-41ef-8773-554f0e1c2b23
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:13.131 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:10:13.131 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:10:13.131 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:13.131 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2b27741c-b36b-41ef-8773-554f0e1c2b23.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:10:13.131 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2b27741c-b36b-41ef-8773-554f0e1c2b23.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:10:13.132 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2b27741c-b36b-41ef-8773-554f0e1c2b23/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.002
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.008
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:10:13.149 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:10:13.149 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:51.982
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:43.483 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.027
11:06:43.484 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:06:49.508 response time in milliseconds: 5265.16
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:48 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:46 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/5b0a94c9-969e-418e-9ffe-86bf617c5cab.json","testRuns":{"TestRun":{"id":"EID5b0a94c9-969e-418e-9ffe-86bf617c5cab","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:46.305Z","testTasks":{"TestTask":{"id":"EID5a52191d-4d6f-4e53-95fa-6a902b5c0d90","parent":{"ref":"EID5b0a94c9-969e-418e-9ffe-86bf617c5cab"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDf3f9cfc9-1744-4b86-b60b-3bae80c27c29"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDf3f9cfc9-1744-4b86-b60b-3bae80c27c29","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:43.942Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:45.798Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:49.511 [print] EID5b0a94c9-969e-418e-9ffe-86bf617c5cab
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:49.511 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:49.512 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.002
11:06:49.514 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/5b0a94c9-969e-418e-9ffe-86bf617c5cab.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:49.515 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.001
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:06:49.516 [print] statuspath TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab
* print 'progresspath ', progresspath 0.000
11:06:49.516 [print] progresspath  TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
Given path progresspath 0.000
When method GET 0.528
11:06:49.517 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:50.044 response time in milliseconds: 523.48
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:49 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:06:50.045 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)",
    "28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:06:46 - Preparing 1 Test Task:",
    "28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)",
    "28.10.2020 11:06:46 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:06:46 -  with parameters: ",
    "28.10.2020 11:06:46 - etf.testcases = *",
    "28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:06:46 - Setting state to CREATED",
    "28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z",
    "28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:06:48 - Project Properties: ",
    "28.10.2020 11:06:48 - etf.testcases - * ",
    "28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:06:48 - username -  ",
    "28.10.2020 11:06:48 - authUser -  ",
    "28.10.2020 11:06:48 - authMethod - basic ",
    "28.10.2020 11:06:48 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:45.421
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
11:06:50.046 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:50.549 response time in milliseconds: 502.67
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:50 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized"]}

11:06:50.550 retry condition not satisfied: response.val == response.max
11:06:50.550 sleeping before retry #1
11:06:55.551 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:56.066 response time in milliseconds: 514.59
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized"]}

11:06:56.067 retry condition not satisfied: response.val == response.max
11:06:56.067 sleeping before retry #2
11:07:01.068 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:01.588 response time in milliseconds: 520.11
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:07:01 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:07:01.588 retry condition not satisfied: response.val == response.max
11:07:01.588 sleeping before retry #3
11:07:06.590 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:07.109 response time in milliseconds: 517.63
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:07:07 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"86","max":"87","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:07:07.109 retry condition not satisfied: response.val == response.max
11:07:07.109 sleeping before retry #4
11:07:12.111 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:12.635 response time in milliseconds: 523.74
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:07:12 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:12.638 retry condition not satisfied: response.val == response.max
11:07:12.638 sleeping before retry #5
11:07:17.640 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:18.160 response time in milliseconds: 520.33
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:07:18 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:18.161 retry condition not satisfied: response.val == response.max
11:07:18.161 sleeping before retry #6
11:07:23.162 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:23.675 response time in milliseconds: 512.05
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:07:23 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:23.681 retry condition not satisfied: response.val == response.max
11:07:23.681 sleeping before retry #7
11:07:28.682 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:29.198 response time in milliseconds: 515.44
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:07:29 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:29.199 retry condition not satisfied: response.val == response.max
11:07:29.199 sleeping before retry #8
11:07:34.200 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:34.721 response time in milliseconds: 520.14
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:07:34 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:34.722 retry condition not satisfied: response.val == response.max
11:07:34.722 sleeping before retry #9
11:07:39.723 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:40.245 response time in milliseconds: 520.50
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:07:40 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:40.250 retry condition not satisfied: response.val == response.max
11:07:40.250 sleeping before retry #10
11:07:45.252 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:45.782 response time in milliseconds: 526.85
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:07:45 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:45.786 retry condition not satisfied: response.val == response.max
11:07:45.786 sleeping before retry #11
11:07:50.787 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:51.299 response time in milliseconds: 511.35
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:07:51 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:51.306 retry condition not satisfied: response.val == response.max
11:07:51.306 sleeping before retry #12
11:07:56.308 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:56.836 response time in milliseconds: 527.31
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:07:56 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:56.836 retry condition not satisfied: response.val == response.max
11:07:56.836 sleeping before retry #13
11:08:01.837 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:02.353 response time in milliseconds: 515.44
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:08:02 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:02.356 retry condition not satisfied: response.val == response.max
11:08:02.356 sleeping before retry #14
11:08:07.357 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:07.877 response time in milliseconds: 518.56
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:08:07 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:07.877 retry condition not satisfied: response.val == response.max
11:08:07.877 sleeping before retry #15
11:08:12.878 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:13.390 response time in milliseconds: 510.75
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:08:13 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:13.396 retry condition not satisfied: response.val == response.max
11:08:13.396 sleeping before retry #16
11:08:18.397 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:18.907 response time in milliseconds: 509.51
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:08:18 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:18.908 retry condition not satisfied: response.val == response.max
11:08:18.908 sleeping before retry #17
11:08:23.909 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:24.429 response time in milliseconds: 519.48
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:08:24 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:24.429 retry condition not satisfied: response.val == response.max
11:08:24.429 sleeping before retry #18
11:08:29.430 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:29.945 response time in milliseconds: 513.63
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:08:29 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:29.945 retry condition not satisfied: response.val == response.max
11:08:29.951 sleeping before retry #19
11:08:34.952 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:35.465 response time in milliseconds: 511.95
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:08:35 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 -  TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 -  with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username -  ","28.10.2020 11:06:48 - authUser -  ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:35.466 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.407
* print "testing url:" + metadata.url 0.002
11:04:45.350 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 0.405
11:04:45.359 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:45.753 response time in milliseconds: 393.91
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:45 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232B30FC0C54
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
1.246
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 1.244
11:04:45.770 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:47.011 response time in milliseconds: 1240.25
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:46 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642232B6A073764
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:04:47.013 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:15.407
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:41.595 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 19.467
11:15:41.596 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}

11:16:01.055 response time in milliseconds: 18718.79
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:00 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:15:56 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e5747c96-0de3-452a-8d3f-9b753acc782e.json","testRuns":{"TestRun":{"id":"EIDe5747c96-0de3-452a-8d3f-9b753acc782e","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:15:54.093Z","testTasks":{"TestTask":{"id":"EID0321b080-bce6-445e-9e38-96290c0de808","parent":{"ref":"EIDe5747c96-0de3-452a-8d3f-9b753acc782e"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1bd895b1-3af9-491b-a847-58340b91720e"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1bd895b1-3af9-491b-a847-58340b91720e","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:15:42.034Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:15:50.389Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.003
11:16:01.066 [print] EIDe5747c96-0de3-452a-8d3f-9b753acc782e
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:01.067 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:01.068 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:16:01.068 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e5747c96-0de3-452a-8d3f-9b753acc782e.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:01.069 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:16:01.070 [print] statuspath TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e
* print 'progresspath ', progresspath 0.000
11:16:01.070 [print] progresspath  TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
Given path progresspath 0.000
When method GET 0.512
11:16:01.071 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:01.582 response time in milliseconds: 510.36
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:16:01 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:16:01.582 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)",
    "28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:15:54 - Preparing 1 Test Task:",
    "28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)",
    "28.10.2020 11:15:54 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:15:54 -  with parameters: ",
    "28.10.2020 11:15:54 - etf.testcases = *",
    "28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:15:54 - Setting state to CREATED",
    "28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z",
    "28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:15:58 - Project Properties: ",
    "28.10.2020 11:15:58 - etf.testcases - * ",
    "28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ",
    "28.10.2020 11:15:58 - username -  ",
    "28.10.2020 11:15:58 - authUser -  ",
    "28.10.2020 11:15:58 - authMethod - basic ",
    "28.10.2020 11:15:58 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 46.232
11:16:01.583 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:02.100 response time in milliseconds: 516.84
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:16:02 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized"]}

11:16:02.100 retry condition not satisfied: response.val == response.max
11:16:02.100 sleeping before retry #1
11:16:07.101 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:07.619 response time in milliseconds: 516.91
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:16:07 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized"]}

11:16:07.619 retry condition not satisfied: response.val == response.max
11:16:07.619 sleeping before retry #2
11:16:12.620 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:13.132 response time in milliseconds: 511.65
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:16:13 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized"]}

11:16:13.139 retry condition not satisfied: response.val == response.max
11:16:13.139 sleeping before retry #3
11:16:18.140 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:18.655 response time in milliseconds: 510.65
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:16:18 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized"]}

11:16:18.656 retry condition not satisfied: response.val == response.max
11:16:18.656 sleeping before retry #4
11:16:23.656 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:24.257 response time in milliseconds: 600.09
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:16:24 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized","28.10.2020 11:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:16:24.257 retry condition not satisfied: response.val == response.max
11:16:24.257 sleeping before retry #5
11:16:29.258 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:29.766 response time in milliseconds: 507.59
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:16:29 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"167","max":"168","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized","28.10.2020 11:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:16:29.766 retry condition not satisfied: response.val == response.max
11:16:29.766 sleeping before retry #6
11:16:34.767 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:35.290 response time in milliseconds: 522.22
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:16:35 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized","28.10.2020 11:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:16:30 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:16:32 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:16:34 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:16:35.290 retry condition not satisfied: response.val == response.max
11:16:35.290 sleeping before retry #7
11:16:40.291 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:40.808 response time in milliseconds: 516.20
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:16:40 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:15:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:54 UTC 2020)","28.10.2020 11:15:54 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:54 - Preparing 1 Test Task:","28.10.2020 11:15:54 -  TestTask 1 (0321b080-bce6-445e-9e38-96290c0de808)","28.10.2020 11:15:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:54 -  with parameters: ","28.10.2020 11:15:54 - etf.testcases = *","28.10.2020 11:15:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:54 - Setting state to CREATED","28.10.2020 11:15:54 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:56 - Starting TestRun.e5747c96-0de3-452a-8d3f-9b753acc782e at 2020-10-28T11:15:58Z","28.10.2020 11:15:58 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:58 - Project Properties: ","28.10.2020 11:15:58 - etf.testcases - * ","28.10.2020 11:15:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","28.10.2020 11:15:58 - username -  ","28.10.2020 11:15:58 - authUser -  ","28.10.2020 11:15:58 - authMethod - basic ","28.10.2020 11:15:58 - TestRunTask initialized","28.10.2020 11:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:16:30 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:16:32 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:16:34 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:16:40.808 retry condition not satisfied: response.val == response.max
11:16:40.808 sleeping before retry #8
11:16:45.809 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:47.815 response time in milliseconds: 2005.23
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:16:47 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:16:47.815 retry condition satisfied
* print response 0.000
11:16:47.815 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 9.166
11:16:47.816 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:56.968 response time in milliseconds: 7958.32
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Cache-Control: public, max-age=120
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:16:55 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Last-Modified: Wed, 28 Oct 2020 11:16:47 GMT
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e5747c96-0de3-452a-8d3f-9b753acc782e.json","testRuns":{"TestRun":{"id":"EIDe5747c96-0de3-452a-8d3f-9b753acc782e","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:15:54.093Z","testTasks":{"TestTask":{"id":"EID0321b080-bce6-445e-9e38-96290c0de808","parent":{"ref":"EIDe5747c96-0de3-452a-8d3f-9b753acc782e"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1bd895b1-3af9-491b-a847-58340b91720e"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID2b822d95-7619-456c-83a2-0fc1d7de5f4f"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1bd895b1-3af9-491b-a847-58340b91720e","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:15:42.034Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:15:50.389Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID2b822d95-7619-456c-83a2-0fc1d7de5f4f","testObject":{"ref":"EID1bd895b1-3af9-491b-a847-58340b91720e"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eebf38a-0175-1000-e760-655153cdd313","testCaseResults":{"TestCaseResult":[{"id":"EID6eebf38a-0175-1000-23dc-38f1de116df1","testStepResults":{"TestStepResult":[{"id":"EID6eebf38b-0175-1000-aa69-dba501827ca4","parent":{"ref":"EID6eebf38a-0175-1000-23dc-38f1de116df1"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:15:58Z","duration":61,"status":"PASSED"},{"id":"EID6eebf3c8-0175-1000-03b7-3b4456aabc6a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eebf52a-0175-1000-9642-4f421c1f6a51","parent":{"ref":"EID6eebf3c8-0175-1000-03b7-3b4456aabc6a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6eebf52b-0175-1000-565e-93063c6ec76a","parent":{"ref":"EID6eebf3c8-0175-1000-03b7-3b4456aabc6a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6eebf52b-0175-1000-43d7-8b44f22165d6","parent":{"ref":"EID6eebf3c8-0175-1000-03b7-3b4456aabc6a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6eebf52b-0175-1000-d6cb-2c131b91272a","parent":{"ref":"EID6eebf3c8-0175-1000-03b7-3b4456aabc6a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:15:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb8dab605-af95-4143-adaf-70fe0c7007ab"},{"ref":"EID3874a2d8-a1d4-4f49-a620-161eed46ce19"},{"ref":"EID64b7f1d8-c705-4310-b8f5-e7e5061106aa"}]},"parent":{"ref":"EID6eebf38a-0175-1000-23dc-38f1de116df1"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:15:58Z","duration":256,"status":"PASSED"}]},"parent":{"ref":"EID6eebf38a-0175-1000-e760-655153cdd313"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:15:58Z","duration":417,"status":"PASSED"},{"id":"EID6eebf52b-0175-1000-6f96-518ded339bff","testStepResults":{"TestStepResult":{"id":"EID6eebf52b-0175-1000-4b44-d34354e2ada5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eebf5e1-0175-1000-b267-9ac659377659","parent":{"ref":"EID6eebf52b-0175-1000-4b44-d34354e2ada5"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6eebf5e1-0175-1000-1b41-a011420ab96a","parent":{"ref":"EID6eebf52b-0175-1000-4b44-d34354e2ada5"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6eebf5e1-0175-1000-a1f3-52a29c83dc2c","parent":{"ref":"EID6eebf52b-0175-1000-4b44-d34354e2ada5"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID81404c09-b5a6-49cb-8976-e2d036965941"},{"ref":"EIDfb711e9a-ea45-4918-b691-16ad4b28c412"},{"ref":"EID70048533-f7d2-4752-88b9-56113730de9d"}]},"parent":{"ref":"EID6eebf52b-0175-1000-6f96-518ded339bff"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:15:58Z","duration":105,"status":"PASSED"}},"parent":{"ref":"EID6eebf38a-0175-1000-e760-655153cdd313"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:15:58Z","duration":182,"status":"PASSED"}]},"parent":{"ref":"EID2b822d95-7619-456c-83a2-0fc1d7de5f4f"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:15:58Z","duration":599,"status":"PASSED"},{"id":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3","testCaseResults":{"TestCaseResult":[{"id":"EID6eebf5e1-0175-1000-b09c-146a03230ea7","testStepResults":{"TestStepResult":[{"id":"EID6eebf5ea-0175-1000-07c3-5732b30dcfb5","parent":{"ref":"EID6eebf5e1-0175-1000-b09c-146a03230ea7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:15:59Z","duration":105,"status":"PASSED"},{"id":"EID6eebf5eb-0175-1000-3adb-abb53795945d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eebf907-0175-1000-2b0e-2becd4615939","parent":{"ref":"EID6eebf5eb-0175-1000-3adb-abb53795945d"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6eebf907-0175-1000-fbe0-5d760113e7f0","parent":{"ref":"EID6eebf5eb-0175-1000-3adb-abb53795945d"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6eebf907-0175-1000-13bd-8e149265306b","parent":{"ref":"EID6eebf5eb-0175-1000-3adb-abb53795945d"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6eebf907-0175-1000-92c7-3d3af8afde0b","parent":{"ref":"EID6eebf5eb-0175-1000-3adb-abb53795945d"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6eebf907-0175-1000-04ab-91acdb63bcf1","parent":{"ref":"EID6eebf5eb-0175-1000-3adb-abb53795945d"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:15:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3f5ebe23-67c5-41de-b40e-e8bd3ab8a218"},{"ref":"EIDbfb027ff-35b1-47f2-9b6a-d27096a40638"},{"ref":"EID310618ad-45fe-4a0c-81fe-a4f9f466b4b7"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-b09c-146a03230ea7"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:15:59Z","duration":659,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:15:59Z","duration":892,"status":"PASSED"},{"id":"EID6eebf95d-0175-1000-44d0-12b2e751f695","testStepResults":{"TestStepResult":[{"id":"EID6eebf95d-0175-1000-f90f-6e737e9bf23f","attachments":{"attachment":[{"ref":"EID5031822c-e67c-4cdd-b311-7de6417bc9ec"},{"ref":"EID6190741f-fa8f-464f-adc6-b6be3240690e"}]},"parent":{"ref":"EID6eebf95d-0175-1000-44d0-12b2e751f695"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:15:59Z","duration":569,"status":"PASSED"},{"id":"EID6eebfbee-0175-1000-f3ab-9370259e0d22","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eebff8e-0175-1000-3254-d93f2b723729","parent":{"ref":"EID6eebfbee-0175-1000-f3ab-9370259e0d22"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6eebff8e-0175-1000-89cc-f4ed178e1cad","parent":{"ref":"EID6eebfbee-0175-1000-f3ab-9370259e0d22"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6eebff8e-0175-1000-66c5-0fb0230fb2b9","parent":{"ref":"EID6eebfbee-0175-1000-f3ab-9370259e0d22"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6eebff8e-0175-1000-65b4-1ad31f490a84","parent":{"ref":"EID6eebfbee-0175-1000-f3ab-9370259e0d22"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:16:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID17d55a81-4565-4d76-a9c6-0661d45d216c"},{"ref":"EID57293281-8438-4e37-b6ba-81e7bc72066f"},{"ref":"EID56b9ca97-8449-4063-9114-1d5864ef0c32"}]},"parent":{"ref":"EID6eebf95d-0175-1000-44d0-12b2e751f695"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:16:00Z","duration":825,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:15:59Z","duration":1585,"status":"PASSED"},{"id":"EID6eebff8e-0175-1000-d242-7a06e1e91242","testStepResults":{"TestStepResult":[{"id":"EID6eebff97-0175-1000-90b5-e576c0a6ac83","attachments":{"attachment":[{"ref":"EIDa3666ee3-ca40-4c1b-b93a-b2032798c849"},{"ref":"EID9e3c62e9-2f18-49b0-9eb9-b30ed0c68e6f"}]},"parent":{"ref":"EID6eebff8e-0175-1000-d242-7a06e1e91242"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:16:01Z","duration":2206,"status":"PASSED"},{"id":"EID6eec0873-0175-1000-c302-0751bca31cb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec099a-0175-1000-921c-64a738317e84","parent":{"ref":"EID6eec0873-0175-1000-c302-0751bca31cb4"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec099a-0175-1000-4d3b-a7cc7c5ca732","parent":{"ref":"EID6eec0873-0175-1000-c302-0751bca31cb4"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec099a-0175-1000-3cd0-f2a64089bb15","parent":{"ref":"EID6eec0873-0175-1000-c302-0751bca31cb4"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec099a-0175-1000-3c7d-898306cabee1","parent":{"ref":"EID6eec0873-0175-1000-c302-0751bca31cb4"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec099a-0175-1000-f85e-7b73df14cb6c","parent":{"ref":"EID6eec0873-0175-1000-c302-0751bca31cb4"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID132700f7-0e18-4f76-9b8a-2ef90378d1c0"},{"ref":"EID4e6ef610-e801-4cbf-8f03-0f5447810edf"},{"ref":"EIDc49cc5d8-e96c-4901-a790-a02043cb0c0c"}]},"parent":{"ref":"EID6eebff8e-0175-1000-d242-7a06e1e91242"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:16:03Z","duration":183,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:16:01Z","duration":2582,"status":"PASSED"},{"id":"EID6eec09a4-0175-1000-a5e3-fb3ab80d1c03","testStepResults":{"TestStepResult":[{"id":"EID6eec09a4-0175-1000-4e3a-7450c01f4297","attachments":{"attachment":[{"ref":"EID69643501-61b0-476a-996b-1d60f593ec93"},{"ref":"EIDc8ebebdf-30bd-465f-93bc-e9c58e9bedd0"}]},"parent":{"ref":"EID6eec09a4-0175-1000-a5e3-fb3ab80d1c03"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":756,"status":"PASSED"},{"id":"EID6eec0cdd-0175-1000-5632-199243ee3243","parent":{"ref":"EID6eec09a4-0175-1000-a5e3-fb3ab80d1c03"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6eec0cdd-0175-1000-4627-47844a46d7f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec0f5f-0175-1000-c7e5-aa644ba37252","parent":{"ref":"EID6eec0cdd-0175-1000-4627-47844a46d7f7"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0f5f-0175-1000-b06b-3858346514ee","parent":{"ref":"EID6eec0cdd-0175-1000-4627-47844a46d7f7"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0f5f-0175-1000-0a22-ca6fb95790b2","parent":{"ref":"EID6eec0cdd-0175-1000-4627-47844a46d7f7"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6eec0f5f-0175-1000-7ec3-0367178aa9d7","parent":{"ref":"EID6eec0cdd-0175-1000-4627-47844a46d7f7"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2c481b70-b97d-4e2b-82ba-2b3149bfd3b5"},{"ref":"EIDa11ae6bd-f126-4f3e-8b47-f2b7f1ff58a0"},{"ref":"EID1ae47b0d-0cd2-4b34-b18f-2dac25aae640"}]},"parent":{"ref":"EID6eec09a4-0175-1000-a5e3-fb3ab80d1c03"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:16:04Z","duration":522,"status":"PASSED"},{"id":"EID6eec0f5f-0175-1000-9ffa-513add11e5d0","attachments":{"attachment":{"ref":"EIDbc9bd53a-2926-400b-989c-489576f7abb8"}},"parent":{"ref":"EID6eec09a4-0175-1000-a5e3-fb3ab80d1c03"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:16:05Z","duration":1,"status":"PASSED"},{"id":"EID6eec0f6b-0175-1000-dda7-bf1a6b269e36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1109-0175-1000-9a58-0f34042b3b58","parent":{"ref":"EID6eec0f6b-0175-1000-dda7-bf1a6b269e36"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1109-0175-1000-c2f3-c06f4373d030","parent":{"ref":"EID6eec0f6b-0175-1000-dda7-bf1a6b269e36"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1109-0175-1000-2414-4a1836b19ac4","parent":{"ref":"EID6eec0f6b-0175-1000-dda7-bf1a6b269e36"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1109-0175-1000-056a-87fd6cfa773d","parent":{"ref":"EID6eec0f6b-0175-1000-dda7-bf1a6b269e36"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1109-0175-1000-2976-1b972221f136","parent":{"ref":"EID6eec0f6b-0175-1000-dda7-bf1a6b269e36"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbe40becb-32a9-4434-a149-833a061402c6"},{"ref":"EIDa7e2ed55-71fe-4c2e-9642-c42dcc1d6e77"},{"ref":"EIDce0282be-28fc-4004-896f-77575314fa3f"}]},"parent":{"ref":"EID6eec09a4-0175-1000-a5e3-fb3ab80d1c03"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:16:05Z","duration":281,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:16:04Z","duration":1893,"status":"PASSED"},{"id":"EID6eec110a-0175-1000-f663-fb35729a9e1b","testStepResults":{"TestStepResult":[{"id":"EID6eec110a-0175-1000-592a-963847f79c88","attachments":{"attachment":[{"ref":"EID140c5c03-af96-4383-bd6b-fd247543fc3b"},{"ref":"EID97bb84d8-4f32-4473-a456-899380e2fe74"}]},"parent":{"ref":"EID6eec110a-0175-1000-f663-fb35729a9e1b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:16:06Z","duration":350,"status":"PASSED"},{"id":"EID6eec1299-0175-1000-941b-6de9496fc805","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec170e-0175-1000-3e8e-d478e5ff35a0","parent":{"ref":"EID6eec1299-0175-1000-941b-6de9496fc805"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec170e-0175-1000-3427-4011c62d3524","parent":{"ref":"EID6eec1299-0175-1000-941b-6de9496fc805"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec170e-0175-1000-d269-5638ef5b2c08","parent":{"ref":"EID6eec1299-0175-1000-941b-6de9496fc805"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec170e-0175-1000-72a6-13cd55957a46","parent":{"ref":"EID6eec1299-0175-1000-941b-6de9496fc805"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8939b0d-9510-401e-958e-948d9ab4d86e"},{"ref":"EID6ee5f4a2-672f-4609-b09c-3365b91ea96d"},{"ref":"EID61c4820d-b788-4218-85c6-043927bd7df4"}]},"parent":{"ref":"EID6eec110a-0175-1000-f663-fb35729a9e1b"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:16:06Z","duration":956,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:16:06Z","duration":1540,"status":"PASSED"},{"id":"EID6eec170e-0175-1000-6a11-5059d4fe06bd","testStepResults":{"TestStepResult":[{"id":"EID6eec170e-0175-1000-fffa-dfa65ca75fcd","attachments":{"attachment":[{"ref":"EID7da07c75-3151-49a5-95d5-69921075e5a5"},{"ref":"EID420c8b0b-22ea-49ab-a2f9-017bfcb6f82f"}]},"parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":1654,"status":"PASSED"},{"id":"EID6eec1dab-0175-1000-1bc8-d2a1e4475e46","parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1dab-0175-1000-d4c1-611900453be9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2405-0175-1000-5bf8-e7e117ade408","parent":{"ref":"EID6eec1dab-0175-1000-d4c1-611900453be9"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2405-0175-1000-6638-b3552ebb3c09","parent":{"ref":"EID6eec1dab-0175-1000-d4c1-611900453be9"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2405-0175-1000-004d-145959320ad8","parent":{"ref":"EID6eec1dab-0175-1000-d4c1-611900453be9"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2405-0175-1000-b4fa-0e42a2dc518e","parent":{"ref":"EID6eec1dab-0175-1000-d4c1-611900453be9"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID93cdc8b0-ad4c-4eb4-a258-3385ad675a0e"},{"ref":"EID66be07c8-de79-47f8-badb-fc363cc4153b"},{"ref":"EID9fbb4b61-33bd-42a4-aabc-aa4b9ee8f233"}]},"parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:16:09Z","duration":1523,"status":"PASSED"},{"id":"EID6eec2406-0175-1000-dd9d-d6593dfa24d2","attachments":{"attachment":{"ref":"EIDe224e823-51c5-4134-aeb9-156188d98a69"}},"parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:16:10Z","duration":1,"status":"PASSED"},{"id":"EID6eec2412-0175-1000-c8ad-f1c52fb4b5c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec24d6-0175-1000-a270-0d2a17320a68","parent":{"ref":"EID6eec2412-0175-1000-c8ad-f1c52fb4b5c1"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec24d6-0175-1000-2dd2-4142204c3907","parent":{"ref":"EID6eec2412-0175-1000-c8ad-f1c52fb4b5c1"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec24d6-0175-1000-4bc9-6a2f13559ebd","parent":{"ref":"EID6eec2412-0175-1000-c8ad-f1c52fb4b5c1"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID455470a9-4eb9-4a40-b883-4b104c6b1450"},{"ref":"EID8f9ff3d1-9c07-42fd-8990-83377291b4a8"},{"ref":"EID63e0dd00-5685-4b16-aa7f-b6ee118d1e6c"}]},"parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:16:10Z","duration":125,"status":"PASSED"},{"id":"EID6eec24d6-0175-1000-eac8-136277e1d153","attachments":{"attachment":{"ref":"EID51db39c6-1a83-4a1d-972e-e0ed8b1fef94"}},"parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":1,"status":"PASSED"},{"id":"EID6eec24e4-0175-1000-eb78-5046e5aec533","attachments":{"attachment":{"ref":"EIDe75682fd-6345-469f-b8d6-c2fc4f57d568"}},"parent":{"ref":"EID6eec170e-0175-1000-6a11-5059d4fe06bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:16:07Z","duration":3556,"status":"PASSED"},{"id":"EID6eec24f2-0175-1000-b788-3a15b7ad1bdb","testStepResults":{"TestStepResult":[{"id":"EID6eec24f2-0175-1000-5fef-c575a5449c42","attachments":{"attachment":[{"ref":"EID55827216-6fcc-40e4-8b3e-4d189129d072"},{"ref":"EID751c0e21-c777-4b5e-91bb-e9d985361733"}]},"parent":{"ref":"EID6eec24f2-0175-1000-b788-3a15b7ad1bdb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:16:11Z","duration":1108,"status":"PASSED"},{"id":"EID6eec2971-0175-1000-ebc9-c6d9c6c9c60e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2b87-0175-1000-ecbe-5ac30a03118b","parent":{"ref":"EID6eec2971-0175-1000-ebc9-c6d9c6c9c60e"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2b87-0175-1000-f256-0f3e2abc11c4","parent":{"ref":"EID6eec2971-0175-1000-ebc9-c6d9c6c9c60e"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2b87-0175-1000-51b1-2e62ebbf232c","parent":{"ref":"EID6eec2971-0175-1000-ebc9-c6d9c6c9c60e"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2b87-0175-1000-41f9-f5a1da3ce8b7","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec2971-0175-1000-ebc9-c6d9c6c9c60e"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDd0613d38-9147-4457-8a0a-6db6741a24db"},{"ref":"EID579a80d3-5d38-4ab5-8e89-871c99ff2fe4"},{"ref":"EID9dec02d8-ad76-4643-95aa-5e92bab17369"}]},"parent":{"ref":"EID6eec24f2-0175-1000-b788-3a15b7ad1bdb"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:16:12Z","duration":310,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:16:11Z","duration":1685,"status":"PASSED_MANUAL"},{"id":"EID6eec2b88-0175-1000-6c22-6c158c2d6255","testStepResults":{"TestStepResult":{"id":"EID6eec2b88-0175-1000-0d3c-7a403bef3331","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2dce-0175-1000-9c04-efd038258b1b","parent":{"ref":"EID6eec2b88-0175-1000-0d3c-7a403bef3331"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dce-0175-1000-75fe-d86dee876606","parent":{"ref":"EID6eec2b88-0175-1000-0d3c-7a403bef3331"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dce-0175-1000-fb34-ee9bb6e7458c","parent":{"ref":"EID6eec2b88-0175-1000-0d3c-7a403bef3331"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dce-0175-1000-09aa-b42393097bc5","parent":{"ref":"EID6eec2b88-0175-1000-0d3c-7a403bef3331"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9bd97f76-9d78-437c-b8e8-c4e583977652"},{"ref":"EID366d5c2f-c9d0-4843-be22-b97dab74217c"},{"ref":"EIDee3bcd07-185a-4fb6-a0d2-6e0df64b62ae"}]},"parent":{"ref":"EID6eec2b88-0175-1000-6c22-6c158c2d6255"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:16:12Z","duration":480,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:16:12Z","duration":582,"status":"PASSED"},{"id":"EID6eec2dce-0175-1000-fbaf-c9bcacc16403","testStepResults":{"TestStepResult":{"id":"EID6eec2dce-0175-1000-51d7-1bbc3b50cd2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2fe0-0175-1000-a6d3-7015fabe32bc","parent":{"ref":"EID6eec2dce-0175-1000-51d7-1bbc3b50cd2a"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2fe0-0175-1000-1495-61f94a587cd6","parent":{"ref":"EID6eec2dce-0175-1000-51d7-1bbc3b50cd2a"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2fe0-0175-1000-8ee7-f1ca840cacaa","parent":{"ref":"EID6eec2dce-0175-1000-51d7-1bbc3b50cd2a"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2fe0-0175-1000-7323-144b67f26a41","parent":{"ref":"EID6eec2dce-0175-1000-51d7-1bbc3b50cd2a"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf4b91163-d8ea-44a3-9e50-1c5e6f9027e6"},{"ref":"EID48c9b2fc-de3a-4caa-8618-4f4cf2d13806"},{"ref":"EIDddc9ee13-bf9a-48a3-8479-f1b7543cb94a"}]},"parent":{"ref":"EID6eec2dce-0175-1000-fbaf-c9bcacc16403"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:16:13Z","duration":390,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:16:13Z","duration":541,"status":"PASSED"},{"id":"EID6eec2fec-0175-1000-833c-2a26f507a987","testStepResults":{"TestStepResult":[{"id":"EID6eec2fec-0175-1000-edce-914ec205dfef","attachments":{"attachment":[{"ref":"EID033c9865-ff6a-4f6f-be0e-299bafdea732"},{"ref":"EIDc1dd0d32-e38b-4b74-8006-803ed1f5c457"},{"ref":"EID55818b03-44a8-4eb8-bd69-e3a24f07beea"},{"ref":"EIDfa2308a1-8117-49c6-a086-92e50eca3743"},{"ref":"EID8915d5b1-562f-4a09-b6ca-367587908c07"},{"ref":"EID0aad8af3-0c53-4586-8e8f-6d170a4c3a4f"},{"ref":"EID8d40999a-49af-4674-9c7a-3113f8755538"},{"ref":"EID284bdd35-cdca-4253-b2f0-dc2a740cfec7"},{"ref":"EIDa21c1aa7-c2e4-495d-b51b-927ac534c932"},{"ref":"EID9fb86503-9527-4060-b858-35d63b64a056"},{"ref":"EIDdd1b9dc2-1926-4068-bfff-ad473089223a"},{"ref":"EID8dd3b1d3-a504-46f2-bd59-494a01e8918f"}]},"parent":{"ref":"EID6eec2fec-0175-1000-833c-2a26f507a987"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":1139,"status":"PASSED"},{"id":"EID6eec35ed-0175-1000-5848-a3bedc39592d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec37a6-0175-1000-b4b0-039bc14e70e1","parent":{"ref":"EID6eec35ed-0175-1000-5848-a3bedc39592d"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec37a6-0175-1000-16da-1ad7dccaa024","parent":{"ref":"EID6eec35ed-0175-1000-5848-a3bedc39592d"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec37a6-0175-1000-deb0-c4bbda26b94e","parent":{"ref":"EID6eec35ed-0175-1000-5848-a3bedc39592d"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec37a6-0175-1000-c977-420510b3297b","parent":{"ref":"EID6eec35ed-0175-1000-5848-a3bedc39592d"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec37a6-0175-1000-af77-6c787271f692","parent":{"ref":"EID6eec35ed-0175-1000-5848-a3bedc39592d"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6777a5e7-72ff-46ae-9c00-b558e0ef5b7c"},{"ref":"EIDcfba8e00-0515-479e-8748-132d7b01047f"},{"ref":"EID6c40121f-ffde-4328-a976-8fb955c459a3"}]},"parent":{"ref":"EID6eec2fec-0175-1000-833c-2a26f507a987"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:16:15Z","duration":317,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:16:13Z","duration":1978,"status":"PASSED"},{"id":"EID6eec37a6-0175-1000-ec4b-ad1400f841db","testStepResults":{"TestStepResult":{"id":"EID6eec37a6-0175-1000-116f-10585f72aa66","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3b63-0175-1000-641c-062a6895cfd8","parent":{"ref":"EID6eec37a6-0175-1000-116f-10585f72aa66"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3b63-0175-1000-a784-7769208bbd52","parent":{"ref":"EID6eec37a6-0175-1000-116f-10585f72aa66"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3b63-0175-1000-6265-f12d548dfd8a","parent":{"ref":"EID6eec37a6-0175-1000-116f-10585f72aa66"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3b63-0175-1000-329c-464049ccd45f","parent":{"ref":"EID6eec37a6-0175-1000-116f-10585f72aa66"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID574bb216-bc4b-4619-9ca5-76e448f20091"},{"ref":"EID7ca174d1-9f18-4ea0-b869-12f51fc837e6"},{"ref":"EID34c3664f-3b3f-4ab7-ab54-ddc37bcbbd45"}]},"parent":{"ref":"EID6eec37a6-0175-1000-ec4b-ad1400f841db"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:16:15Z","duration":868,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:16:15Z","duration":957,"status":"PASSED"},{"id":"EID6eec3b63-0175-1000-f210-41610651675c","testStepResults":{"TestStepResult":{"id":"EID6eec3b63-0175-1000-9571-673f1201ce0f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3f4b-0175-1000-2736-65553e7ae423","parent":{"ref":"EID6eec3b63-0175-1000-9571-673f1201ce0f"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"},{"id":"EID6eec3f4b-0175-1000-26bb-331667089a91","parent":{"ref":"EID6eec3b63-0175-1000-9571-673f1201ce0f"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"},{"id":"EID6eec3f4b-0175-1000-4fe4-2cff91f73a72","parent":{"ref":"EID6eec3b63-0175-1000-9571-673f1201ce0f"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"},{"id":"EID6eec3f4b-0175-1000-a16f-1d8c77afe330","parent":{"ref":"EID6eec3b63-0175-1000-9571-673f1201ce0f"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"},{"id":"EID6eec3f4b-0175-1000-a945-4e260462572c","parent":{"ref":"EID6eec3b63-0175-1000-9571-673f1201ce0f"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"},{"id":"EID6eec3f4b-0175-1000-45e9-ea7f2f94350d","parent":{"ref":"EID6eec3b63-0175-1000-9571-673f1201ce0f"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb0a4ca53-0bbb-4c6a-b0c8-9738f46a57fa"},{"ref":"EIDf841c65e-5758-4dd7-b63b-80cd6213fa55"},{"ref":"EIDeb887304-19a2-46bf-a504-c27456a7ef0d"}]},"parent":{"ref":"EID6eec3b63-0175-1000-f210-41610651675c"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:16:16Z","duration":811,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:16:16Z","duration":1000,"status":"PASSED"},{"id":"EID6eec3f4b-0175-1000-471e-4b000ce8d959","testStepResults":{"TestStepResult":{"id":"EID6eec3f4b-0175-1000-5108-af288698a30d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec41bc-0175-1000-309a-9f1b3096073d","parent":{"ref":"EID6eec3f4b-0175-1000-5108-af288698a30d"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec41bc-0175-1000-fffa-23a3cdf31314","parent":{"ref":"EID6eec3f4b-0175-1000-5108-af288698a30d"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec41bc-0175-1000-7fd6-567e9ae380a6","parent":{"ref":"EID6eec3f4b-0175-1000-5108-af288698a30d"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec41bc-0175-1000-dd15-08aecf93aa72","parent":{"ref":"EID6eec3f4b-0175-1000-5108-af288698a30d"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec41bc-0175-1000-3f47-731444e14285","parent":{"ref":"EID6eec3f4b-0175-1000-5108-af288698a30d"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec41bc-0175-1000-0388-a5b1d5320d9d","parent":{"ref":"EID6eec3f4b-0175-1000-5108-af288698a30d"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7d975edd-b07d-4dd7-bec9-d741e7ab5127"},{"ref":"EID5e8c7ee5-73bd-4760-8f0b-4b04449be15f"},{"ref":"EIDb64b5227-75d4-492a-87b8-6d294059097c"}]},"parent":{"ref":"EID6eec3f4b-0175-1000-471e-4b000ce8d959"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:16:17Z","duration":515,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:16:17Z","duration":626,"status":"PASSED"},{"id":"EID6eec41c9-0175-1000-238d-c440d1a1cfc0","testStepResults":{"TestStepResult":{"id":"EID6eec41c9-0175-1000-a188-a2fea9c26720","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec4331-0175-1000-4f76-14d5e4ff9346","parent":{"ref":"EID6eec41c9-0175-1000-a188-a2fea9c26720"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec4331-0175-1000-02e5-c459bdbf69d3","parent":{"ref":"EID6eec41c9-0175-1000-a188-a2fea9c26720"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec4331-0175-1000-6567-d32b4d8dcf63","parent":{"ref":"EID6eec41c9-0175-1000-a188-a2fea9c26720"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"},{"id":"EID6eec4331-0175-1000-5d19-47ba93d5c24c","parent":{"ref":"EID6eec41c9-0175-1000-a188-a2fea9c26720"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:16:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID07f82bde-f9e3-4e92-86ca-1eeae8d2fbb2"},{"ref":"EID0d673623-186b-43d0-bc91-e15647f6cad9"},{"ref":"EIDe2f666f0-46a6-4745-8221-a15f71581d59"}]},"parent":{"ref":"EID6eec41c9-0175-1000-238d-c440d1a1cfc0"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:16:18Z","duration":275,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:16:18Z","duration":360,"status":"PASSED"},{"id":"EID6eec4331-0175-1000-0342-978964d8ae55","testStepResults":{"TestStepResult":[{"id":"EID6eec4331-0175-1000-f9e0-ec510350ab95","attachments":{"attachment":[{"ref":"EID77b636ba-4b43-4b11-914c-57a72e19452c"},{"ref":"EID516e56aa-2ece-49af-bd49-9af484527837"},{"ref":"EID7f977318-3791-44ae-8662-c596ac10c27a"},{"ref":"EID9f36a13a-155c-4772-a431-c6297732b89d"}]},"parent":{"ref":"EID6eec4331-0175-1000-0342-978964d8ae55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:16:18Z","duration":1083,"status":"PASSED"},{"id":"EID6eec47a8-0175-1000-c623-2cc7df3d481e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec49a7-0175-1000-02e5-e5ca276e9b1f","parent":{"ref":"EID6eec47a8-0175-1000-c623-2cc7df3d481e"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:16:20Z","duration":0,"status":"PASSED"},{"id":"EID6eec49a7-0175-1000-60dd-ff384fdbb19b","parent":{"ref":"EID6eec47a8-0175-1000-c623-2cc7df3d481e"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:16:20Z","duration":0,"status":"PASSED"},{"id":"EID6eec49a7-0175-1000-67c9-3fd0a9c037f5","parent":{"ref":"EID6eec47a8-0175-1000-c623-2cc7df3d481e"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:16:20Z","duration":0,"status":"PASSED"},{"id":"EID6eec49a7-0175-1000-9477-15c3a2b268d5","parent":{"ref":"EID6eec47a8-0175-1000-c623-2cc7df3d481e"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:16:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc532a422-27cb-4bee-9f7d-a6c80b4551bd"},{"ref":"EID934fb3ca-1bc8-466e-a69b-5c5cfc8bd947"},{"ref":"EID0f269909-63f7-4605-bd1d-60a856609890"}]},"parent":{"ref":"EID6eec4331-0175-1000-0342-978964d8ae55"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:16:20Z","duration":315,"status":"PASSED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:16:18Z","duration":1654,"status":"PASSED"},{"id":"EID6eec49a7-0175-1000-3494-75d799231134","testStepResults":{"TestStepResult":{"id":"EID6eec49a7-0175-1000-c3bd-f9541013b296","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec4c3a-0175-1000-4935-4317020cc7ba","parent":{"ref":"EID6eec49a7-0175-1000-c3bd-f9541013b296"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:16:21Z","duration":0,"status":"PASSED"},{"id":"EID6eec4c3a-0175-1000-dcb6-2e72b69abd3f","parent":{"ref":"EID6eec49a7-0175-1000-c3bd-f9541013b296"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:16:21Z","duration":0,"status":"PASSED"},{"id":"EID6eec4c3a-0175-1000-1797-eed2c6f29f1c","parent":{"ref":"EID6eec49a7-0175-1000-c3bd-f9541013b296"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:16:21Z","duration":0,"status":"PASSED"},{"id":"EID6eec4c3a-0175-1000-c1db-253254cf9cd8","parent":{"ref":"EID6eec49a7-0175-1000-c3bd-f9541013b296"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:16:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdc04622a-4327-449b-a5b2-ee4fd8044a0c"},{"ref":"EID75a8ed60-ce08-4c11-9e7a-55042f5ddc7d"},{"ref":"EID04e6f617-a689-4a02-a123-269139074326"}]},"parent":{"ref":"EID6eec49a7-0175-1000-3494-75d799231134"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:16:20Z","duration":472,"status":"PASSED"}},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:16:20Z","duration":659,"status":"PASSED"},{"id":"EID6eec4c43-0175-1000-bd63-98e2c3e4a9dd","testStepResults":{"TestStepResult":[{"id":"EID6eec4c43-0175-1000-b4d8-c34b17067469","parent":{"ref":"EID6eec4c43-0175-1000-bd63-98e2c3e4a9dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:16:21Z","duration":0,"status":"PASSED"},{"id":"EID6eec4c43-0175-1000-1c90-4a6e863304dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec4fbf-0175-1000-623f-ec8839f76087","parent":{"ref":"EID6eec4c43-0175-1000-1c90-4a6e863304dd"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec4fbf-0175-1000-2b46-cefaf366d60f","parent":{"ref":"EID6eec4c43-0175-1000-1c90-4a6e863304dd"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec4fbf-0175-1000-9450-ad655451f731","parent":{"ref":"EID6eec4c43-0175-1000-1c90-4a6e863304dd"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec4fbf-0175-1000-7bf6-99a33940026f","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eec4c43-0175-1000-1c90-4a6e863304dd"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID94f8abc8-efef-4d7c-9c62-1f6ee09da737"},{"ref":"EIDb5dc2a3d-351e-4f5e-8697-2204fda5027d"},{"ref":"EID5a4d5f00-8250-4133-9659-c3772a6f2139"}]},"parent":{"ref":"EID6eec4c43-0175-1000-bd63-98e2c3e4a9dd"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:16:21Z","duration":801,"status":"FAILED"}]},"parent":{"ref":"EID6eebf5e1-0175-1000-8f9f-d47cab8261b3"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:16:21Z","duration":893,"status":"FAILED"}]},"parent":{"ref":"EID2b822d95-7619-456c-83a2-0fc1d7de5f4f"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:15:59Z","duration":23007,"status":"FAILED"},{"id":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc","testCaseResults":{"TestCaseResult":[{"id":"EID6eec4fc0-0175-1000-6a8e-3aa69603cf32","testStepResults":{"TestStepResult":[{"id":"EID6eec4fc0-0175-1000-3148-c3007c3bcecb","parent":{"ref":"EID6eec4fc0-0175-1000-6a8e-3aa69603cf32"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec4fc0-0175-1000-9f87-2929b477e23e","parent":{"ref":"EID6eec4fc0-0175-1000-6a8e-3aa69603cf32"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:16:22Z","duration":481,"status":"PASSED"},{"id":"EID6eec4fc9-0175-1000-a63f-eb7528f392a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec51f3-0175-1000-ed3d-e535eca855dc","parent":{"ref":"EID6eec4fc9-0175-1000-a63f-eb7528f392a4"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec51f3-0175-1000-2f31-d7fd9060db40","parent":{"ref":"EID6eec4fc9-0175-1000-a63f-eb7528f392a4"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec51f3-0175-1000-6c1b-b603214ed3ab","parent":{"ref":"EID6eec4fc9-0175-1000-a63f-eb7528f392a4"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe72496a9-e0cc-46c8-a043-8a699bc7572e"},{"ref":"EID5a836ec3-b84f-4caa-857b-3907b8d7ad5d"},{"ref":"EID27c355d8-67af-4301-830c-54730cb2accb"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-6a8e-3aa69603cf32"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:16:22Z","duration":397,"status":"PASSED"},{"id":"EID6eec51f3-0175-1000-fc9e-66ef84d5fac2","attachments":{"attachment":{"ref":"EID4f223a18-782f-4b68-a471-74fe0de910ca"}},"parent":{"ref":"EID6eec4fc0-0175-1000-6a8e-3aa69603cf32"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:16:22Z","duration":0,"status":"PASSED"},{"id":"EID6eec51ff-0175-1000-26a7-8878c49bead7","parent":{"ref":"EID6eec4fc0-0175-1000-6a8e-3aa69603cf32"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:16:22Z","duration":12,"status":"PASSED"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:16:22Z","duration":587,"status":"PASSED"},{"id":"EID6eec520c-0175-1000-c4bf-4e665298d9ea","testStepResults":{"TestStepResult":[{"id":"EID6eec520c-0175-1000-63e7-b1f1dd83158b","parent":{"ref":"EID6eec520c-0175-1000-c4bf-4e665298d9ea"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:16:22Z","duration":105,"status":"PASSED"},{"id":"EID6eec520c-0175-1000-f0bc-a6ac7fc7bcab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec53c3-0175-1000-74d6-9b4373bd21a3","parent":{"ref":"EID6eec520c-0175-1000-f0bc-a6ac7fc7bcab"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"},{"id":"EID6eec53c3-0175-1000-61b5-36e004ed3bfa","parent":{"ref":"EID6eec520c-0175-1000-f0bc-a6ac7fc7bcab"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"},{"id":"EID6eec53c3-0175-1000-e548-97fc4bbbf0a6","parent":{"ref":"EID6eec520c-0175-1000-f0bc-a6ac7fc7bcab"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"},{"id":"EID6eec53c3-0175-1000-02ec-67d674f988e8","parent":{"ref":"EID6eec520c-0175-1000-f0bc-a6ac7fc7bcab"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"},{"id":"EID6eec53c3-0175-1000-a1c1-6def4005c2f3","parent":{"ref":"EID6eec520c-0175-1000-f0bc-a6ac7fc7bcab"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2654846b-43ee-4616-a49c-9ddfd2ae7c2f"},{"ref":"EIDa4527810-c656-4353-bf09-12ca2794d5c4"},{"ref":"EID62ccad67-2183-43b1-8357-df8fc8a9a026"}]},"parent":{"ref":"EID6eec520c-0175-1000-c4bf-4e665298d9ea"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:16:22Z","duration":324,"status":"PASSED"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:16:22Z","duration":439,"status":"PASSED"},{"id":"EID6eec53c4-0175-1000-472a-013bf8244cf2","testStepResults":{"TestStepResult":[{"id":"EID6eec53c4-0175-1000-5e9c-50ef2a1d8239","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5518-0175-1000-4176-14fe619bbb98","parent":{"ref":"EID6eec53c4-0175-1000-5e9c-50ef2a1d8239"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"},{"id":"EID6eec5518-0175-1000-a9d1-56d94580bf2c","parent":{"ref":"EID6eec53c4-0175-1000-5e9c-50ef2a1d8239"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"},{"id":"EID6eec5518-0175-1000-f71d-bceb691aa92b","parent":{"ref":"EID6eec53c4-0175-1000-5e9c-50ef2a1d8239"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:16:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID46cb7bd4-d95b-418b-85d1-9852a2f52ad3"},{"ref":"EIDb2aee476-d3c2-4c03-8717-ef09ce9af90e"},{"ref":"EID91d2a903-b0c3-4231-abd7-9b4971ce7a7e"}]},"parent":{"ref":"EID6eec53c4-0175-1000-472a-013bf8244cf2"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:16:23Z","duration":276,"status":"PASSED"},{"id":"EID6eec5518-0175-1000-2bcf-a7d84a9b5675","attachments":{"attachment":{"ref":"EID87ceaed1-f663-45d7-a5a9-f6fea38e8cbb"}},"parent":{"ref":"EID6eec53c4-0175-1000-472a-013bf8244cf2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:16:23Z","duration":1,"status":"PASSED"},{"id":"EID6eec5523-0175-1000-6893-8e97a8c8baeb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5921-0175-1000-d593-eee3691bf0e9","parent":{"ref":"EID6eec5523-0175-1000-6893-8e97a8c8baeb"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"},{"id":"EID6eec5921-0175-1000-5a88-e9843a650451","parent":{"ref":"EID6eec5523-0175-1000-6893-8e97a8c8baeb"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"},{"id":"EID6eec5921-0175-1000-f696-ce8a7813d2fd","parent":{"ref":"EID6eec5523-0175-1000-6893-8e97a8c8baeb"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:16:24Z","duration":1,"status":"PASSED"},{"id":"EID6eec5922-0175-1000-3ecb-837c0deca5a8","parent":{"ref":"EID6eec5523-0175-1000-6893-8e97a8c8baeb"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"},{"id":"EID6eec5922-0175-1000-5ca7-5df189ffaf79","parent":{"ref":"EID6eec5523-0175-1000-6893-8e97a8c8baeb"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd1e83753-2bef-4c6d-9fff-bf0140907656"},{"ref":"EID85209e58-3570-445c-a56e-a00428b89635"},{"ref":"EID53d30dfe-3776-4d48-9575-0989cd2ac81d"}]},"parent":{"ref":"EID6eec53c4-0175-1000-472a-013bf8244cf2"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:16:23Z","duration":947,"status":"PASSED"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:16:23Z","duration":1374,"status":"PASSED"},{"id":"EID6eec5922-0175-1000-7f44-d7408cf43fe1","testStepResults":{"TestStepResult":[{"id":"EID6eec5922-0175-1000-de81-f21dea7e716c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5b0d-0175-1000-832f-59671a0451a8","parent":{"ref":"EID6eec5922-0175-1000-de81-f21dea7e716c"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"},{"id":"EID6eec5b0d-0175-1000-b833-b76eee56315f","parent":{"ref":"EID6eec5922-0175-1000-de81-f21dea7e716c"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"},{"id":"EID6eec5b0d-0175-1000-d96f-977f17b5d1b2","parent":{"ref":"EID6eec5922-0175-1000-de81-f21dea7e716c"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:16:24Z","duration":1,"status":"PASSED"},{"id":"EID6eec5b0e-0175-1000-625f-df6cebb6c9cd","parent":{"ref":"EID6eec5922-0175-1000-de81-f21dea7e716c"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:16:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID814683cb-5278-40a6-8341-20a1c2510b7b"},{"ref":"EID915dffdb-28f3-49e1-9db7-34c08f94e179"},{"ref":"EIDd47e5a84-27e8-408e-97d1-716ae98c1944"}]},"parent":{"ref":"EID6eec5922-0175-1000-7f44-d7408cf43fe1"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:16:24Z","duration":402,"status":"PASSED"},{"id":"EID6eec5b15-0175-1000-313d-a577914d9a58","attachments":{"attachment":{"ref":"EID9173786f-f8a0-4924-bd03-50b6ed4a6aee"}},"parent":{"ref":"EID6eec5922-0175-1000-7f44-d7408cf43fe1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:16:24Z","duration":1,"status":"PASSED"},{"id":"EID6eec5b21-0175-1000-8383-66c6dbacbed2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5b84-0175-1000-062d-7d42636a7a69","parent":{"ref":"EID6eec5b21-0175-1000-8383-66c6dbacbed2"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6eec5b84-0175-1000-00a0-b79835ae6d21","parent":{"ref":"EID6eec5b21-0175-1000-8383-66c6dbacbed2"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7b87a067-302f-4a35-86a6-271b5fe77812"},{"ref":"EID5408b6b6-1b06-4fe4-8153-9251c074c2c6"}]},"parent":{"ref":"EID6eec5922-0175-1000-7f44-d7408cf43fe1"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:16:24Z","duration":89,"status":"PASSED"},{"id":"EID6eec5b84-0175-1000-d46b-34b2f842ff3b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5e13-0175-1000-498c-abeb6658b43b","parent":{"ref":"EID6eec5b84-0175-1000-d46b-34b2f842ff3b"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6eec5e13-0175-1000-27ea-2dadbd2d4c03","parent":{"ref":"EID6eec5b84-0175-1000-d46b-34b2f842ff3b"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6eec5e13-0175-1000-c8aa-b481220f8fdd","parent":{"ref":"EID6eec5b84-0175-1000-d46b-34b2f842ff3b"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6eec5e13-0175-1000-2394-a48267fc9266","parent":{"ref":"EID6eec5b84-0175-1000-d46b-34b2f842ff3b"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbe30153d-f33a-4731-bfda-0026261b3b7f"},{"ref":"EIDc966d037-eebb-4676-be6a-6a6e6aa2c00f"},{"ref":"EID4fd83607-8ff0-4948-b001-fccde8d75d88"}]},"parent":{"ref":"EID6eec5922-0175-1000-7f44-d7408cf43fe1"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:16:25Z","duration":503,"status":"PASSED"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:16:24Z","duration":1265,"status":"PASSED"},{"id":"EID6eec5e13-0175-1000-e67e-27d0c68a54b9","testStepResults":{"TestStepResult":{"id":"EID6eec5e13-0175-1000-167b-408ec765004f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5e79-0175-1000-a352-fd4efa9a8469","parent":{"ref":"EID6eec5e13-0175-1000-167b-408ec765004f"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6eec5e79-0175-1000-22da-8b2e1b503703","parent":{"ref":"EID6eec5e13-0175-1000-167b-408ec765004f"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6eec5e79-0175-1000-34a0-78f0ecf76ca0","parent":{"ref":"EID6eec5e13-0175-1000-167b-408ec765004f"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:16:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdc401acb-2844-4efc-9534-98e77f822a39"},{"ref":"EIDb9ef9143-419f-4be8-9760-25b1c71891f6"},{"ref":"EIDb44c6c51-3985-48be-a968-69d27c8c2c1a"}]},"parent":{"ref":"EID6eec5e13-0175-1000-e67e-27d0c68a54b9"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:16:25Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:16:25Z","duration":103,"status":"PASSED"},{"id":"EID6eec5e7a-0175-1000-c7c6-70d20e199f71","testStepResults":{"TestStepResult":{"id":"EID6eec5e7a-0175-1000-ecec-8aed98c805a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5f56-0175-1000-98aa-306a2f4b2fce","parent":{"ref":"EID6eec5e7a-0175-1000-ecec-8aed98c805a2"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec5f56-0175-1000-941e-e7c7a447c3f5","parent":{"ref":"EID6eec5e7a-0175-1000-ecec-8aed98c805a2"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec5f56-0175-1000-87cd-5d09e8e87661","parent":{"ref":"EID6eec5e7a-0175-1000-ecec-8aed98c805a2"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5060164b-52d2-4004-abd3-49f1e78523f3"},{"ref":"EIDf4985826-1995-49e7-8e44-72f829b7da7a"},{"ref":"EID27dbf4ec-cc73-4865-a010-78ed904dd18e"}]},"parent":{"ref":"EID6eec5e7a-0175-1000-c7c6-70d20e199f71"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:16:25Z","duration":146,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:16:25Z","duration":220,"status":"PASSED"},{"id":"EID6eec5f56-0175-1000-179f-1c8d0a7a5158","testStepResults":{"TestStepResult":{"id":"EID6eec5f56-0175-1000-b8f4-d5c90adefd9b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec5fee-0175-1000-7d89-235847ad60f4","parent":{"ref":"EID6eec5f56-0175-1000-b8f4-d5c90adefd9b"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec5fee-0175-1000-d140-d7ec42105d6a","parent":{"ref":"EID6eec5f56-0175-1000-b8f4-d5c90adefd9b"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec5fee-0175-1000-70f8-3c1e20c712d1","parent":{"ref":"EID6eec5f56-0175-1000-b8f4-d5c90adefd9b"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec5fee-0175-1000-87d7-8f42c2db8dce","parent":{"ref":"EID6eec5f56-0175-1000-b8f4-d5c90adefd9b"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec5fee-0175-1000-b720-0da5fa529a8b","parent":{"ref":"EID6eec5f56-0175-1000-b8f4-d5c90adefd9b"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID956c326d-f48c-47f1-952e-a347ec939360"},{"ref":"EID1c67a7ad-2dbc-4dc3-a763-ef1cdd57f625"},{"ref":"EIDb8774515-1c4a-4b8c-b95c-9d5dda463d91"}]},"parent":{"ref":"EID6eec5f56-0175-1000-179f-1c8d0a7a5158"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:16:26Z","duration":57,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:16:26Z","duration":170,"status":"PASSED"},{"id":"EID6eec603c-0175-1000-d9fd-c8d28f504eab","testStepResults":{"TestStepResult":{"id":"EID6eec603c-0175-1000-d1e8-52d8a5241d44","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec60c2-0175-1000-9b35-abb49890b8e1","parent":{"ref":"EID6eec603c-0175-1000-d1e8-52d8a5241d44"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec60c2-0175-1000-f53f-983b5687fadc","parent":{"ref":"EID6eec603c-0175-1000-d1e8-52d8a5241d44"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec60c2-0175-1000-3115-9c3d66924c99","parent":{"ref":"EID6eec603c-0175-1000-d1e8-52d8a5241d44"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDacbe6901-c6cc-48f0-afc3-7e4c587dc0b9"},{"ref":"EID8d307448-2317-485a-9781-a491792c4c5b"},{"ref":"EID5f545e0e-a67b-4366-883f-c41d98b03310"}]},"parent":{"ref":"EID6eec603c-0175-1000-d9fd-c8d28f504eab"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:16:26Z","duration":30,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:16:26Z","duration":146,"status":"PASSED"},{"id":"EID6eec60ce-0175-1000-f49d-cdb97080f65f","testStepResults":{"TestStepResult":{"id":"EID6eec60ce-0175-1000-9107-ad5d62b110e1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec61b1-0175-1000-a677-b0a3bedbf1bf","parent":{"ref":"EID6eec60ce-0175-1000-9107-ad5d62b110e1"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec61b1-0175-1000-1e44-444a9d9c987b","parent":{"ref":"EID6eec60ce-0175-1000-9107-ad5d62b110e1"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec61b1-0175-1000-67f0-51fcc71730c2","parent":{"ref":"EID6eec60ce-0175-1000-9107-ad5d62b110e1"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe6056515-a2f6-4330-a568-b5a22b213386"},{"ref":"EIDa1f11088-3c28-4b10-925a-e70082953d25"},{"ref":"EIDff433b80-5fb6-402d-8742-257ba712d8fd"}]},"parent":{"ref":"EID6eec60ce-0175-1000-f49d-cdb97080f65f"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:16:26Z","duration":143,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:16:26Z","duration":227,"status":"PASSED"},{"id":"EID6eec61b1-0175-1000-c660-d261494ffff2","testStepResults":{"TestStepResult":{"id":"EID6eec61b1-0175-1000-6c26-3cf2d686573d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6226-0175-1000-ccf5-c944d14338ed","parent":{"ref":"EID6eec61b1-0175-1000-6c26-3cf2d686573d"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec6226-0175-1000-9c4e-01a92afb9682","parent":{"ref":"EID6eec61b1-0175-1000-6c26-3cf2d686573d"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec6226-0175-1000-996d-2d48bf1536c7","parent":{"ref":"EID6eec61b1-0175-1000-6c26-3cf2d686573d"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6eec6226-0175-1000-48a4-283b29d1be16","parent":{"ref":"EID6eec61b1-0175-1000-6c26-3cf2d686573d"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID957d7eb2-27e4-468c-b1d2-38ae9ced2df2"},{"ref":"EID0d0c2ccd-f7bb-4b5d-b9db-971945167deb"},{"ref":"EID8ccf64a8-3044-4154-8ca6-590a685c674e"}]},"parent":{"ref":"EID6eec61b1-0175-1000-c660-d261494ffff2"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:16:26Z","duration":49,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:16:26Z","duration":117,"status":"PASSED"},{"id":"EID6eec6226-0175-1000-af3d-6a1385d3d05e","testStepResults":{"TestStepResult":{"id":"EID6eec6226-0175-1000-525c-d0024eba23a7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6378-0175-1000-c6ea-4d810aff6b2a","parent":{"ref":"EID6eec6226-0175-1000-525c-d0024eba23a7"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec6378-0175-1000-dc57-7f16ba6c963c","parent":{"ref":"EID6eec6226-0175-1000-525c-d0024eba23a7"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec6378-0175-1000-ef60-4cc6cfb5c392","parent":{"ref":"EID6eec6226-0175-1000-525c-d0024eba23a7"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec6378-0175-1000-c7c1-e615f086d0ae","parent":{"ref":"EID6eec6226-0175-1000-525c-d0024eba23a7"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID94a39958-0f89-49f3-8df0-b1c50c1bc12e"},{"ref":"EID9e310e3a-2caa-45d1-9b5c-69b235e6dc07"},{"ref":"EID8233f32f-9245-4468-a095-0a82ebfde1f7"}]},"parent":{"ref":"EID6eec6226-0175-1000-af3d-6a1385d3d05e"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:16:26Z","duration":205,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:16:26Z","duration":435,"status":"PASSED"},{"id":"EID6eec63da-0175-1000-41dc-77d90750667a","testStepResults":{"TestStepResult":[{"id":"EID6eec63da-0175-1000-233c-9c23f6cc1f56","parent":{"ref":"EID6eec63da-0175-1000-41dc-77d90750667a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec63da-0175-1000-38d5-bf0d9878b020","parent":{"ref":"EID6eec63da-0175-1000-41dc-77d90750667a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:16:27Z","duration":764,"status":"PASSED"},{"id":"EID6eec63da-0175-1000-5ac1-17322dcd2d07","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec64fd-0175-1000-3a82-6f03f37c6428","parent":{"ref":"EID6eec63da-0175-1000-5ac1-17322dcd2d07"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec64fd-0175-1000-04b8-64819f0b2b3e","parent":{"ref":"EID6eec63da-0175-1000-5ac1-17322dcd2d07"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec64fd-0175-1000-9bdf-06c221cb32f4","parent":{"ref":"EID6eec63da-0175-1000-5ac1-17322dcd2d07"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6eec64fd-0175-1000-01a6-65694e28c998","parent":{"ref":"EID6eec63da-0175-1000-5ac1-17322dcd2d07"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:16:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f78b2b6-6cea-4b48-bd46-9acebb8553db"},{"ref":"EIDa9b807f8-f431-43f9-83ce-f9affe02af4a"},{"ref":"EIDadddbcc1-0f98-40c3-9d00-0468a4812bec"}]},"parent":{"ref":"EID6eec63da-0175-1000-41dc-77d90750667a"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:16:27Z","duration":43,"status":"PASSED"},{"id":"EID6eec64fd-0175-1000-e7c9-cc1c5836c039","attachments":{"attachment":{"ref":"EIDad47f8ad-b376-4875-96d0-fca46283b162"}},"parent":{"ref":"EID6eec63da-0175-1000-41dc-77d90750667a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:16:27Z","duration":1,"status":"PASSED"},{"id":"EID6eec6508-0175-1000-afc5-94573ceeb083","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec67b8-0175-1000-d118-c25b5d13fece","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67b8-0175-1000-df2b-96141c107338","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67b8-0175-1000-0cc5-e71c05f5f5c7","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67b8-0175-1000-2dcf-1b4c1ffa2ce8","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67b8-0175-1000-aca7-d9780ba742c2","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67b8-0175-1000-714b-d64ca0be3d35","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67b8-0175-1000-21eb-4f652788ed80","parent":{"ref":"EID6eec6508-0175-1000-afc5-94573ceeb083"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67c93dc5-cb2b-4d45-b71d-07005c934f08"},{"ref":"EIDa3c6c3c2-0b4d-420d-879d-ffd0375cb6b4"},{"ref":"EIDb649ce59-c4d7-480e-8f02-79054dfd6eec"}]},"parent":{"ref":"EID6eec63da-0175-1000-41dc-77d90750667a"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:16:27Z","duration":569,"status":"PASSED"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:16:27Z","duration":998,"status":"PASSED"},{"id":"EID6eec67c0-0175-1000-cec9-890e41bdd7e3","testStepResults":{"TestStepResult":[{"id":"EID6eec67c0-0175-1000-22e3-fd5b60d260b7","parent":{"ref":"EID6eec67c0-0175-1000-cec9-890e41bdd7e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec67c0-0175-1000-5437-6f71801e5bcf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec68bb-0175-1000-8011-d43a3b979c25","parent":{"ref":"EID6eec67c0-0175-1000-5437-6f71801e5bcf"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec68bb-0175-1000-115d-89ce11c8a51f","parent":{"ref":"EID6eec67c0-0175-1000-5437-6f71801e5bcf"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec68bb-0175-1000-daa1-b96a0c37f3e8","parent":{"ref":"EID6eec67c0-0175-1000-5437-6f71801e5bcf"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec68bb-0175-1000-5759-8ba840ceceba","parent":{"ref":"EID6eec67c0-0175-1000-5437-6f71801e5bcf"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a0eae04-09d9-46e6-9f52-586e94143ba7"},{"ref":"EIDf5f8fc19-b407-4984-b649-92eeb75d79bf"},{"ref":"EID82a1813c-9d08-4ffe-9898-4112dd0aec2b"}]},"parent":{"ref":"EID6eec67c0-0175-1000-cec9-890e41bdd7e3"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:16:28Z","duration":144,"status":"PASSED"},{"id":"EID6eec68bb-0175-1000-e97f-1d428928f10c","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eec68d0-0175-1000-0814-24d618c053cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec69cb-0175-1000-7deb-ae7537561d7e","parent":{"ref":"EID6eec68d0-0175-1000-0814-24d618c053cd"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec69cb-0175-1000-d80d-8629ad405684","parent":{"ref":"EID6eec68d0-0175-1000-0814-24d618c053cd"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6eec69cb-0175-1000-5617-e69727109652","parent":{"ref":"EID6eec68d0-0175-1000-0814-24d618c053cd"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3038d259-d2da-4a1e-9a26-169dc7b17899"},{"ref":"EIDcb2c03fa-6d3f-4de7-bd5c-28d2f94cd1ec"},{"ref":"EID0a48b78e-b971-4509-a01c-26bc2664674f"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:28Z","duration":148,"status":"PASSED"},{"id":"EID6eec69cd-0175-1000-b994-a68380bc22c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6ae7-0175-1000-04ff-72a9f7a85fdb","parent":{"ref":"EID6eec69cd-0175-1000-b994-a68380bc22c5"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6ae7-0175-1000-52ae-8537436413af","parent":{"ref":"EID6eec69cd-0175-1000-b994-a68380bc22c5"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6ae7-0175-1000-3dc6-0e535fc65e1e","parent":{"ref":"EID6eec69cd-0175-1000-b994-a68380bc22c5"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb75eaf92-bf4a-4d56-a51a-57fd3e73c2fc"},{"ref":"EID190a25ea-87cd-488b-a413-e9cab8dcd660"},{"ref":"EID5efbceb2-498d-401e-84a8-bc81d33b2dcd"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:28Z","duration":149,"status":"PASSED"},{"id":"EID6eec6ae8-0175-1000-c416-3a67a8489062","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6baf-0175-1000-a972-2f6c849562dc","parent":{"ref":"EID6eec6ae8-0175-1000-c416-3a67a8489062"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6baf-0175-1000-f6dc-49574aecd942","parent":{"ref":"EID6eec6ae8-0175-1000-c416-3a67a8489062"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6baf-0175-1000-70e5-c30a2d5798e4","parent":{"ref":"EID6eec6ae8-0175-1000-c416-3a67a8489062"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa33640aa-bcf8-4545-a657-42de048f561e"},{"ref":"EIDe290de44-db5f-47db-a642-1341dc842620"},{"ref":"EID2765c29c-4966-4978-964f-eac5ab10d0ad"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:29Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6eec67c0-0175-1000-cec9-890e41bdd7e3"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:16:28Z","duration":757,"status":"PASSED"},{"id":"EID6eec6bb1-0175-1000-7235-72c1ebe816fa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6c26-0175-1000-eb7e-13af28362766","parent":{"ref":"EID6eec6bb1-0175-1000-7235-72c1ebe816fa"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6c26-0175-1000-aea2-0a558379dba0","parent":{"ref":"EID6eec6bb1-0175-1000-7235-72c1ebe816fa"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6c26-0175-1000-537b-d30e4c88149f","parent":{"ref":"EID6eec6bb1-0175-1000-7235-72c1ebe816fa"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6c26-0175-1000-1dbf-dea1e69fe108","parent":{"ref":"EID6eec6bb1-0175-1000-7235-72c1ebe816fa"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5cb39de5-289b-4ac7-9d55-787a5fb70600"},{"ref":"EID3cf89040-e5a5-48df-b904-c460a0ae2603"},{"ref":"EID7ea487bf-0f29-4640-9fae-a72c52d01dbc"}]},"parent":{"ref":"EID6eec67c0-0175-1000-cec9-890e41bdd7e3"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:16:29Z","duration":52,"status":"PASSED"}]},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:16:28Z","duration":1126,"status":"PASSED"},{"id":"EID6eec6c26-0175-1000-10cd-bd5885515c93","testStepResults":{"TestStepResult":{"id":"EID6eec6c26-0175-1000-5e85-64a58c15589d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6c9d-0175-1000-e135-57896b22f6db","parent":{"ref":"EID6eec6c26-0175-1000-5e85-64a58c15589d"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6c9d-0175-1000-d7f9-5a2abb035a8e","parent":{"ref":"EID6eec6c26-0175-1000-5e85-64a58c15589d"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6c9d-0175-1000-4c11-d33930dd21a8","parent":{"ref":"EID6eec6c26-0175-1000-5e85-64a58c15589d"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6c9d-0175-1000-9d64-a20686d0c6c1","parent":{"ref":"EID6eec6c26-0175-1000-5e85-64a58c15589d"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID603b26b4-a0fc-4e8f-b9d0-30e615e10e30"},{"ref":"EID499d2944-df94-4234-9192-027b901ee437"},{"ref":"EID34dd3399-e32b-44b3-980f-2e0b2cb9c714"}]},"parent":{"ref":"EID6eec6c26-0175-1000-10cd-bd5885515c93"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:16:29Z","duration":37,"status":"PASSED"}},"parent":{"ref":"EID6eec4fc0-0175-1000-a869-ebf47a6870dc"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:16:29Z","duration":119,"status":"PASSED"}]},"parent":{"ref":"EID2b822d95-7619-456c-83a2-0fc1d7de5f4f"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:16:22Z","duration":7389,"status":"PASSED"},{"id":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2","testCaseResults":{"TestCaseResult":[{"id":"EID6eec6ccf-0175-1000-8e0f-209ec25ac107","testStepResults":{"TestStepResult":[{"id":"EID6eec6ccf-0175-1000-ac14-2e45e25d7830","parent":{"ref":"EID6eec6ccf-0175-1000-8e0f-209ec25ac107"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:16:29Z","duration":3298,"status":"PASSED"},{"id":"EID6eec6ccf-0175-1000-c94f-5caca1bc3c91","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6d70-0175-1000-6abe-3647258a2429","parent":{"ref":"EID6eec6ccf-0175-1000-c94f-5caca1bc3c91"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6d70-0175-1000-edec-e843693e4aa3","parent":{"ref":"EID6eec6ccf-0175-1000-c94f-5caca1bc3c91"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6eec6d70-0175-1000-b00d-4419305a6b8b","parent":{"ref":"EID6eec6ccf-0175-1000-c94f-5caca1bc3c91"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDae09ea11-d02a-4a61-aab8-6792bebfb8d5"},{"ref":"EID6baeac34-36e6-481b-badf-d365c6fc84a6"},{"ref":"EIDfc552b22-477d-4a48-9206-8a9ea5bab3ec"}]},"parent":{"ref":"EID6eec6ccf-0175-1000-8e0f-209ec25ac107"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:16:29Z","duration":37,"status":"PASSED"},{"id":"EID6eec6d71-0175-1000-bd51-d6106b722087","attachments":{"attachment":{"ref":"EID4179dbd4-7de4-49da-a1fb-01c9309aaaa9"}},"parent":{"ref":"EID6eec6ccf-0175-1000-8e0f-209ec25ac107"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:16:29Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:16:29Z","duration":174,"status":"PASSED"},{"id":"EID6eec6d7d-0175-1000-fe67-4fddbc1d979b","testStepResults":{"TestStepResult":[{"id":"EID6eec6d7d-0175-1000-1007-bee0031108c3","parent":{"ref":"EID6eec6d7d-0175-1000-fe67-4fddbc1d979b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:16:29Z","duration":3298,"status":"PASSED"},{"id":"EID6eec6d7d-0175-1000-8875-97720a9ff76c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec6f8d-0175-1000-c5c1-1b68e64db38d","parent":{"ref":"EID6eec6d7d-0175-1000-8875-97720a9ff76c"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec6f8d-0175-1000-7bfc-17cefb296774","parent":{"ref":"EID6eec6d7d-0175-1000-8875-97720a9ff76c"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec6f8d-0175-1000-b7f7-f6429c059a7f","parent":{"ref":"EID6eec6d7d-0175-1000-8875-97720a9ff76c"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec6f8d-0175-1000-4964-b8b0fd243e5b","parent":{"ref":"EID6eec6d7d-0175-1000-8875-97720a9ff76c"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID274166b0-a4ee-4cc7-94a1-4fc8ab878df1"},{"ref":"EID19870a92-6cf5-486c-8687-9ce346c56c17"},{"ref":"EIDeb0228fe-aae9-4279-a3fa-491468d13126"}]},"parent":{"ref":"EID6eec6d7d-0175-1000-fe67-4fddbc1d979b"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:16:29Z","duration":155,"status":"PASSED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:16:29Z","duration":528,"status":"PASSED"},{"id":"EID6eec6f8d-0175-1000-2f37-3a3866f86b86","testStepResults":{"TestStepResult":[{"id":"EID6eec6f8e-0175-1000-c55f-0e7c5f85b316","parent":{"ref":"EID6eec6f8d-0175-1000-2f37-3a3866f86b86"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:16:30Z","duration":3298,"status":"PASSED"},{"id":"EID6eec6f8e-0175-1000-f0b4-20be4316af20","parent":{"ref":"EID6eec6f8d-0175-1000-2f37-3a3866f86b86"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec7075-0175-1000-7031-84bfa4581dc6","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7075-0175-1000-64d9-90b068084878","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7075-0175-1000-d17f-1da4489d58a6","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7075-0175-1000-63b9-dda0ce95c0a7","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7075-0175-1000-3982-e6895627f994","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7075-0175-1000-734d-80148c0c62a1","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7075-0175-1000-08db-35d0196f2e42","parent":{"ref":"EID6eec6f8e-0175-1000-fc9f-d65d2c0e1034"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe7db2def-af13-4320-9ade-5881aeafc6bd"},{"ref":"EID1934583a-2339-40c8-8ccb-e151c068f995"},{"ref":"EIDb93ac2f5-a62d-4635-9b0a-86d9be9f2e92"}]},"parent":{"ref":"EID6eec6f8d-0175-1000-2f37-3a3866f86b86"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:16:30Z","duration":116,"status":"PASSED"},{"id":"EID6eec7076-0175-1000-24e7-2aca2bba4db6","invokedTests":{"":null,"TestStepResult":{"id":"EID6eec70ae-0175-1000-912a-ad08f90141b3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec7257-0175-1000-0dc8-69b95acad9d6","parent":{"ref":"EID6eec70ae-0175-1000-912a-ad08f90141b3"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7257-0175-1000-fd29-a6b917f50c83","parent":{"ref":"EID6eec70ae-0175-1000-912a-ad08f90141b3"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6eec7257-0175-1000-d1f2-2f4fbbbc7307","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"parent":{"ref":"EID6eec70ae-0175-1000-912a-ad08f90141b3"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-28T11:16:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID6d6f98df-4f87-4320-8a60-ec001be0a9fa"},{"ref":"EID0ab4fbff-d228-4004-9b61-38f3bd8d968f"},{"ref":"EID96b07edd-9442-4edb-ad3c-2b2b2798fed3"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-28T11:16:30Z","duration":289,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EIDeff57f8d-621f-490d-89dd-7a4127b6a85b"},{"ref":"EIDcacb0cae-d83f-486b-ad88-31a66d7a6a58"}]},"parent":{"ref":"EID6eec6f8d-0175-1000-2f37-3a3866f86b86"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-28T11:16:30Z","duration":1748,"status":"FAILED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:16:30Z","duration":2008,"status":"FAILED"},{"id":"EID6eec7765-0175-1000-4e0c-48de5ec652af","testStepResults":{"TestStepResult":[{"id":"EID6eec7765-0175-1000-f6c3-7bbc5ac3b832","parent":{"ref":"EID6eec7765-0175-1000-4e0c-48de5ec652af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:16:32Z","duration":3298,"status":"PASSED"},{"id":"EID6eec7765-0175-1000-6314-481eb1ae3edd","parent":{"ref":"EID6eec7765-0175-1000-4e0c-48de5ec652af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6eec7765-0175-1000-0f66-c9c9c104d639","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec7880-0175-1000-de6d-074cc4013bc6","parent":{"ref":"EID6eec7765-0175-1000-0f66-c9c9c104d639"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6eec7880-0175-1000-1257-a899752ad9da","parent":{"ref":"EID6eec7765-0175-1000-0f66-c9c9c104d639"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6eec7880-0175-1000-e233-05f11db4d390","parent":{"ref":"EID6eec7765-0175-1000-0f66-c9c9c104d639"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6eec7880-0175-1000-1ea3-46b848d4605d","parent":{"ref":"EID6eec7765-0175-1000-0f66-c9c9c104d639"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6eec7880-0175-1000-499d-7429a9ebf0ff","parent":{"ref":"EID6eec7765-0175-1000-0f66-c9c9c104d639"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6eec7880-0175-1000-bec7-0a04b5bae0df","parent":{"ref":"EID6eec7765-0175-1000-0f66-c9c9c104d639"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91dad01e-4a0b-49ad-a98c-c68beab4561e"},{"ref":"EIDcdc3b4bf-682b-45e7-8193-d4ef6d067286"},{"ref":"EID6cef6fed-af34-4262-a7ab-e87e1fc633e3"}]},"parent":{"ref":"EID6eec7765-0175-1000-4e0c-48de5ec652af"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:16:32Z","duration":121,"status":"PASSED"},{"id":"EID6eec7881-0175-1000-256b-3fac22c7022a","parent":{"ref":"EID6eec7765-0175-1000-4e0c-48de5ec652af"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-28T11:16:32Z","duration":70,"status":"PASSED"},{"id":"EID6eec78c7-0175-1000-e56d-0e4dcaebf021","parent":{"ref":"EID6eec7765-0175-1000-4e0c-48de5ec652af"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-28T11:16:32Z","duration":0,"status":"UNDEFINED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:16:32Z","duration":354,"status":"UNDEFINED"},{"id":"EID6eec78c7-0175-1000-8fa5-6d0b1a071271","testStepResults":{"TestStepResult":[{"id":"EID6eec78c8-0175-1000-a91f-6a3b62326d9c","parent":{"ref":"EID6eec78c7-0175-1000-8fa5-6d0b1a071271"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:16:32Z","duration":3298,"status":"PASSED"},{"id":"EID6eec78c8-0175-1000-ce57-4138f4740fae","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"attachments":{"attachment":[{"ref":"EIDe851b2b3-96cd-4ad0-85e1-bdf959a0b7b1"},{"ref":"EID43d3f503-5a7b-4d32-865d-02ed9a307862"},{"ref":"EID3a1ce849-4593-49e6-8e29-f5b4bce94282"},{"ref":"EID7fed4834-fa44-44e0-b78a-58a86bad60c5"},{"ref":"EID616b5b07-231f-4896-8ed4-04a690cfd3c5"},{"ref":"EID94cc65df-f9e7-41cc-91c3-d37369134ce5"},{"ref":"EID579c75a2-6443-4a34-87fe-f891ff49cf0f"},{"ref":"EID9c24d771-ca37-472c-92c0-0cd0bca73238"},{"ref":"EID5152e295-f646-40f9-8e19-e626111542aa"},{"ref":"EIDfef2e85c-dd2e-486b-bef8-73c43c08b4f9"},{"ref":"EID480b9770-32dd-47f9-b4ba-ac96925fd752"},{"ref":"EID8a3e8347-4cc8-44f8-b893-17a6c7ed20d4"},{"ref":"EID2aecc301-fed7-4b5b-a741-b6673416c385"},{"ref":"EIDfac76096-5015-4bc0-ae41-8a9f933615bc"},{"ref":"EID678c7156-52b1-4af4-8c8e-f5df6a519ba7"},{"ref":"EIDd513c5db-29c4-4b1c-af44-50bf94461e67"},{"ref":"EID363b409f-943a-4b63-8a8d-c60738b29e3d"},{"ref":"EID8cbd0fd3-87e2-4592-87bb-14ffc8bd3b6e"},{"ref":"EIDf599656b-8117-41bc-b546-5bb1949081a1"}]},"parent":{"ref":"EID6eec78c7-0175-1000-8fa5-6d0b1a071271"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:16:32Z","duration":1019,"status":"SKIPPED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:16:32Z","duration":1546,"status":"SKIPPED"},{"id":"EID6eec7ed1-0175-1000-14f0-5e69bf3cedd7","testStepResults":{"TestStepResult":[{"id":"EID6eec7ed1-0175-1000-77e0-ff4ca045aea9","parent":{"ref":"EID6eec7ed1-0175-1000-14f0-5e69bf3cedd7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:16:34Z","duration":3298,"status":"PASSED"},{"id":"EID6eec7ed1-0175-1000-4353-d2dab50ff5fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec7f99-0175-1000-4a92-3e84ced1a2d1","parent":{"ref":"EID6eec7ed1-0175-1000-4353-d2dab50ff5fd"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec7f99-0175-1000-e548-c68c9027dca9","parent":{"ref":"EID6eec7ed1-0175-1000-4353-d2dab50ff5fd"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec7f99-0175-1000-6885-1c8daeb91d29","parent":{"ref":"EID6eec7ed1-0175-1000-4353-d2dab50ff5fd"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec7f99-0175-1000-08b7-956965976404","parent":{"ref":"EID6eec7ed1-0175-1000-4353-d2dab50ff5fd"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5a1bf4cc-079b-45e3-ac1d-f6791e3fb8a3"},{"ref":"EID82cdbac7-7f31-4f64-a37b-3b8787712918"},{"ref":"EID1e29712c-f869-4f2d-96f2-c348c571788a"}]},"parent":{"ref":"EID6eec7ed1-0175-1000-14f0-5e69bf3cedd7"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:16:34Z","duration":120,"status":"PASSED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:16:34Z","duration":200,"status":"PASSED"},{"id":"EID6eec7f99-0175-1000-e883-d00268fac680","testStepResults":{"TestStepResult":[{"id":"EID6eec7f99-0175-1000-3fd4-385f76ad6112","parent":{"ref":"EID6eec7f99-0175-1000-e883-d00268fac680"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:16:34Z","duration":3298,"status":"PASSED"},{"id":"EID6eec7f99-0175-1000-3156-5f3147eda8e5","parent":{"ref":"EID6eec7f99-0175-1000-e883-d00268fac680"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec7f9a-0175-1000-76a1-e3ce167d0448","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec8039-0175-1000-666e-7f23767cbc58","parent":{"ref":"EID6eec7f9a-0175-1000-76a1-e3ce167d0448"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec8039-0175-1000-ada7-a828c0499761","parent":{"ref":"EID6eec7f9a-0175-1000-76a1-e3ce167d0448"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec8039-0175-1000-97c3-dedca7420ac4","parent":{"ref":"EID6eec7f9a-0175-1000-76a1-e3ce167d0448"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec8039-0175-1000-3fbb-f8d5bc8fc471","parent":{"ref":"EID6eec7f9a-0175-1000-76a1-e3ce167d0448"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9e536b20-9a87-4757-9450-2c770d15579e"},{"ref":"EIDc7d6c20b-dbd1-4a89-9024-413fd33725c2"},{"ref":"EIDc08979d5-c452-4920-89bd-ede76d608391"}]},"parent":{"ref":"EID6eec7f99-0175-1000-e883-d00268fac680"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:16:34Z","duration":86,"status":"PASSED"},{"id":"EID6eec8039-0175-1000-3b13-62e2d99b9f2c","attachments":{"attachment":{"ref":"EIDb509d290-dbd1-47b3-82bb-beb873fed546"}},"parent":{"ref":"EID6eec7f99-0175-1000-e883-d00268fac680"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:16:34Z","duration":8,"status":"PASSED"},{"id":"EID6eec804d-0175-1000-36c7-3d590b73ba3a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec805a-0175-1000-46d8-14fe7dc3b425","parent":{"ref":"EID6eec804d-0175-1000-36c7-3d590b73ba3a"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec805a-0175-1000-cebb-d0b11ffcc1bd","parent":{"ref":"EID6eec804d-0175-1000-36c7-3d590b73ba3a"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6eec805a-0175-1000-af7c-cc3ebb98d584","parent":{"ref":"EID6eec804d-0175-1000-36c7-3d590b73ba3a"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4c3e2260-ac87-4e35-bb84-c1d2dd3cea35"},{"ref":"EIDf19b73bd-78c6-4345-87a5-3cc28276b49c"}]},"parent":{"ref":"EID6eec7f99-0175-1000-e883-d00268fac680"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:16:34Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eec6c9d-0175-1000-96ee-0e89f63c2dd2"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:16:34Z","duration":193,"status":"PASSED"}]},"parent":{"ref":"EID2b822d95-7619-456c-83a2-0fc1d7de5f4f"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:16:29Z","duration":5053,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EID91d2a903-b0c3-4231-abd7-9b4971ce7a7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID190a25ea-87cd-488b-a413-e9cab8dcd660","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID190a25ea-87cd-488b-a413-e9cab8dcd660"}},{"type":"ServiceEndpoint","id":"EIDb8dab605-af95-4143-adaf-70fe0c7007ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9bd97f76-9d78-437c-b8e8-c4e583977652","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb5dc2a3d-351e-4f5e-8697-2204fda5027d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDb5dc2a3d-351e-4f5e-8697-2204fda5027d"}},{"type":"GetParameter","id":"EID70048533-f7d2-4752-88b9-56113730de9d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID77b636ba-4b43-4b11-914c-57a72e19452c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID77b636ba-4b43-4b11-914c-57a72e19452c"}},{"type":"ServiceEndpoint","id":"EID67c93dc5-cb2b-4d45-b71d-07005c934f08","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID63e0dd00-5685-4b16-aa7f-b6ee118d1e6c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID0d673623-186b-43d0-bc91-e15647f6cad9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID0d673623-186b-43d0-bc91-e15647f6cad9"}},{"type":"Message","id":"EID9f36a13a-155c-4772-a431-c6297732b89d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID9f36a13a-155c-4772-a431-c6297732b89d"}},{"type":"Message","id":"EID8dd3b1d3-a504-46f2-bd59-494a01e8918f","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8dd3b1d3-a504-46f2-bd59-494a01e8918f"}},{"type":"GetParameter","id":"EID0f269909-63f7-4605-bd1d-60a856609890","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID81404c09-b5a6-49cb-8976-e2d036965941","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID85209e58-3570-445c-a56e-a00428b89635","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID85209e58-3570-445c-a56e-a00428b89635"}},{"type":"ServiceEndpoint","id":"EID603b26b4-a0fc-4e8f-b9d0-30e615e10e30","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID9e3c62e9-2f18-49b0-9eb9-b30ed0c68e6f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID9e3c62e9-2f18-49b0-9eb9-b30ed0c68e6f"}},{"type":"GetParameter","id":"EID56b9ca97-8449-4063-9114-1d5864ef0c32","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa9b807f8-f431-43f9-83ce-f9affe02af4a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa9b807f8-f431-43f9-83ce-f9affe02af4a"}},{"type":"ServiceResponse","id":"EID19870a92-6cf5-486c-8687-9ce346c56c17","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID19870a92-6cf5-486c-8687-9ce346c56c17"}},{"type":"ServiceEndpoint","id":"EIDb0a4ca53-0bbb-4c6a-b0c8-9738f46a57fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDadddbcc1-0f98-40c3-9d00-0468a4812bec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4fd83607-8ff0-4948-b001-fccde8d75d88","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID4179dbd4-7de4-49da-a1fb-01c9309aaaa9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID4179dbd4-7de4-49da-a1fb-01c9309aaaa9"}},{"type":"ServiceResponse","id":"EIDcdc3b4bf-682b-45e7-8193-d4ef6d067286","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDcdc3b4bf-682b-45e7-8193-d4ef6d067286"}},{"type":"Message","id":"EID033c9865-ff6a-4f6f-be0e-299bafdea732","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID033c9865-ff6a-4f6f-be0e-299bafdea732"}},{"type":"GetParameter","id":"EID27c355d8-67af-4301-830c-54730cb2accb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID140c5c03-af96-4383-bd6b-fd247543fc3b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID140c5c03-af96-4383-bd6b-fd247543fc3b"}},{"type":"ServiceEndpoint","id":"EID957d7eb2-27e4-468c-b1d2-38ae9ced2df2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EIDe2f666f0-46a6-4745-8221-a15f71581d59","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6cef6fed-af34-4262-a7ab-e87e1fc633e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID516e56aa-2ece-49af-bd49-9af484527837","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID516e56aa-2ece-49af-bd49-9af484527837"}},{"type":"ServiceEndpoint","id":"EID6d6f98df-4f87-4320-8a60-ec001be0a9fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"GetParameter","id":"EIDc49cc5d8-e96c-4901-a790-a02043cb0c0c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd8939b0d-9510-401e-958e-948d9ab4d86e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5408b6b6-1b06-4fe4-8153-9251c074c2c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAxNV92X2dwa2cuemlw"},{"type":"GetParameter","id":"EIDee3bcd07-185a-4fb6-a0d2-6e0df64b62ae","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5cb39de5-289b-4ac7-9d55-787a5fb70600","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EID17d55a81-4565-4d76-a9c6-0661d45d216c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc7d6c20b-dbd1-4a89-9024-413fd33725c2","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDc7d6c20b-dbd1-4a89-9024-413fd33725c2"}},{"type":"GetParameter","id":"EID62ccad67-2183-43b1-8357-df8fc8a9a026","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID61c4820d-b788-4218-85c6-043927bd7df4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf4985826-1995-49e7-8e44-72f829b7da7a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDf4985826-1995-49e7-8e44-72f829b7da7a"}},{"type":"Message","id":"EIDfa2308a1-8117-49c6-a086-92e50eca3743","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDfa2308a1-8117-49c6-a086-92e50eca3743"}},{"type":"LogFile","id":"EID3a7f60b1-36fd-4633-950d-b902c3e3cceb","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID3a7f60b1-36fd-4633-950d-b902c3e3cceb"}},{"type":"ServiceResponse","id":"EID82cdbac7-7f31-4f64-a37b-3b8787712918","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID82cdbac7-7f31-4f64-a37b-3b8787712918"}},{"type":"ServiceEndpoint","id":"EID9e536b20-9a87-4757-9450-2c770d15579e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID9dec02d8-ad76-4643-95aa-5e92bab17369","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID934fb3ca-1bc8-466e-a69b-5c5cfc8bd947","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID934fb3ca-1bc8-466e-a69b-5c5cfc8bd947"}},{"type":"GetParameter","id":"EID64b7f1d8-c705-4310-b8f5-e7e5061106aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc532a422-27cb-4bee-9f7d-a6c80b4551bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID34dd3399-e32b-44b3-980f-2e0b2cb9c714","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EIDddc9ee13-bf9a-48a3-8479-f1b7543cb94a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID751c0e21-c777-4b5e-91bb-e9d985361733","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID751c0e21-c777-4b5e-91bb-e9d985361733"}},{"type":"Message","id":"EIDc1dd0d32-e38b-4b74-8006-803ed1f5c457","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDc1dd0d32-e38b-4b74-8006-803ed1f5c457"}},{"type":"Message","id":"EID8cbd0fd3-87e2-4592-87bb-14ffc8bd3b6e","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8cbd0fd3-87e2-4592-87bb-14ffc8bd3b6e"}},{"type":"GetParameter","id":"EID04e6f617-a689-4a02-a123-269139074326","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID69643501-61b0-476a-996b-1d60f593ec93","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID69643501-61b0-476a-996b-1d60f593ec93"}},{"type":"ServiceResponse","id":"EIDcfba8e00-0515-479e-8748-132d7b01047f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDcfba8e00-0515-479e-8748-132d7b01047f"}},{"type":"ServiceEndpoint","id":"EIDe7db2def-af13-4320-9ade-5881aeafc6bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDb93ac2f5-a62d-4635-9b0a-86d9be9f2e92","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID8d307448-2317-485a-9781-a491792c4c5b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8d307448-2317-485a-9781-a491792c4c5b"}},{"type":"ServiceResponse","id":"EIDfb711e9a-ea45-4918-b691-16ad4b28c412","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDfb711e9a-ea45-4918-b691-16ad4b28c412"}},{"type":"GetParameter","id":"EIDff433b80-5fb6-402d-8742-257ba712d8fd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID5e8c7ee5-73bd-4760-8f0b-4b04449be15f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID5e8c7ee5-73bd-4760-8f0b-4b04449be15f"}},{"type":"ServiceResponse","id":"EID499d2944-df94-4234-9192-027b901ee437","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID499d2944-df94-4234-9192-027b901ee437"}},{"type":"ServiceEndpoint","id":"EIDf4b91163-d8ea-44a3-9e50-1c5e6f9027e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb649ce59-c4d7-480e-8f02-79054dfd6eec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EID2654846b-43ee-4616-a49c-9ddfd2ae7c2f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EIDfac76096-5015-4bc0-ae41-8a9f933615bc","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDfac76096-5015-4bc0-ae41-8a9f933615bc"}},{"type":"ServiceEndpoint","id":"EIDa33640aa-bcf8-4545-a657-42de048f561e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID274166b0-a4ee-4cc7-94a1-4fc8ab878df1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID9e310e3a-2caa-45d1-9b5c-69b235e6dc07","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID9e310e3a-2caa-45d1-9b5c-69b235e6dc07"}},{"type":"ServiceEndpoint","id":"EID94a39958-0f89-49f3-8df0-b1c50c1bc12e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID8ccf64a8-3044-4154-8ca6-590a685c674e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID53d30dfe-3776-4d48-9575-0989cd2ac81d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID7fed4834-fa44-44e0-b78a-58a86bad60c5","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID7fed4834-fa44-44e0-b78a-58a86bad60c5"}},{"type":"GetParameter","id":"EIDfc552b22-477d-4a48-9206-8a9ea5bab3ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDe6056515-a2f6-4330-a568-b5a22b213386","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EIDce0282be-28fc-4004-896f-77575314fa3f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID8d40999a-49af-4674-9c7a-3113f8755538","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8d40999a-49af-4674-9c7a-3113f8755538"}},{"type":"Message","id":"EIDfef2e85c-dd2e-486b-bef8-73c43c08b4f9","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDfef2e85c-dd2e-486b-bef8-73c43c08b4f9"}},{"type":"Message","id":"EIDcacb0cae-d83f-486b-ad88-31a66d7a6a58","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDcacb0cae-d83f-486b-ad88-31a66d7a6a58"}},{"type":"GetParameter","id":"EIDf19b73bd-78c6-4345-87a5-3cc28276b49c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID6ee5f4a2-672f-4609-b09c-3365b91ea96d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID6ee5f4a2-672f-4609-b09c-3365b91ea96d"}},{"type":"ServiceResponse","id":"EIDa4527810-c656-4353-bf09-12ca2794d5c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa4527810-c656-4353-bf09-12ca2794d5c4"}},{"type":"ServiceResponse","id":"EID66be07c8-de79-47f8-badb-fc363cc4153b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID66be07c8-de79-47f8-badb-fc363cc4153b"}},{"type":"ServiceResponse","id":"EID4e6ef610-e801-4cbf-8f03-0f5447810edf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID4e6ef610-e801-4cbf-8f03-0f5447810edf"}},{"type":"ServiceResponse","id":"EIDb9ef9143-419f-4be8-9760-25b1c71891f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDb9ef9143-419f-4be8-9760-25b1c71891f6"}},{"type":"Message","id":"EID9173786f-f8a0-4924-bd03-50b6ed4a6aee","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID9173786f-f8a0-4924-bd03-50b6ed4a6aee"}},{"type":"GetParameter","id":"EID96b07edd-9442-4edb-ad3c-2b2b2798fed3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAxNV9sX2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EIDdc401acb-2844-4efc-9534-98e77f822a39","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID7f977318-3791-44ae-8662-c596ac10c27a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID7f977318-3791-44ae-8662-c596ac10c27a"}},{"type":"ServiceEndpoint","id":"EID3038d259-d2da-4a1e-9a26-169dc7b17899","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDacbe6901-c6cc-48f0-afc3-7e4c587dc0b9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EID5a1bf4cc-079b-45e3-ac1d-f6791e3fb8a3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa1f11088-3c28-4b10-925a-e70082953d25","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa1f11088-3c28-4b10-925a-e70082953d25"}},{"type":"Message","id":"EID480b9770-32dd-47f9-b4ba-ac96925fd752","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID480b9770-32dd-47f9-b4ba-ac96925fd752"}},{"type":"Message","id":"EIDbc9bd53a-2926-400b-989c-489576f7abb8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDbc9bd53a-2926-400b-989c-489576f7abb8"}},{"type":"ServiceEndpoint","id":"EID6777a5e7-72ff-46ae-9c00-b558e0ef5b7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID87ceaed1-f663-45d7-a5a9-f6fea38e8cbb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID87ceaed1-f663-45d7-a5a9-f6fea38e8cbb"}},{"type":"ServiceResponse","id":"EIDb2aee476-d3c2-4c03-8717-ef09ce9af90e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDb2aee476-d3c2-4c03-8717-ef09ce9af90e"}},{"type":"Message","id":"EIDd513c5db-29c4-4b1c-af44-50bf94461e67","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDd513c5db-29c4-4b1c-af44-50bf94461e67"}},{"type":"ServiceEndpoint","id":"EIDb75eaf92-bf4a-4d56-a51a-57fd3e73c2fc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDa3666ee3-ca40-4c1b-b93a-b2032798c849","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa3666ee3-ca40-4c1b-b93a-b2032798c849"}},{"type":"ServiceResponse","id":"EIDc966d037-eebb-4676-be6a-6a6e6aa2c00f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDc966d037-eebb-4676-be6a-6a6e6aa2c00f"}},{"type":"ServiceResponse","id":"EIDf841c65e-5758-4dd7-b63b-80cd6213fa55","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDf841c65e-5758-4dd7-b63b-80cd6213fa55"}},{"type":"GetParameter","id":"EIDd47e5a84-27e8-408e-97d1-716ae98c1944","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID6baeac34-36e6-481b-badf-d365c6fc84a6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID6baeac34-36e6-481b-badf-d365c6fc84a6"}},{"type":"ServiceResponse","id":"EIDcb2c03fa-6d3f-4de7-bd5c-28d2f94cd1ec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDcb2c03fa-6d3f-4de7-bd5c-28d2f94cd1ec"}},{"type":"GetParameter","id":"EID310618ad-45fe-4a0c-81fe-a4f9f466b4b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd1e83753-2bef-4c6d-9fff-bf0140907656","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID9fb86503-9527-4060-b858-35d63b64a056","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID9fb86503-9527-4060-b858-35d63b64a056"}},{"type":"Message","id":"EID4f223a18-782f-4b68-a471-74fe0de910ca","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID4f223a18-782f-4b68-a471-74fe0de910ca"}},{"type":"Message","id":"EIDa21c1aa7-c2e4-495d-b51b-927ac534c932","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa21c1aa7-c2e4-495d-b51b-927ac534c932"}},{"type":"ServiceResponse","id":"EID57293281-8438-4e37-b6ba-81e7bc72066f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID57293281-8438-4e37-b6ba-81e7bc72066f"}},{"type":"ServiceEndpoint","id":"EID2a0eae04-09d9-46e6-9f52-586e94143ba7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID1c67a7ad-2dbc-4dc3-a763-ef1cdd57f625","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID1c67a7ad-2dbc-4dc3-a763-ef1cdd57f625"}},{"type":"ServiceResponse","id":"EID8f9ff3d1-9c07-42fd-8990-83377291b4a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8f9ff3d1-9c07-42fd-8990-83377291b4a8"}},{"type":"Message","id":"EIDeff57f8d-621f-490d-89dd-7a4127b6a85b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDeff57f8d-621f-490d-89dd-7a4127b6a85b"}},{"type":"ServiceEndpoint","id":"EID2c481b70-b97d-4e2b-82ba-2b3149bfd3b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf599656b-8117-41bc-b546-5bb1949081a1","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDf599656b-8117-41bc-b546-5bb1949081a1"}},{"type":"GetParameter","id":"EID27dbf4ec-cc73-4865-a010-78ed904dd18e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID8233f32f-9245-4468-a095-0a82ebfde1f7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EIDb64b5227-75d4-492a-87b8-6d294059097c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7b87a067-302f-4a35-86a6-271b5fe77812","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAxNV92X2dwa2cuemlw"},{"type":"Message","id":"EIDb509d290-dbd1-47b3-82bb-beb873fed546","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDb509d290-dbd1-47b3-82bb-beb873fed546"}},{"type":"ServiceEndpoint","id":"EID94f8abc8-efef-4d7c-9c62-1f6ee09da737","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID7ca174d1-9f18-4ea0-b869-12f51fc837e6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID7ca174d1-9f18-4ea0-b869-12f51fc837e6"}},{"type":"ServiceEndpoint","id":"EID814683cb-5278-40a6-8341-20a1c2510b7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EIDe224e823-51c5-4134-aeb9-156188d98a69","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDe224e823-51c5-4134-aeb9-156188d98a69"}},{"type":"GetParameter","id":"EIDb44c6c51-3985-48be-a968-69d27c8c2c1a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID7ea487bf-0f29-4640-9fae-a72c52d01dbc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EIDf5f8fc19-b407-4984-b649-92eeb75d79bf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDf5f8fc19-b407-4984-b649-92eeb75d79bf"}},{"type":"ServiceResponse","id":"EIDa7e2ed55-71fe-4c2e-9642-c42dcc1d6e77","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa7e2ed55-71fe-4c2e-9642-c42dcc1d6e77"}},{"type":"Message","id":"EID284bdd35-cdca-4253-b2f0-dc2a740cfec7","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID284bdd35-cdca-4253-b2f0-dc2a740cfec7"}},{"type":"GetParameter","id":"EIDb8774515-1c4a-4b8c-b95c-9d5dda463d91","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID5152e295-f646-40f9-8e19-e626111542aa","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID5152e295-f646-40f9-8e19-e626111542aa"}},{"type":"ServiceEndpoint","id":"EID132700f7-0e18-4f76-9b8a-2ef90378d1c0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7d975edd-b07d-4dd7-bec9-d741e7ab5127","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9f78b2b6-6cea-4b48-bd46-9acebb8553db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe851b2b3-96cd-4ad0-85e1-bdf959a0b7b1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDe851b2b3-96cd-4ad0-85e1-bdf959a0b7b1"}},{"type":"ServiceResponse","id":"EIDe290de44-db5f-47db-a642-1341dc842620","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDe290de44-db5f-47db-a642-1341dc842620"}},{"type":"Message","id":"EID616b5b07-231f-4896-8ed4-04a690cfd3c5","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID616b5b07-231f-4896-8ed4-04a690cfd3c5"}},{"type":"ServiceEndpoint","id":"EID3f5ebe23-67c5-41de-b40e-e8bd3ab8a218","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1ae47b0d-0cd2-4b34-b18f-2dac25aae640","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID5a836ec3-b84f-4caa-857b-3907b8d7ad5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID5a836ec3-b84f-4caa-857b-3907b8d7ad5d"}},{"type":"GetParameter","id":"EID0a48b78e-b971-4509-a01c-26bc2664674f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID4c3e2260-ac87-4e35-bb84-c1d2dd3cea35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID34c3664f-3b3f-4ab7-ab54-ddc37bcbbd45","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5060164b-52d2-4004-abd3-49f1e78523f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID5f545e0e-a67b-4366-883f-c41d98b03310","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID2765c29c-4966-4978-964f-eac5ab10d0ad","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID82a1813c-9d08-4ffe-9898-4112dd0aec2b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID9fbb4b61-33bd-42a4-aabc-aa4b9ee8f233","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe75682fd-6345-469f-b8d6-c2fc4f57d568","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDe75682fd-6345-469f-b8d6-c2fc4f57d568"}},{"type":"Message","id":"EID97bb84d8-4f32-4473-a456-899380e2fe74","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID97bb84d8-4f32-4473-a456-899380e2fe74"}},{"type":"ServiceEndpoint","id":"EID455470a9-4eb9-4a40-b883-4b104c6b1450","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID48c9b2fc-de3a-4caa-8618-4f4cf2d13806","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID48c9b2fc-de3a-4caa-8618-4f4cf2d13806"}},{"type":"ServiceEndpoint","id":"EID956c326d-f48c-47f1-952e-a347ec939360","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDae09ea11-d02a-4a61-aab8-6792bebfb8d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID5031822c-e67c-4cdd-b311-7de6417bc9ec","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID5031822c-e67c-4cdd-b311-7de6417bc9ec"}},{"type":"ServiceEndpoint","id":"EID07f82bde-f9e3-4e92-86ca-1eeae8d2fbb2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID915dffdb-28f3-49e1-9db7-34c08f94e179","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID915dffdb-28f3-49e1-9db7-34c08f94e179"}},{"type":"ServiceEndpoint","id":"EID91dad01e-4a0b-49ad-a98c-c68beab4561e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDc8ebebdf-30bd-465f-93bc-e9c58e9bedd0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDc8ebebdf-30bd-465f-93bc-e9c58e9bedd0"}},{"type":"ServiceEndpoint","id":"EID574bb216-bc4b-4619-9ca5-76e448f20091","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1e29712c-f869-4f2d-96f2-c348c571788a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID366d5c2f-c9d0-4843-be22-b97dab74217c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID366d5c2f-c9d0-4843-be22-b97dab74217c"}},{"type":"Message","id":"EID2aecc301-fed7-4b5b-a741-b6673416c385","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID2aecc301-fed7-4b5b-a741-b6673416c385"}},{"type":"Message","id":"EID94cc65df-f9e7-41cc-91c3-d37369134ce5","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID94cc65df-f9e7-41cc-91c3-d37369134ce5"}},{"type":"Message","id":"EID579c75a2-6443-4a34-87fe-f891ff49cf0f","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID579c75a2-6443-4a34-87fe-f891ff49cf0f"}},{"type":"ServiceResponse","id":"EID0d0c2ccd-f7bb-4b5d-b9db-971945167deb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID0d0c2ccd-f7bb-4b5d-b9db-971945167deb"}},{"type":"ServiceResponse","id":"EID3cf89040-e5a5-48df-b904-c460a0ae2603","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID3cf89040-e5a5-48df-b904-c460a0ae2603"}},{"type":"ServiceResponse","id":"EIDa11ae6bd-f126-4f3e-8b47-f2b7f1ff58a0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa11ae6bd-f126-4f3e-8b47-f2b7f1ff58a0"}},{"type":"Message","id":"EID8915d5b1-562f-4a09-b6ca-367587908c07","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8915d5b1-562f-4a09-b6ca-367587908c07"}},{"type":"Message","id":"EID8a3e8347-4cc8-44f8-b893-17a6c7ed20d4","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID8a3e8347-4cc8-44f8-b893-17a6c7ed20d4"}},{"type":"Message","id":"EID55827216-6fcc-40e4-8b3e-4d189129d072","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID55827216-6fcc-40e4-8b3e-4d189129d072"}},{"type":"ServiceResponse","id":"EIDbfb027ff-35b1-47f2-9b6a-d27096a40638","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDbfb027ff-35b1-47f2-9b6a-d27096a40638"}},{"type":"Message","id":"EID7da07c75-3151-49a5-95d5-69921075e5a5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID7da07c75-3151-49a5-95d5-69921075e5a5"}},{"type":"Message","id":"EID420c8b0b-22ea-49ab-a2f9-017bfcb6f82f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID420c8b0b-22ea-49ab-a2f9-017bfcb6f82f"}},{"type":"Message","id":"EID55818b03-44a8-4eb8-bd69-e3a24f07beea","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID55818b03-44a8-4eb8-bd69-e3a24f07beea"}},{"type":"ServiceResponse","id":"EID1934583a-2339-40c8-8ccb-e151c068f995","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID1934583a-2339-40c8-8ccb-e151c068f995"}},{"type":"Message","id":"EID6190741f-fa8f-464f-adc6-b6be3240690e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID6190741f-fa8f-464f-adc6-b6be3240690e"}},{"type":"ServiceResponse","id":"EID75a8ed60-ce08-4c11-9e7a-55042f5ddc7d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID75a8ed60-ce08-4c11-9e7a-55042f5ddc7d"}},{"type":"Message","id":"EID43d3f503-5a7b-4d32-865d-02ed9a307862","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID43d3f503-5a7b-4d32-865d-02ed9a307862"}},{"type":"Message","id":"EID9c24d771-ca37-472c-92c0-0cd0bca73238","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID9c24d771-ca37-472c-92c0-0cd0bca73238"}},{"type":"Message","id":"EIDdd1b9dc2-1926-4068-bfff-ad473089223a","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDdd1b9dc2-1926-4068-bfff-ad473089223a"}},{"type":"GetParameter","id":"EIDeb887304-19a2-46bf-a504-c27456a7ef0d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID46cb7bd4-d95b-418b-85d1-9852a2f52ad3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID6c40121f-ffde-4328-a976-8fb955c459a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbe40becb-32a9-4434-a149-833a061402c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbe30153d-f33a-4731-bfda-0026261b3b7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID579a80d3-5d38-4ab5-8e89-871c99ff2fe4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID579a80d3-5d38-4ab5-8e89-871c99ff2fe4"}},{"type":"Message","id":"EID3a1ce849-4593-49e6-8e29-f5b4bce94282","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID3a1ce849-4593-49e6-8e29-f5b4bce94282"}},{"type":"Message","id":"EID0aad8af3-0c53-4586-8e8f-6d170a4c3a4f","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID0aad8af3-0c53-4586-8e8f-6d170a4c3a4f"}},{"type":"ServiceEndpoint","id":"EIDdc04622a-4327-449b-a5b2-ee4fd8044a0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0ab4fbff-d228-4004-9b61-38f3bd8d968f","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID0ab4fbff-d228-4004-9b61-38f3bd8d968f"}},{"type":"GetParameter","id":"EID5a4d5f00-8250-4133-9659-c3772a6f2139","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDeb0228fe-aae9-4279-a3fa-491468d13126","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd0613d38-9147-4457-8a0a-6db6741a24db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDad47f8ad-b376-4875-96d0-fca46283b162","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDad47f8ad-b376-4875-96d0-fca46283b162"}},{"type":"GetParameter","id":"EIDc08979d5-c452-4920-89bd-ede76d608391","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID363b409f-943a-4b63-8a8d-c60738b29e3d","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID363b409f-943a-4b63-8a8d-c60738b29e3d"}},{"type":"ServiceResponse","id":"EID3874a2d8-a1d4-4f49-a620-161eed46ce19","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID3874a2d8-a1d4-4f49-a620-161eed46ce19"}},{"type":"ServiceResponse","id":"EIDa3c6c3c2-0b4d-420d-879d-ffd0375cb6b4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EIDa3c6c3c2-0b4d-420d-879d-ffd0375cb6b4"}},{"type":"ServiceEndpoint","id":"EID93cdc8b0-ad4c-4eb4-a258-3385ad675a0e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5efbceb2-498d-401e-84a8-bc81d33b2dcd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID51db39c6-1a83-4a1d-972e-e0ed8b1fef94","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID51db39c6-1a83-4a1d-972e-e0ed8b1fef94"}},{"type":"ServiceEndpoint","id":"EIDe72496a9-e0cc-46c8-a043-8a699bc7572e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID678c7156-52b1-4af4-8c8e-f5df6a519ba7","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID2b822d95-7619-456c-83a2-0fc1d7de5f4f/Attachments/EID678c7156-52b1-4af4-8c8e-f5df6a519ba7"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:15:58Z","duration":36195,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:16:56.982 [print] EIDe5747c96-0de3-452a-8d3f-9b753acc782e
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:56.982 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:16:56.982 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:56.982 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:16:56.982 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e5747c96-0de3-452a-8d3f-9b753acc782e.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:16:56.982 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e5747c96-0de3-452a-8d3f-9b753acc782e.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:56.982 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe5747c96-0de3-452a-8d3f-9b753acc782e/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.018
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:16:57.002 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
11:16:57.003 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.913
* print "testing url:" + metadata.url 0.000
11:16:55.598 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 0.913
11:16:55.598 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:56.511 response time in milliseconds: 912.94
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:56 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223D549BC6A94
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.786
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.785
11:16:56.516 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:57.301 response time in milliseconds: 784.91
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:57 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223D57942815E
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:16:57.301 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.453
* print "testing url:" + metadata.url 0.000
11:06:12.622 [print] testing url:https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.453
11:06:12.624 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:13.073 response time in milliseconds: 448.46
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:12 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.422
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.421
11:06:13.081 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:13.502 response time in milliseconds: 420.65
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:12 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:06:13.503 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
6.439
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:37.069 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.439
11:16:37.069 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities"}}}

11:16:43.508 response time in milliseconds: 6333.42
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883803297","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:43.508 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.434
* print "testing url:" + metadata.url 0.000
11:07:02.532 [print] testing url:https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.433
11:07:02.534 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:02.964 response time in milliseconds: 429.82
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:07:02 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.420
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.420
11:07:02.973 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:03.393 response time in milliseconds: 419.27
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:07:02 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:07:03.393 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.022
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:58.339 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.021
11:10:58.339 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities"}}}

11:11:01.360 response time in milliseconds: 2915.41
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:01 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883460895","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:11:01.361 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:59.797
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:06.537 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.649
11:06:06.538 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:06:17.184 response time in milliseconds: 9901.71
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:16 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:14 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/f727c3f4-c957-4445-a582-447584d64552.json","testRuns":{"TestRun":{"id":"EIDf727c3f4-c957-4445-a582-447584d64552","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:13.91Z","testTasks":{"TestTask":{"id":"EID67550c0f-c306-4fee-b125-00d1d36d0ec2","parent":{"ref":"EIDf727c3f4-c957-4445-a582-447584d64552"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID3bd9d4cb-d612-41b6-a033-5d972420480c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID3bd9d4cb-d612-41b6-a033-5d972420480c","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:06.988Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:10.88Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.009
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:17.196 [print] EIDf727c3f4-c957-4445-a582-447584d64552
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:17.197 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:17.197 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:17.197 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f727c3f4-c957-4445-a582-447584d64552.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:17.198 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.001
11:06:17.200 [print] statuspath TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552
* print 'progresspath ', progresspath 0.000
11:06:17.200 [print] progresspath  TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
Given path progresspath 0.000
When method GET 0.516
11:06:17.201 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:17.716 response time in milliseconds: 514.26
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:17 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:06:17.717 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)",
    "28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:06:13 - Preparing 1 Test Task:",
    "28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)",
    "28.10.2020 11:06:13 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:06:13 -  with parameters: ",
    "28.10.2020 11:06:13 - etf.testcases = *",
    "28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:06:13 - Setting state to CREATED",
    "28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z",
    "28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:06:16 - Project Properties: ",
    "28.10.2020 11:06:16 - etf.testcases - * ",
    "28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:06:16 - username -  ",
    "28.10.2020 11:06:16 - authUser -  ",
    "28.10.2020 11:06:16 - authMethod - basic ",
    "28.10.2020 11:06:16 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:48.617
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
11:06:17.718 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:18.234 response time in milliseconds: 515.07
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:18 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}

11:06:18.236 retry condition not satisfied: response.val == response.max
11:06:18.236 sleeping before retry #1
11:06:23.237 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:23.761 response time in milliseconds: 522.87
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:23 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}

11:06:23.761 retry condition not satisfied: response.val == response.max
11:06:23.761 sleeping before retry #2
11:06:28.762 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:29.304 response time in milliseconds: 541.18
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:06:29 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}

11:06:29.305 retry condition not satisfied: response.val == response.max
11:06:29.305 sleeping before retry #3
11:06:34.306 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:34.829 response time in milliseconds: 521.87
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:06:34 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"68","max":"69","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:06:34.833 retry condition not satisfied: response.val == response.max
11:06:34.833 sleeping before retry #4
11:06:39.834 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:40.359 response time in milliseconds: 524.20
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:06:40 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"137","max":"138","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:40.360 retry condition not satisfied: response.val == response.max
11:06:40.360 sleeping before retry #5
11:06:45.361 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:45.874 response time in milliseconds: 511.02
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:06:45 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:45.874 retry condition not satisfied: response.val == response.max
11:06:45.874 sleeping before retry #6
11:06:50.875 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:51.391 response time in milliseconds: 514.66
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:06:51 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:51.391 retry condition not satisfied: response.val == response.max
11:06:51.391 sleeping before retry #7
11:06:56.393 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:56.918 response time in milliseconds: 524.19
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:06:56 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:56.924 retry condition not satisfied: response.val == response.max
11:06:56.925 sleeping before retry #8
11:07:01.926 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:02.441 response time in milliseconds: 511.39
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:07:02 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:02.441 retry condition not satisfied: response.val == response.max
11:07:02.441 sleeping before retry #9
11:07:07.442 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:07.955 response time in milliseconds: 510.66
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:07:07 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:07.957 retry condition not satisfied: response.val == response.max
11:07:07.957 sleeping before retry #10
11:07:12.979 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:13.491 response time in milliseconds: 510.92
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:07:13 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:13.491 retry condition not satisfied: response.val == response.max
11:07:13.491 sleeping before retry #11
11:07:18.492 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:21.857 response time in milliseconds: 3364.36
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:07:21 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:21.857 retry condition not satisfied: response.val == response.max
11:07:21.857 sleeping before retry #12
11:07:26.858 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:27.500 response time in milliseconds: 640.88
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:07:27 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:27.500 retry condition not satisfied: response.val == response.max
11:07:27.500 sleeping before retry #13
11:07:32.501 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:33.029 response time in milliseconds: 523.69
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:07:32 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:33.029 retry condition not satisfied: response.val == response.max
11:07:33.029 sleeping before retry #14
11:07:38.031 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:38.547 response time in milliseconds: 509.85
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:07:38 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:38.549 retry condition not satisfied: response.val == response.max
11:07:38.549 sleeping before retry #15
11:07:43.550 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:44.224 response time in milliseconds: 672.81
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:07:44 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:44.233 retry condition not satisfied: response.val == response.max
11:07:44.233 sleeping before retry #16
11:07:49.234 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:49.763 response time in milliseconds: 524.55
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:07:49 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:49.764 retry condition not satisfied: response.val == response.max
11:07:49.764 sleeping before retry #17
11:07:54.765 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:55.291 response time in milliseconds: 524.58
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:07:55 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:07:55.291 retry condition not satisfied: response.val == response.max
11:07:55.291 sleeping before retry #18
11:08:00.292 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:00.806 response time in milliseconds: 512.86
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:08:00 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:00.812 retry condition not satisfied: response.val == response.max
11:08:00.812 sleeping before retry #19
11:08:05.813 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:06.335 response time in milliseconds: 520.42
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:08:06 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 -  TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 -  with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username -  ","28.10.2020 11:06:16 - authUser -  ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:08:06.335 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.603
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:21.560 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.603
11:12:21.561 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities"}}}

11:12:23.163 response time in milliseconds: 1495.52
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:22 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883542989","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:12:23.164 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.401
* print "testing url:" + metadata.url 0.000
11:10:29.975 [print] testing url:https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.401
11:10:29.975 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:30.377 response time in milliseconds: 401.01
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:30 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.400
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.400
11:10:30.380 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:30.780 response time in milliseconds: 399.35
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:30 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:30.780 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.739
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:56.026 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.738
11:15:56.027 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities"}}}

11:15:59.765 response time in milliseconds: 3631.10
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883759592","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:59.766 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.403
* print "testing url:" + metadata.url 0.000
11:10:40.003 [print] testing url:https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.403
11:10:40.005 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:40.407 response time in milliseconds: 401.46
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:40 GMT
1 < ETag: "1943a-5af58a6554f7f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.406
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.406
11:10:40.414 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:40.820 response time in milliseconds: 405.31
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:40 GMT
1 < ETag: "1943a-5af58a6554f7f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:40.820 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.980
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:04.837 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.979
11:09:04.838 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 296
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities"}}}

11:09:06.816 response time in milliseconds: 1873.54
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:06 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883346639","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:06.817 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
2.682
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:11.249 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.682
11:15:11.251 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities"}}}

11:15:13.931 response time in milliseconds: 2574.25
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883713755","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:13.931 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.419
* print "testing url:" + metadata.url 0.000
11:14:24.211 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.418
11:14:24.213 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:24.630 response time in milliseconds: 417.39
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:14:24 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.396
Given url metadata.url 0.000
When method HEAD 0.395
11:14:24.636 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:25.032 response time in milliseconds: 395.26
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:14:24 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
7.708
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:43.820 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.708
11:12:43.821 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities"}}}

11:12:51.529 response time in milliseconds: 7602.41
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:51 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883571359","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:12:51.529 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.410
* print "testing url:" + metadata.url 0.000
11:10:54.843 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.409
11:10:54.847 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:55.253 response time in milliseconds: 405.27
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:55 GMT
1 < ETag: "19004-5af58ad51b2ef-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.398
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.397
11:10:55.261 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:55.654 response time in milliseconds: 392.67
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:55 GMT
1 < ETag: "19004-5af58ad51b2ef-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:55.654 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.390
* print "testing url:" + metadata.url 0.000
11:09:32.325 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.390
11:09:32.326 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:32.716 response time in milliseconds: 389.50
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:32 GMT
1 < ETag: "18b3f-5af58a64dbdf8-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.399
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.398
11:09:32.724 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:33.122 response time in milliseconds: 397.89
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:33 GMT
1 < ETag: "18b3f-5af58a64dbdf8-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:33.122 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.892
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:38.096 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.891
11:10:38.096 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities"}}}

11:10:39.987 response time in milliseconds: 1785.65
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:39 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883439811","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:39.988 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.080
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:57.913 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.080
11:13:57.914 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS"}}}

11:14:00.994 response time in milliseconds: 2974.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883640824","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:00.994 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.422
* print "testing url:" + metadata.url 0.000
11:15:03.178 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.422
11:15:03.179 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:03.601 response time in milliseconds: 421.96
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:15:03 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.408
Given url metadata.url 0.000
When method HEAD 0.407
11:15:03.604 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:04.012 response time in milliseconds: 407.44
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:15:03 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.892
* print "testing url:" + metadata.url 0.000
11:14:41.713 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 0.892
11:14:41.713 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:42.605 response time in milliseconds: 892.09
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:42 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223B61C83FF59
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.415
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.414
11:14:42.610 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:43.025 response time in milliseconds: 414.08
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:42 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223B6411EF6B0
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:14:43.025 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
35.426
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:19.376 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.701
11:15:19.379 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:15:24.076 response time in milliseconds: 3932.92
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:23 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:15:21 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/94357bbb-2bc5-48b1-a2b0-69d555c3d244.json","testRuns":{"TestRun":{"id":"EID94357bbb-2bc5-48b1-a2b0-69d555c3d244","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:15:21.089Z","testTasks":{"TestTask":{"id":"EID3e9a1e4c-a7d1-4133-8176-9dfa807c6594","parent":{"ref":"EID94357bbb-2bc5-48b1-a2b0-69d555c3d244"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDd693f2aa-0350-42d0-a8f6-e276c27523f5"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDd693f2aa-0350-42d0-a8f6-e276c27523f5","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:15:19.828Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:15:20.652Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:15:24.079 [print] EID94357bbb-2bc5-48b1-a2b0-69d555c3d244
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:15:24.079 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:15:24.079 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:15:24.079 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/94357bbb-2bc5-48b1-a2b0-69d555c3d244.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:15:24.079 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:15:24.079 [print] statuspath TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244
* print 'progresspath ', progresspath 0.000
11:15:24.079 [print] progresspath  TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/progress
Given path progresspath 0.000
When method GET 0.521
11:15:24.080 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:24.601 response time in milliseconds: 521.02
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:15:24 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:15:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:21 UTC 2020)","28.10.2020 11:15:21 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:21 - Preparing 1 Test Task:","28.10.2020 11:15:21 -  TestTask 1 (3e9a1e4c-a7d1-4133-8176-9dfa807c6594)","28.10.2020 11:15:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:21 -  with parameters: ","28.10.2020 11:15:21 - etf.testcases = *","28.10.2020 11:15:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:21 - Setting state to CREATED","28.10.2020 11:15:21 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:21 - Starting TestRun.94357bbb-2bc5-48b1-a2b0-69d555c3d244 at 2020-10-28T11:15:23Z","28.10.2020 11:15:23 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:23 - Project Properties: ","28.10.2020 11:15:23 - etf.testcases - * ","28.10.2020 11:15:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:15:23 - username -  ","28.10.2020 11:15:23 - authUser -  ","28.10.2020 11:15:23 - authMethod - basic ","28.10.2020 11:15:23 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:15:24.601 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:15:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:21 UTC 2020)",
    "28.10.2020 11:15:21 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:15:21 - Preparing 1 Test Task:",
    "28.10.2020 11:15:21 -  TestTask 1 (3e9a1e4c-a7d1-4133-8176-9dfa807c6594)",
    "28.10.2020 11:15:21 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:15:21 -  with parameters: ",
    "28.10.2020 11:15:21 - etf.testcases = *",
    "28.10.2020 11:15:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:15:21 - Setting state to CREATED",
    "28.10.2020 11:15:21 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:15:21 - Starting TestRun.94357bbb-2bc5-48b1-a2b0-69d555c3d244 at 2020-10-28T11:15:23Z",
    "28.10.2020 11:15:23 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:15:23 - Project Properties: ",
    "28.10.2020 11:15:23 - etf.testcases - * ",
    "28.10.2020 11:15:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:15:23 - username -  ",
    "28.10.2020 11:15:23 - authUser -  ",
    "28.10.2020 11:15:23 - authMethod - basic ",
    "28.10.2020 11:15:23 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.562
11:15:24.602 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:25.110 response time in milliseconds: 507.66
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:15:25 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:15:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:21 UTC 2020)","28.10.2020 11:15:21 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:21 - Preparing 1 Test Task:","28.10.2020 11:15:21 -  TestTask 1 (3e9a1e4c-a7d1-4133-8176-9dfa807c6594)","28.10.2020 11:15:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:21 -  with parameters: ","28.10.2020 11:15:21 - etf.testcases = *","28.10.2020 11:15:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:21 - Setting state to CREATED","28.10.2020 11:15:21 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:21 - Starting TestRun.94357bbb-2bc5-48b1-a2b0-69d555c3d244 at 2020-10-28T11:15:23Z","28.10.2020 11:15:23 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:23 - Project Properties: ","28.10.2020 11:15:23 - etf.testcases - * ","28.10.2020 11:15:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:15:23 - username -  ","28.10.2020 11:15:23 - authUser -  ","28.10.2020 11:15:23 - authMethod - basic ","28.10.2020 11:15:23 - TestRunTask initialized"]}

11:15:25.110 retry condition not satisfied: response.val == response.max
11:15:25.110 sleeping before retry #1
11:15:30.111 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:30.626 response time in milliseconds: 514.51
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:15:30 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"85","max":"86","log":["28.10.2020 11:15:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:21 UTC 2020)","28.10.2020 11:15:21 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:21 - Preparing 1 Test Task:","28.10.2020 11:15:21 -  TestTask 1 (3e9a1e4c-a7d1-4133-8176-9dfa807c6594)","28.10.2020 11:15:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:21 -  with parameters: ","28.10.2020 11:15:21 - etf.testcases = *","28.10.2020 11:15:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:21 - Setting state to CREATED","28.10.2020 11:15:21 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:21 - Starting TestRun.94357bbb-2bc5-48b1-a2b0-69d555c3d244 at 2020-10-28T11:15:23Z","28.10.2020 11:15:23 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:23 - Project Properties: ","28.10.2020 11:15:23 - etf.testcases - * ","28.10.2020 11:15:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:15:23 - username -  ","28.10.2020 11:15:23 - authUser -  ","28.10.2020 11:15:23 - authMethod - basic ","28.10.2020 11:15:23 - TestRunTask initialized","28.10.2020 11:15:26 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:15:26 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:15:28 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:15:30 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:15:30 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:30.626 retry condition not satisfied: response.val == response.max
11:15:30.626 sleeping before retry #2
11:15:35.627 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:36.137 response time in milliseconds: 509.62
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:15:36 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:15:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:15:21 UTC 2020)","28.10.2020 11:15:21 - Resolving Executable Test Suite dependencies","28.10.2020 11:15:21 - Preparing 1 Test Task:","28.10.2020 11:15:21 -  TestTask 1 (3e9a1e4c-a7d1-4133-8176-9dfa807c6594)","28.10.2020 11:15:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:15:21 -  with parameters: ","28.10.2020 11:15:21 - etf.testcases = *","28.10.2020 11:15:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:15:21 - Setting state to CREATED","28.10.2020 11:15:21 - Changed state from CREATED to INITIALIZING","28.10.2020 11:15:21 - Starting TestRun.94357bbb-2bc5-48b1-a2b0-69d555c3d244 at 2020-10-28T11:15:23Z","28.10.2020 11:15:23 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:15:23 - Project Properties: ","28.10.2020 11:15:23 - etf.testcases - * ","28.10.2020 11:15:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:15:23 - username -  ","28.10.2020 11:15:23 - authUser -  ","28.10.2020 11:15:23 - authMethod - basic ","28.10.2020 11:15:23 - TestRunTask initialized","28.10.2020 11:15:26 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:15:26 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:15:28 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:15:30 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:15:30 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:31 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:31 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:31 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:31 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:31 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:15:32 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:15:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:15:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:35 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:35 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:15:35 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:35 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:15:36.139 retry condition not satisfied: response.val == response.max
11:15:36.139 sleeping before retry #3
11:15:41.140 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:43.164 response time in milliseconds: 2023.25
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:15:43 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:15:43.164 retry condition satisfied
* print response 0.000
11:15:43.164 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 11.618
11:15:43.165 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:54.779 response time in milliseconds: 10639.97
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:15:53 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:15:39 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/94357bbb-2bc5-48b1-a2b0-69d555c3d244.json","testRuns":{"TestRun":{"id":"EID94357bbb-2bc5-48b1-a2b0-69d555c3d244","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:15:21.089Z","testTasks":{"TestTask":{"id":"EID3e9a1e4c-a7d1-4133-8176-9dfa807c6594","parent":{"ref":"EID94357bbb-2bc5-48b1-a2b0-69d555c3d244"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDd693f2aa-0350-42d0-a8f6-e276c27523f5"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID4bee505b-063e-4c1f-97ca-b424629f9e64"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDd693f2aa-0350-42d0-a8f6-e276c27523f5","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:15:19.828Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:15:20.652Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID4bee505b-063e-4c1f-97ca-b424629f9e64","testObject":{"ref":"EIDd693f2aa-0350-42d0-a8f6-e276c27523f5"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eeb6964-0175-1000-c84d-70db290737b6","testCaseResults":{"TestCaseResult":[{"id":"EID6eeb696d-0175-1000-a646-940a7d67da18","testStepResults":{"TestStepResult":[{"id":"EID6eeb6972-0175-1000-238c-76ec70913861","parent":{"ref":"EID6eeb696d-0175-1000-a646-940a7d67da18"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:15:23Z","duration":17,"status":"PASSED"},{"id":"EID6eeb6983-0175-1000-9b42-c7ccd3ea5e2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb6a53-0175-1000-9cfa-aab9ebc90f11","parent":{"ref":"EID6eeb6983-0175-1000-9b42-c7ccd3ea5e2a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6a53-0175-1000-7183-a28b6f25ff09","parent":{"ref":"EID6eeb6983-0175-1000-9b42-c7ccd3ea5e2a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6a53-0175-1000-6e81-619e01978437","parent":{"ref":"EID6eeb6983-0175-1000-9b42-c7ccd3ea5e2a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6a53-0175-1000-94b2-09283652d566","parent":{"ref":"EID6eeb6983-0175-1000-9b42-c7ccd3ea5e2a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcdb4026f-22bf-458b-aa2b-cb6673ad1f9e"},{"ref":"EID85b5b256-0262-41dd-92b3-e2940610cf40"},{"ref":"EID82c95ef0-b4d8-49e2-a6e4-ed9cd1692024"}]},"parent":{"ref":"EID6eeb696d-0175-1000-a646-940a7d67da18"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:15:23Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6eeb6964-0175-1000-c84d-70db290737b6"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:15:23Z","duration":230,"status":"PASSED"},{"id":"EID6eeb6a5d-0175-1000-aac2-ef05f8bb4084","testStepResults":{"TestStepResult":{"id":"EID6eeb6a5d-0175-1000-98bc-15677f3c76d2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb6b29-0175-1000-980c-e4d17c29a8ad","parent":{"ref":"EID6eeb6a5d-0175-1000-98bc-15677f3c76d2"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6b29-0175-1000-2d34-c0545c11c118","parent":{"ref":"EID6eeb6a5d-0175-1000-98bc-15677f3c76d2"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6b29-0175-1000-babd-84dd38bb316e","parent":{"ref":"EID6eeb6a5d-0175-1000-98bc-15677f3c76d2"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDce9fbedf-716e-41f6-a284-38d598071641"},{"ref":"EID126e8050-99bb-4f73-b583-ae170675f188"},{"ref":"EID63a01811-6e5c-4756-8ce9-fbac7720a5e3"}]},"parent":{"ref":"EID6eeb6a5d-0175-1000-aac2-ef05f8bb4084"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:15:23Z","duration":98,"status":"PASSED"}},"parent":{"ref":"EID6eeb6964-0175-1000-c84d-70db290737b6"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:15:23Z","duration":204,"status":"PASSED"}]},"parent":{"ref":"EID4bee505b-063e-4c1f-97ca-b424629f9e64"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:15:23Z","duration":453,"status":"PASSED"},{"id":"EID6eeb6b29-0175-1000-fedf-400453db77e7","testCaseResults":{"TestCaseResult":[{"id":"EID6eeb6b29-0175-1000-7c96-37dc957a6fd2","testStepResults":{"TestStepResult":[{"id":"EID6eeb6b29-0175-1000-30a6-0c80fb0c98b4","parent":{"ref":"EID6eeb6b29-0175-1000-7c96-37dc957a6fd2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:15:23Z","duration":98,"status":"PASSED"},{"id":"EID6eeb6b29-0175-1000-dbbe-1d6eaf9d69b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb6c0d-0175-1000-54c8-bffe0b6988de","parent":{"ref":"EID6eeb6b29-0175-1000-dbbe-1d6eaf9d69b0"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6c0d-0175-1000-0cd5-096ccda4ea78","parent":{"ref":"EID6eeb6b29-0175-1000-dbbe-1d6eaf9d69b0"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6c0d-0175-1000-b40b-46526eb18212","parent":{"ref":"EID6eeb6b29-0175-1000-dbbe-1d6eaf9d69b0"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6c0d-0175-1000-e0a8-82825295e02f","parent":{"ref":"EID6eeb6b29-0175-1000-dbbe-1d6eaf9d69b0"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6c0d-0175-1000-9e64-0fa2f047e0f0","parent":{"ref":"EID6eeb6b29-0175-1000-dbbe-1d6eaf9d69b0"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:15:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID65a26882-d50d-4f2c-a62a-b43f3e1b55eb"},{"ref":"EIDd66fa7e3-b326-472f-8f4f-4075d69e1a32"},{"ref":"EID98d7afcb-accd-4b15-b1ec-c26898bb5530"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-7c96-37dc957a6fd2"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:15:23Z","duration":119,"status":"PASSED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:15:23Z","duration":228,"status":"PASSED"},{"id":"EID6eeb6c0d-0175-1000-3d21-960006fd04b7","testStepResults":{"TestStepResult":[{"id":"EID6eeb6c6b-0175-1000-ce4e-3a609dd139ee","attachments":{"attachment":[{"ref":"EIDb07db163-411e-4b9d-bda7-d5efb847cf2f"},{"ref":"EID96b3a1e8-a4d6-4cec-bf9b-f433a9003b06"}]},"parent":{"ref":"EID6eeb6c0d-0175-1000-3d21-960006fd04b7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:15:23Z","duration":214,"status":"PASSED"},{"id":"EID6eeb6d68-0175-1000-5b1b-94f101ad5754","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb6e31-0175-1000-20bf-e8760f92587c","parent":{"ref":"EID6eeb6d68-0175-1000-5b1b-94f101ad5754"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6e31-0175-1000-5d41-0e6b0a2e2a6b","parent":{"ref":"EID6eeb6d68-0175-1000-5b1b-94f101ad5754"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6e31-0175-1000-0714-33bb0d9d8c69","parent":{"ref":"EID6eeb6d68-0175-1000-5b1b-94f101ad5754"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6e31-0175-1000-680d-9b2872d5c98b","parent":{"ref":"EID6eeb6d68-0175-1000-5b1b-94f101ad5754"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d87a622-b5f3-40fa-b3ed-ce3f80ea46f0"},{"ref":"EID35f49261-090f-481a-ba57-17e7b6cf1e7e"},{"ref":"EID83deaf22-646b-4220-a8c6-3e23cde09c5f"}]},"parent":{"ref":"EID6eeb6c0d-0175-1000-3d21-960006fd04b7"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:15:24Z","duration":52,"status":"PASSED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:15:23Z","duration":548,"status":"PASSED"},{"id":"EID6eeb6e31-0175-1000-d93b-75ad20bce985","testStepResults":{"TestStepResult":[{"id":"EID6eeb6e3b-0175-1000-ade8-4e55dcd9fbb1","attachments":{"attachment":[{"ref":"EID10128c34-72d2-4c8d-8cda-5e741b9f7c53"},{"ref":"EID9814a4ff-ba59-4b58-843b-b302c1e20242"}]},"parent":{"ref":"EID6eeb6e31-0175-1000-d93b-75ad20bce985"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:15:24Z","duration":120,"status":"PASSED"},{"id":"EID6eeb6edc-0175-1000-347b-d6604bce5d86","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb6fb0-0175-1000-fd33-dfaa5d6fe5c7","parent":{"ref":"EID6eeb6edc-0175-1000-347b-d6604bce5d86"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6fb0-0175-1000-b937-56b34630c02f","parent":{"ref":"EID6eeb6edc-0175-1000-347b-d6604bce5d86"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6fb0-0175-1000-b66e-e2ba14a9116e","parent":{"ref":"EID6eeb6edc-0175-1000-347b-d6604bce5d86"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6fb0-0175-1000-0fcb-c9c4582f41ae","parent":{"ref":"EID6eeb6edc-0175-1000-347b-d6604bce5d86"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb6fb0-0175-1000-a74f-9f8c7d539bfd","parent":{"ref":"EID6eeb6edc-0175-1000-347b-d6604bce5d86"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID44442df1-6205-45d1-994a-2fbc1bceff3d"},{"ref":"EID2b215569-13e5-4fa0-9fb5-27257063e78f"},{"ref":"EID8c666e8c-6e04-4cdb-95ca-ef807a1674d8"}]},"parent":{"ref":"EID6eeb6e31-0175-1000-d93b-75ad20bce985"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:15:24Z","duration":95,"status":"PASSED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:15:24Z","duration":383,"status":"PASSED"},{"id":"EID6eeb6fb9-0175-1000-24f4-71a6514adb45","testStepResults":{"TestStepResult":[{"id":"EID6eeb6fb9-0175-1000-f26c-6068dcffd1c8","attachments":{"attachment":[{"ref":"EID19cfabfd-3281-46a4-b221-cc488b9ffdc4"},{"ref":"EID28e62f55-dec3-4460-a0a5-dbb057e934aa"}]},"parent":{"ref":"EID6eeb6fb9-0175-1000-24f4-71a6514adb45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:15:24Z","duration":165,"status":"PASSED"},{"id":"EID6eeb7092-0175-1000-005c-3350bc17a62d","parent":{"ref":"EID6eeb6fb9-0175-1000-24f4-71a6514adb45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:15:24Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7092-0175-1000-d2ba-48f714adb9a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7188-0175-1000-9f8a-95da5e5e3cb6","parent":{"ref":"EID6eeb7092-0175-1000-d2ba-48f714adb9a4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7188-0175-1000-ec3a-0a8639c954aa","parent":{"ref":"EID6eeb7092-0175-1000-d2ba-48f714adb9a4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7188-0175-1000-7b45-00e28c8f89b2","parent":{"ref":"EID6eeb7092-0175-1000-d2ba-48f714adb9a4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7188-0175-1000-c8cb-09a96c44963b","parent":{"ref":"EID6eeb7092-0175-1000-d2ba-48f714adb9a4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5bdbe61d-cd7c-4ed0-ad2d-d2de82e50666"},{"ref":"EIDc7326c8f-edd0-4aee-aec9-58691cc0f1cc"},{"ref":"EIDcd60cf68-8baa-4586-9bd1-b61dfdfd3dbb"}]},"parent":{"ref":"EID6eeb6fb9-0175-1000-24f4-71a6514adb45"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:15:24Z","duration":79,"status":"PASSED"},{"id":"EID6eeb719e-0175-1000-2120-ee53cf9baa14","attachments":{"attachment":{"ref":"EID9b6463bd-0bbf-482d-b8dc-b5d7b10f3925"}},"parent":{"ref":"EID6eeb6fb9-0175-1000-24f4-71a6514adb45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:15:25Z","duration":2,"status":"PASSED"},{"id":"EID6eeb71ae-0175-1000-be92-c9092e0a5845","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7272-0175-1000-dd9b-0349aa22c4d3","parent":{"ref":"EID6eeb71ae-0175-1000-be92-c9092e0a5845"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7272-0175-1000-85ef-ad7571f5cfc3","parent":{"ref":"EID6eeb71ae-0175-1000-be92-c9092e0a5845"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7272-0175-1000-4fd2-444ee800fd13","parent":{"ref":"EID6eeb71ae-0175-1000-be92-c9092e0a5845"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7272-0175-1000-44cb-6f3bd12e458a","parent":{"ref":"EID6eeb71ae-0175-1000-be92-c9092e0a5845"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7272-0175-1000-d645-d8cc2fa4e287","parent":{"ref":"EID6eeb71ae-0175-1000-be92-c9092e0a5845"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6dc1e4e5-0a7a-4678-b693-a0f4fbd56d31"},{"ref":"EIDc4a5076d-a483-4352-90c5-baca12deeca8"},{"ref":"EIDfdd10526-96fe-47c0-a6bd-6c59ea070fc6"}]},"parent":{"ref":"EID6eeb6fb9-0175-1000-24f4-71a6514adb45"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:15:25Z","duration":51,"status":"PASSED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:15:24Z","duration":697,"status":"PASSED"},{"id":"EID6eeb727a-0175-1000-6d92-ccbdfd7f1741","testStepResults":{"TestStepResult":[{"id":"EID6eeb727a-0175-1000-b6e7-11ba89b20410","attachments":{"attachment":[{"ref":"EID7d3f46a7-13a8-4b96-a04c-c3455bc7d1d8"},{"ref":"EIDe36d8e48-6cc7-46fa-9a3e-873d6d84447e"}]},"parent":{"ref":"EID6eeb727a-0175-1000-6d92-ccbdfd7f1741"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:15:25Z","duration":171,"status":"PASSED"},{"id":"EID6eeb7352-0175-1000-f65d-52400a4044b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb73ea-0175-1000-4bb8-a7a0276788aa","parent":{"ref":"EID6eeb7352-0175-1000-f65d-52400a4044b0"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb73ea-0175-1000-aa29-4b0073e40d3e","parent":{"ref":"EID6eeb7352-0175-1000-f65d-52400a4044b0"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb73ea-0175-1000-234f-63b8e55cf288","parent":{"ref":"EID6eeb7352-0175-1000-f65d-52400a4044b0"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"},{"id":"EID6eeb73ea-0175-1000-87bd-2f889c8261b4","parent":{"ref":"EID6eeb7352-0175-1000-f65d-52400a4044b0"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:15:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8608a52-6a39-44cf-a035-d9181e80c936"},{"ref":"EID0a03498b-6b64-4ebd-b5a2-e5ce1a1bf739"},{"ref":"EIDa38091c7-7562-4e31-8d31-875e0d99e389"}]},"parent":{"ref":"EID6eeb727a-0175-1000-6d92-ccbdfd7f1741"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:15:25Z","duration":48,"status":"PASSED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:15:25Z","duration":368,"status":"PASSED"},{"id":"EID6eeb73f9-0175-1000-2917-a8734ca5707c","testStepResults":{"TestStepResult":[{"id":"EID6eeb73fa-0175-1000-b901-25487a032e47","attachments":{"attachment":[{"ref":"EID7a71f298-63ad-4f4c-8556-9f0eb13bdf68"},{"ref":"EID754c5025-7e0b-4722-b516-995d133f984c"}]},"parent":{"ref":"EID6eeb73f9-0175-1000-2917-a8734ca5707c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:15:25Z","duration":315,"status":"PASSED"},{"id":"EID6eeb7569-0175-1000-7f86-8d203a8c619c","parent":{"ref":"EID6eeb73f9-0175-1000-2917-a8734ca5707c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7569-0175-1000-efb8-635e6d14c0d4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7641-0175-1000-a594-80e6d523ef22","parent":{"ref":"EID6eeb7569-0175-1000-efb8-635e6d14c0d4"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7641-0175-1000-3aab-90b6272bcf6d","parent":{"ref":"EID6eeb7569-0175-1000-efb8-635e6d14c0d4"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7641-0175-1000-e44a-a8fb2308e094","parent":{"ref":"EID6eeb7569-0175-1000-efb8-635e6d14c0d4"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7641-0175-1000-5dd2-6f5a6d9ee313","parent":{"ref":"EID6eeb7569-0175-1000-efb8-635e6d14c0d4"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfc74716b-171a-4e03-a92f-07b7625aad78"},{"ref":"EID93db1c52-e080-4887-b39c-3898e10396b9"},{"ref":"EID236b4fbd-1266-4508-84ef-1911ddbcb1a0"}]},"parent":{"ref":"EID6eeb73f9-0175-1000-2917-a8734ca5707c"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:15:26Z","duration":87,"status":"PASSED"},{"id":"EID6eeb764a-0175-1000-680b-6e0ffd4d0e24","attachments":{"attachment":{"ref":"EID4b217f67-bb9a-4758-ba92-dc666c94a6fe"}},"parent":{"ref":"EID6eeb73f9-0175-1000-2917-a8734ca5707c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:15:26Z","duration":3,"status":"PASSED"},{"id":"EID6eeb765b-0175-1000-a21c-6901b0c72ac5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb77b4-0175-1000-16d1-ed0945ac1558","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb765b-0175-1000-a21c-6901b0c72ac5"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:15:26Z","duration":13,"status":"FAILED"},{"id":"EID6eeb77c1-0175-1000-035c-d0ee642cfab9","parent":{"ref":"EID6eeb765b-0175-1000-a21c-6901b0c72ac5"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"PASSED"},{"id":"EID6eeb77c1-0175-1000-602b-3ef5574433ed","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6eeb765b-0175-1000-a21c-6901b0c72ac5"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:15:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID03e8ad78-3c8d-4a95-a90a-6c77bd11f61f"},{"ref":"EIDbbf6aba8-3335-4f31-9c4b-eec4899cfe97"},{"ref":"EID3d824aea-ee6e-4dee-904d-0501bbd1dd03"}]},"parent":{"ref":"EID6eeb73f9-0175-1000-2917-a8734ca5707c"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:15:26Z","duration":267,"status":"FAILED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:15:25Z","duration":968,"status":"FAILED"},{"id":"EID6eeb77e6-0175-1000-c5d8-eef4d8667be8","testStepResults":{"TestStepResult":[{"id":"EID6eeb77e6-0175-1000-5867-cc3bb7476cf9","attachments":{"attachment":[{"ref":"EID9ea73fab-dd20-427f-bd3b-4f012517a60a"},{"ref":"EIDc8a366a4-f480-42cf-82ed-d2e9c631edd5"}]},"parent":{"ref":"EID6eeb77e6-0175-1000-c5d8-eef4d8667be8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:15:26Z","duration":145,"status":"PASSED"},{"id":"EID6eeb78aa-0175-1000-4e43-27dbdcb34fd0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7969-0175-1000-4db2-1f14abb75c4f","parent":{"ref":"EID6eeb78aa-0175-1000-4e43-27dbdcb34fd0"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7969-0175-1000-a7cf-d6eb7dc82c75","parent":{"ref":"EID6eeb78aa-0175-1000-4e43-27dbdcb34fd0"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7969-0175-1000-3e9b-e939c2805c26","parent":{"ref":"EID6eeb78aa-0175-1000-4e43-27dbdcb34fd0"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7969-0175-1000-59c5-acbcece9b4a8","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb78aa-0175-1000-4e43-27dbdcb34fd0"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID79970ccc-6b80-40f9-a092-5bfd3c985860"},{"ref":"EID89db7513-6ea7-493c-8a5b-b0ee076a1736"},{"ref":"EID1c250a2c-f32b-48be-8f34-13c4d83432b5"}]},"parent":{"ref":"EID6eeb77e6-0175-1000-c5d8-eef4d8667be8"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:15:27Z","duration":78,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:15:26Z","duration":399,"status":"PASSED_MANUAL"},{"id":"EID6eeb7976-0175-1000-b589-30de916ee0fc","testStepResults":{"TestStepResult":{"id":"EID6eeb7976-0175-1000-01b4-a75796a6108b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7a41-0175-1000-466c-d8df49c42fb7","parent":{"ref":"EID6eeb7976-0175-1000-01b4-a75796a6108b"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7a41-0175-1000-e69b-f77d17710a53","parent":{"ref":"EID6eeb7976-0175-1000-01b4-a75796a6108b"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7a41-0175-1000-73c8-f837beddd20e","parent":{"ref":"EID6eeb7976-0175-1000-01b4-a75796a6108b"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7a41-0175-1000-44f8-6740765eb34f","parent":{"ref":"EID6eeb7976-0175-1000-01b4-a75796a6108b"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4923674-cb15-47f5-aca7-0fbeff019333"},{"ref":"EID0dd49f44-0e81-46d7-a1fd-363e80d7de67"},{"ref":"EIDe41d2de4-95e9-41ae-a860-bb412b388a49"}]},"parent":{"ref":"EID6eeb7976-0175-1000-b589-30de916ee0fc"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:15:27Z","duration":74,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:15:27Z","duration":252,"status":"PASSED"},{"id":"EID6eeb7a73-0175-1000-f818-b4b978b56d26","testStepResults":{"TestStepResult":{"id":"EID6eeb7a73-0175-1000-213a-15d98774d52a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7b4d-0175-1000-30f0-94f97f34de7f","parent":{"ref":"EID6eeb7a73-0175-1000-213a-15d98774d52a"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7b4d-0175-1000-c6b9-9cbbbfcbb36c","parent":{"ref":"EID6eeb7a73-0175-1000-213a-15d98774d52a"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7b4d-0175-1000-bc7d-7d8b04b4c311","parent":{"ref":"EID6eeb7a73-0175-1000-213a-15d98774d52a"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7b4d-0175-1000-da31-f1e8123ae146","parent":{"ref":"EID6eeb7a73-0175-1000-213a-15d98774d52a"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:15:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe0ef053d-4500-4ef2-9a25-32a249be5a51"},{"ref":"EID65f72e5e-394d-4c96-b149-4693822f8ef6"},{"ref":"EIDc8a212ed-8339-42cb-8170-7be2102bc8e2"}]},"parent":{"ref":"EID6eeb7a73-0175-1000-f818-b4b978b56d26"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:15:27Z","duration":87,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:15:27Z","duration":227,"status":"PASSED"},{"id":"EID6eeb7b56-0175-1000-bfd9-cd6ea2b9ccb2","testStepResults":{"TestStepResult":{"id":"EID6eeb7b56-0175-1000-c145-9b7b93d72f8e","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDdc494c59-1f52-485e-b633-743dfda88798"},{"ref":"EIDdac60dac-d18a-4f5d-9504-3291c9a44ed8"},{"ref":"EID747f8224-3c30-4252-a40a-dc9a64b11a37"},{"ref":"EID40b5d41a-c66e-4a31-83e6-273b046940a5"},{"ref":"EID4a83d52b-48e5-4c49-8367-f83fe38a1abf"},{"ref":"EID7f8382c5-a335-48e0-8fda-17ed20f9a833"},{"ref":"EIDb1876de5-32ea-43c0-98d0-64bcda2f7573"},{"ref":"EIDa1178553-e3cc-417b-9bc3-cde5372ca77f"},{"ref":"EIDbdc28154-2c7a-4bba-a889-46cef99d0dbf"}]},"parent":{"ref":"EID6eeb7b56-0175-1000-bfd9-cd6ea2b9ccb2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:15:27Z","duration":629,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:15:27Z","duration":731,"status":"SKIPPED"},{"id":"EID6eeb7e31-0175-1000-f833-4dcace6789ba","testStepResults":{"TestStepResult":{"id":"EID6eeb7e31-0175-1000-99eb-088ee852f707","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb7f3a-0175-1000-d133-e8d9b86582e9","parent":{"ref":"EID6eeb7e31-0175-1000-99eb-088ee852f707"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7f3a-0175-1000-ae05-233f8fa242e6","parent":{"ref":"EID6eeb7e31-0175-1000-99eb-088ee852f707"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7f3a-0175-1000-9bca-5c23505dd387","parent":{"ref":"EID6eeb7e31-0175-1000-99eb-088ee852f707"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb7f3a-0175-1000-262a-700aa4589f91","parent":{"ref":"EID6eeb7e31-0175-1000-99eb-088ee852f707"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8ff50e07-6386-4db5-8086-099f1ef5b418"},{"ref":"EIDc506af26-5eea-4680-be09-735ed2f55831"},{"ref":"EID68b30eac-c743-4be7-a7b3-8217ec2c843d"}]},"parent":{"ref":"EID6eeb7e31-0175-1000-f833-4dcace6789ba"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:15:28Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:15:28Z","duration":275,"status":"PASSED"},{"id":"EID6eeb7f44-0175-1000-788f-59ee5d0a9fcc","testStepResults":{"TestStepResult":{"id":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8049-0175-1000-1bd6-cdf2e93a0d82","parent":{"ref":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8049-0175-1000-a525-2e6c7178f94a","parent":{"ref":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8049-0175-1000-b644-3953f286a2e8","parent":{"ref":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8049-0175-1000-cfd5-d03feabce591","parent":{"ref":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8049-0175-1000-aeb4-59ccb9fc2fd9","parent":{"ref":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8049-0175-1000-8716-e014582e9c5e","parent":{"ref":"EID6eeb7f44-0175-1000-3bee-4e5df54e91a9"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:15:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID250430f3-ccd8-4cbb-bf63-b02fe6682868"},{"ref":"EIDe617d99b-ee11-4b6d-a52b-90fd527b3313"},{"ref":"EID3b75e11e-fd45-425e-99f5-25df4c5d0800"}]},"parent":{"ref":"EID6eeb7f44-0175-1000-788f-59ee5d0a9fcc"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:15:28Z","duration":64,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:15:28Z","duration":261,"status":"PASSED"},{"id":"EID6eeb804a-0175-1000-98bd-902a1fbfa52d","testStepResults":{"TestStepResult":{"id":"EID6eeb804a-0175-1000-0d39-83e211d2da5a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb814c-0175-1000-c12b-b9f783527e5f","parent":{"ref":"EID6eeb804a-0175-1000-0d39-83e211d2da5a"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb814c-0175-1000-c496-ae3b5be58f3b","parent":{"ref":"EID6eeb804a-0175-1000-0d39-83e211d2da5a"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb814c-0175-1000-8ef3-727f1070a170","parent":{"ref":"EID6eeb804a-0175-1000-0d39-83e211d2da5a"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb814c-0175-1000-5f5e-4a57de199a46","parent":{"ref":"EID6eeb804a-0175-1000-0d39-83e211d2da5a"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb814c-0175-1000-ce63-eeeea711d90a","parent":{"ref":"EID6eeb804a-0175-1000-0d39-83e211d2da5a"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb814c-0175-1000-cd24-956df8794b15","parent":{"ref":"EID6eeb804a-0175-1000-0d39-83e211d2da5a"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID25ec2d58-27f8-44c2-a54d-9a4aacbac91e"},{"ref":"EID945b4a7a-2374-41e3-820d-080d25bcfa8b"},{"ref":"EID1ac2ddc9-57bc-4459-bf92-39511b090e2c"}]},"parent":{"ref":"EID6eeb804a-0175-1000-98bd-902a1fbfa52d"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:15:28Z","duration":104,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:15:28Z","duration":267,"status":"PASSED"},{"id":"EID6eeb8155-0175-1000-351d-e9d78a064ce7","testStepResults":{"TestStepResult":{"id":"EID6eeb8155-0175-1000-dbdb-3945f3c7aa9a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb823d-0175-1000-2ac9-51df35379c73","parent":{"ref":"EID6eeb8155-0175-1000-dbdb-3945f3c7aa9a"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb823d-0175-1000-b6a8-fc0bbabed063","parent":{"ref":"EID6eeb8155-0175-1000-dbdb-3945f3c7aa9a"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb823d-0175-1000-3bea-afad910e7fb0","parent":{"ref":"EID6eeb8155-0175-1000-dbdb-3945f3c7aa9a"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"},{"id":"EID6eeb823d-0175-1000-20ec-19658c87c81f","parent":{"ref":"EID6eeb8155-0175-1000-dbdb-3945f3c7aa9a"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:15:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa8df73fd-7b60-4aed-a6e3-195994276106"},{"ref":"EIDc436ef78-c321-490c-bd94-d410f18746cf"},{"ref":"EID5bdb0f89-c0c3-4bf9-bb37-48d10bc0113e"}]},"parent":{"ref":"EID6eeb8155-0175-1000-351d-e9d78a064ce7"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:15:29Z","duration":118,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:15:29Z","duration":232,"status":"PASSED"},{"id":"EID6eeb823d-0175-1000-dcd4-772bb6171259","testStepResults":{"TestStepResult":[{"id":"EID6eeb823d-0175-1000-dbe0-98c8238ccb60","attachments":{"attachment":[{"ref":"EIDa16fc02a-510f-44a9-8e70-ba5aab18f2df"},{"ref":"EID4c01ccd6-81e5-405f-915a-601f7e9cb785"},{"ref":"EIDeaaba32f-399a-447d-b4fa-cc733c51b791"},{"ref":"EID61002d56-18ae-4f13-b4bf-83ac3e2bdf1f"}]},"parent":{"ref":"EID6eeb823d-0175-1000-dcd4-772bb6171259"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:15:29Z","duration":377,"status":"PASSED"},{"id":"EID6eeb83e8-0175-1000-09bf-b7ed88fc2d4a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb84e4-0175-1000-0325-3506568ed3a2","parent":{"ref":"EID6eeb83e8-0175-1000-09bf-b7ed88fc2d4a"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb84e4-0175-1000-51da-e0ec3594721e","parent":{"ref":"EID6eeb83e8-0175-1000-09bf-b7ed88fc2d4a"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb84e4-0175-1000-1cee-a929c0f3c88b","parent":{"ref":"EID6eeb83e8-0175-1000-09bf-b7ed88fc2d4a"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb84e4-0175-1000-5cd4-8b776e41ed19","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6eeb83e8-0175-1000-09bf-b7ed88fc2d4a"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9155669f-299b-4e23-9835-daadf397d694"},{"ref":"EID99b12f2e-fd5b-48ac-9285-4e113890d43c"},{"ref":"EID26254934-68f6-473b-a70a-7dac924254de"}]},"parent":{"ref":"EID6eeb823d-0175-1000-dcd4-772bb6171259"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:15:29Z","duration":111,"status":"FAILED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:15:29Z","duration":679,"status":"FAILED"},{"id":"EID6eeb84e4-0175-1000-f762-768682d2ce74","testStepResults":{"TestStepResult":{"id":"EID6eeb84e4-0175-1000-9853-8169ed8f7148","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8586-0175-1000-628f-780e6d987927","parent":{"ref":"EID6eeb84e4-0175-1000-9853-8169ed8f7148"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8586-0175-1000-842c-729f090512e6","parent":{"ref":"EID6eeb84e4-0175-1000-9853-8169ed8f7148"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8586-0175-1000-270b-d6debf74e6ea","parent":{"ref":"EID6eeb84e4-0175-1000-9853-8169ed8f7148"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8586-0175-1000-cc39-0da4cfdf6401","parent":{"ref":"EID6eeb84e4-0175-1000-9853-8169ed8f7148"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb5c30a4f-74d0-47a7-adb8-a2a2b63702af"},{"ref":"EIDdaa098ad-8968-4707-a947-2ac7da7ccb03"},{"ref":"EID8062c009-29dc-43cf-8727-b022f453adee"}]},"parent":{"ref":"EID6eeb84e4-0175-1000-f762-768682d2ce74"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:15:30Z","duration":42,"status":"PASSED"}},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:15:30Z","duration":162,"status":"PASSED"},{"id":"EID6eeb8586-0175-1000-d9a5-3422f26207bc","testStepResults":{"TestStepResult":[{"id":"EID6eeb8591-0175-1000-bcbb-6faebceb575d","parent":{"ref":"EID6eeb8586-0175-1000-d9a5-3422f26207bc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8591-0175-1000-0609-1c17abb094de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8667-0175-1000-8d74-1fce1a82ed98","parent":{"ref":"EID6eeb8591-0175-1000-0609-1c17abb094de"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8667-0175-1000-9a19-166bdaee7c94","parent":{"ref":"EID6eeb8591-0175-1000-0609-1c17abb094de"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8667-0175-1000-df40-0961e8c5108e","parent":{"ref":"EID6eeb8591-0175-1000-0609-1c17abb094de"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8667-0175-1000-12fe-e7ceeae1c62c","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eeb8591-0175-1000-0609-1c17abb094de"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID55727533-3873-4314-a6d1-114dc6a05e80"},{"ref":"EIDc2dec0e4-663d-4a04-a78b-417b523450c4"},{"ref":"EID42486234-86e5-42fb-ad26-07f0ef6ece1d"}]},"parent":{"ref":"EID6eeb8586-0175-1000-d9a5-3422f26207bc"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:15:30Z","duration":41,"status":"FAILED"}]},"parent":{"ref":"EID6eeb6b29-0175-1000-fedf-400453db77e7"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:15:30Z","duration":226,"status":"FAILED"}]},"parent":{"ref":"EID4bee505b-063e-4c1f-97ca-b424629f9e64"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:15:23Z","duration":6975,"status":"FAILED"},{"id":"EID6eeb8668-0175-1000-ab77-29ce12e540fe","testCaseResults":{"TestCaseResult":[{"id":"EID6eeb8668-0175-1000-114a-d8c3297f323f","testStepResults":{"TestStepResult":[{"id":"EID6eeb8668-0175-1000-d29b-e5699f15fa6d","parent":{"ref":"EID6eeb8668-0175-1000-114a-d8c3297f323f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8668-0175-1000-23af-15b65c741b36","parent":{"ref":"EID6eeb8668-0175-1000-114a-d8c3297f323f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:15:30Z","duration":42,"status":"PASSED"},{"id":"EID6eeb8668-0175-1000-ac76-37bcff5af14a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8734-0175-1000-9588-7c50bb4f5a0f","parent":{"ref":"EID6eeb8668-0175-1000-ac76-37bcff5af14a"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8734-0175-1000-25b5-32eadebe8f52","parent":{"ref":"EID6eeb8668-0175-1000-ac76-37bcff5af14a"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8734-0175-1000-4096-6a1226cd3361","parent":{"ref":"EID6eeb8668-0175-1000-ac76-37bcff5af14a"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID51fddd6b-4057-4a01-8589-4adb01ff5148"},{"ref":"EIDa87e37a3-b455-4afb-b1e0-4e396e764ccd"},{"ref":"EIDc4c194cc-acab-421b-a180-818cf7faa57c"}]},"parent":{"ref":"EID6eeb8668-0175-1000-114a-d8c3297f323f"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:15:30Z","duration":96,"status":"PASSED"},{"id":"EID6eeb8740-0175-1000-79e4-826c78385236","attachments":{"attachment":{"ref":"EID45c9659d-2cbd-4bbb-bad4-d53bcf965a58"}},"parent":{"ref":"EID6eeb8668-0175-1000-114a-d8c3297f323f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb874d-0175-1000-fd48-60179a86909d","parent":{"ref":"EID6eeb8668-0175-1000-114a-d8c3297f323f"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:15:30Z","duration":37,"status":"PASSED"}]},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:15:30Z","duration":266,"status":"PASSED"},{"id":"EID6eeb8772-0175-1000-cb2a-e4fe5947f07a","testStepResults":{"TestStepResult":[{"id":"EID6eeb8772-0175-1000-9c21-903d33840996","parent":{"ref":"EID6eeb8772-0175-1000-cb2a-e4fe5947f07a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:15:30Z","duration":98,"status":"PASSED"},{"id":"EID6eeb8772-0175-1000-4721-d1dc3423689f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb87de-0175-1000-f21f-a7692f398242","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8772-0175-1000-4721-d1dc3423689f"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:15:30Z","duration":11,"status":"FAILED"},{"id":"EID6eeb87ea-0175-1000-3065-bd3042945e84","parent":{"ref":"EID6eeb8772-0175-1000-4721-d1dc3423689f"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb87ea-0175-1000-a313-6925737760c1","parent":{"ref":"EID6eeb8772-0175-1000-4721-d1dc3423689f"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"PASSED"},{"id":"EID6eeb87ea-0175-1000-ba81-afc485836b08","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6eeb8772-0175-1000-4721-d1dc3423689f"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"FAILED"},{"id":"EID6eeb87ea-0175-1000-fcae-f06e3d2a9f9f","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6eeb8772-0175-1000-4721-d1dc3423689f"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:15:30Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID263dfce3-f2f3-46a0-9abd-c248a209f47b"},{"ref":"EID902210dc-7934-4b0e-9e6f-4b38c39ac0c0"},{"ref":"EIDeb4a357b-4cdb-4c74-9a7c-932eecc09b70"}]},"parent":{"ref":"EID6eeb8772-0175-1000-cb2a-e4fe5947f07a"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:15:30Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:15:30Z","duration":129,"status":"FAILED"},{"id":"EID6eeb87f4-0175-1000-d0d0-25ff9bf641f4","testStepResults":{"TestStepResult":{"id":"EID6eeb87f4-0175-1000-7cf6-a9cac1954056","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb884d-0175-1000-7c16-6a0fd92fd218","parent":{"ref":"EID6eeb87f4-0175-1000-7cf6-a9cac1954056"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb884d-0175-1000-f3ff-5aa0e03ce216","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb87f4-0175-1000-7cf6-a9cac1954056"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:15:31Z","duration":13,"status":"FAILED"},{"id":"EID6eeb885a-0175-1000-f53e-dd63eaefc3b3","parent":{"ref":"EID6eeb87f4-0175-1000-7cf6-a9cac1954056"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6c0ea674-51e0-44e6-ae6d-9c767fece3e3"},{"ref":"EID76394ce9-91de-4a66-85f8-9c216812fac7"},{"ref":"EID7e50ac75-9057-41a0-a1f1-554d42d5d05b"}]},"parent":{"ref":"EID6eeb87f4-0175-1000-d0d0-25ff9bf641f4"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:15:30Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:15:30Z","duration":102,"status":"FAILED"},{"id":"EID6eeb885a-0175-1000-94b4-c9c5836580c7","testStepResults":{"TestStepResult":{"id":"EID6eeb885a-0175-1000-90e9-e55ca8c0f917","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8908-0175-1000-9009-dd5345caa04e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eeb885a-0175-1000-90e9-e55ca8c0f917"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"FAILED"},{"id":"EID6eeb8908-0175-1000-86d4-6f45521cf58d","parent":{"ref":"EID6eeb885a-0175-1000-90e9-e55ca8c0f917"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8908-0175-1000-eaac-41bd36a9680f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb885a-0175-1000-90e9-e55ca8c0f917"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:15:31Z","duration":12,"status":"FAILED"},{"id":"EID6eeb8914-0175-1000-548e-3f7e7d244e75","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6eeb885a-0175-1000-90e9-e55ca8c0f917"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb01ceaee-7fc0-40ed-a971-9d62b841fa24"},{"ref":"EID543a672c-7df5-44d4-b164-8dbed97a7a97"},{"ref":"EID02e2e10e-2cef-45b8-acec-bc6671841a9c"}]},"parent":{"ref":"EID6eeb885a-0175-1000-94b4-c9c5836580c7"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:15:31Z","duration":82,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:15:31Z","duration":186,"status":"FAILED"},{"id":"EID6eeb8914-0175-1000-5c62-ee25b55272b2","testStepResults":{"TestStepResult":{"id":"EID6eeb8914-0175-1000-bbe9-7ffd910a8ab1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb89d4-0175-1000-02e0-19eff3a2562a","parent":{"ref":"EID6eeb8914-0175-1000-bbe9-7ffd910a8ab1"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb89d4-0175-1000-7630-41f9d0561444","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8914-0175-1000-bbe9-7ffd910a8ab1"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:15:31Z","duration":11,"status":"FAILED"},{"id":"EID6eeb89df-0175-1000-2d44-7792972c27f3","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6eeb8914-0175-1000-bbe9-7ffd910a8ab1"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDed6b0758-f86c-44be-9d3f-2ff584e41b7b"},{"ref":"EID42cf320b-cb1a-4c43-a940-1f58360831a4"},{"ref":"EID53ccc4be-90d4-47ad-b839-d3c584b5d636"}]},"parent":{"ref":"EID6eeb8914-0175-1000-5c62-ee25b55272b2"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:15:31Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:15:31Z","duration":203,"status":"FAILED"},{"id":"EID6eeb89df-0175-1000-ecc3-e6e085fb2035","testStepResults":{"TestStepResult":{"id":"EID6eeb89df-0175-1000-3b1a-c8af8bd1819a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8a4f-0175-1000-1995-a48ad762b0b9","parent":{"ref":"EID6eeb89df-0175-1000-3b1a-c8af8bd1819a"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8a4f-0175-1000-8670-1f658c37c982","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb89df-0175-1000-3b1a-c8af8bd1819a"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:15:31Z","duration":11,"status":"FAILED"},{"id":"EID6eeb8a5a-0175-1000-0d26-98b26add1590","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eeb89df-0175-1000-3b1a-c8af8bd1819a"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID62808f94-7aec-4ef3-9b19-43cea8e9f1d2"},{"ref":"EID92c57420-4901-47dc-8151-8b4eaa5ee2dc"},{"ref":"EID583a0e02-6898-4981-90e6-12ff1fe03956"}]},"parent":{"ref":"EID6eeb89df-0175-1000-ecc3-e6e085fb2035"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:15:31Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:15:31Z","duration":123,"status":"FAILED"},{"id":"EID6eeb8a5a-0175-1000-361e-60e35542c3e4","testStepResults":{"TestStepResult":{"id":"EID6eeb8a5a-0175-1000-1fb1-1f9f80118eaf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8ad8-0175-1000-18a3-dd3c55b8b017","parent":{"ref":"EID6eeb8a5a-0175-1000-1fb1-1f9f80118eaf"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8ad8-0175-1000-1f04-622a2cf2f51e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8a5a-0175-1000-1fb1-1f9f80118eaf"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:15:31Z","duration":14,"status":"FAILED"},{"id":"EID6eeb8ae6-0175-1000-d23c-1080e2b47611","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6eeb8a5a-0175-1000-1fb1-1f9f80118eaf"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"FAILED"},{"id":"EID6eeb8ae6-0175-1000-a5b6-4edc37db8e23","parent":{"ref":"EID6eeb8a5a-0175-1000-1fb1-1f9f80118eaf"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8ae6-0175-1000-979a-e10c40cea82d","parent":{"ref":"EID6eeb8a5a-0175-1000-1fb1-1f9f80118eaf"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ce7077c-8224-4604-8969-57c263d2718d"},{"ref":"EID6c92bb25-199c-4cf9-a947-7cc5e5fc6971"},{"ref":"EIDafc68a8e-6b21-47e9-a2c0-971709e72bf8"}]},"parent":{"ref":"EID6eeb8a5a-0175-1000-361e-60e35542c3e4"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:15:31Z","duration":34,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:15:31Z","duration":140,"status":"FAILED"},{"id":"EID6eeb8ae7-0175-1000-71df-7274ecf06ca0","testStepResults":{"TestStepResult":{"id":"EID6eeb8ae7-0175-1000-d2ec-ef18e12e5d2e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8b40-0175-1000-fcd7-6395640f04b9","parent":{"ref":"EID6eeb8ae7-0175-1000-d2ec-ef18e12e5d2e"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8b40-0175-1000-afd4-c99b053f2683","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8ae7-0175-1000-d2ec-ef18e12e5d2e"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:15:31Z","duration":12,"status":"FAILED"},{"id":"EID6eeb8b4c-0175-1000-a99f-b5b3eb8dd5b9","parent":{"ref":"EID6eeb8ae7-0175-1000-d2ec-ef18e12e5d2e"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbdcaa8d1-ddab-4c4d-851b-9093a4feebba"},{"ref":"EIDb11a1786-9430-4767-93b1-14ac5e05b518"},{"ref":"EID4f1354fc-c710-4c9e-ac81-cc578ee120af"}]},"parent":{"ref":"EID6eeb8ae7-0175-1000-71df-7274ecf06ca0"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:15:31Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:15:31Z","duration":111,"status":"FAILED"},{"id":"EID6eeb8b56-0175-1000-fe46-1c4d13d9a6cc","testStepResults":{"TestStepResult":{"id":"EID6eeb8b56-0175-1000-b816-a755cd434e36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8bb5-0175-1000-d09d-2b058b808c9c","parent":{"ref":"EID6eeb8b56-0175-1000-b816-a755cd434e36"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8bb5-0175-1000-56e9-ff7be4d44e72","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8b56-0175-1000-b816-a755cd434e36"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:15:31Z","duration":92,"status":"FAILED"},{"id":"EID6eeb8c11-0175-1000-f062-2e50ef2bf580","parent":{"ref":"EID6eeb8b56-0175-1000-b816-a755cd434e36"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:15:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3b79900-c300-4ee1-a3aa-e5999053eab8"},{"ref":"EIDe4320f30-4f66-42de-98cd-abcbcc646da6"},{"ref":"EID5159ce22-d386-4985-92dd-64e9c5bae3dc"}]},"parent":{"ref":"EID6eeb8b56-0175-1000-fe46-1c4d13d9a6cc"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:15:31Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:15:31Z","duration":187,"status":"FAILED"},{"id":"EID6eeb8c11-0175-1000-f0d5-ce5ca27ded03","testStepResults":{"TestStepResult":{"id":"EID6eeb8c11-0175-1000-d40d-653bda397d40","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8c8a-0175-1000-6242-055622a461b6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8c11-0175-1000-d40d-653bda397d40"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:15:32Z","duration":10,"status":"FAILED"},{"id":"EID6eeb8c94-0175-1000-5019-f06fa4b77d64","parent":{"ref":"EID6eeb8c11-0175-1000-d40d-653bda397d40"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8c94-0175-1000-8e0d-1a1e22ab3ab1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb8c11-0175-1000-d40d-653bda397d40"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"FAILED"},{"id":"EID6eeb8c94-0175-1000-4c02-ca827fa640f9","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6eeb8c11-0175-1000-d40d-653bda397d40"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1c2066c7-1df2-4b2e-aebd-ae8bb99aa95f"},{"ref":"EID8fce58cc-c56e-41d7-b4c1-275885d84568"},{"ref":"EIDd258dcd8-67af-4007-a6dd-1cebcfdfe2ba"}]},"parent":{"ref":"EID6eeb8c11-0175-1000-f0d5-ce5ca27ded03"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:15:31Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:15:31Z","duration":131,"status":"FAILED"},{"id":"EID6eeb8c95-0175-1000-aa81-293d5d393fd7","testStepResults":{"TestStepResult":{"id":"EID6eeb8c95-0175-1000-61a6-718689323094","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8d04-0175-1000-2d54-4bbe6d4ca86f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8c95-0175-1000-61a6-718689323094"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:15:32Z","duration":14,"status":"FAILED"},{"id":"EID6eeb8d12-0175-1000-6043-15ed27963a97","parent":{"ref":"EID6eeb8c95-0175-1000-61a6-718689323094"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8d12-0175-1000-fe6c-1422d6aa8707","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb8c95-0175-1000-61a6-718689323094"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"FAILED"},{"id":"EID6eeb8d12-0175-1000-2d06-62879e85fbb2","parent":{"ref":"EID6eeb8c95-0175-1000-61a6-718689323094"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa2fba74d-1f7d-41d0-934e-3c73ba653df9"},{"ref":"EIDd02c4eb6-d5db-4d54-9e96-ddc07f11aff3"},{"ref":"EID3939f67d-a1e4-4a2e-8266-2f6481b44a58"}]},"parent":{"ref":"EID6eeb8c95-0175-1000-aa81-293d5d393fd7"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:15:32Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:15:32Z","duration":135,"status":"FAILED"},{"id":"EID6eeb8d1c-0175-1000-4827-6698757e8f96","testStepResults":{"TestStepResult":[{"id":"EID6eeb8d1c-0175-1000-b749-31eab2f36bac","parent":{"ref":"EID6eeb8d1c-0175-1000-4827-6698757e8f96"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8d1c-0175-1000-0871-206bfcae9be0","parent":{"ref":"EID6eeb8d1c-0175-1000-4827-6698757e8f96"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:15:32Z","duration":207,"status":"PASSED"},{"id":"EID6eeb8d1d-0175-1000-8f40-c4f8b3fc1263","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8dea-0175-1000-5311-42bb94b7921e","parent":{"ref":"EID6eeb8d1d-0175-1000-8f40-c4f8b3fc1263"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8dea-0175-1000-d874-4ebb12060911","parent":{"ref":"EID6eeb8d1d-0175-1000-8f40-c4f8b3fc1263"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8dea-0175-1000-dad9-9470421f91dd","parent":{"ref":"EID6eeb8d1d-0175-1000-8f40-c4f8b3fc1263"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8dea-0175-1000-96de-e971fed54bd0","parent":{"ref":"EID6eeb8d1d-0175-1000-8f40-c4f8b3fc1263"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID35a73536-bce7-448f-b8a1-3b6ff7fc60d0"},{"ref":"EID2d7332e2-12b1-4520-8cbc-e72a0bd9f398"},{"ref":"EID03a73210-449a-46cd-8f11-d036ce738361"}]},"parent":{"ref":"EID6eeb8d1c-0175-1000-4827-6698757e8f96"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:15:32Z","duration":74,"status":"PASSED"},{"id":"EID6eeb8dea-0175-1000-dfa5-ef6ac4e38b26","attachments":{"attachment":{"ref":"EIDe688695f-8c6e-4ffb-9b22-ef1d346672e2"}},"parent":{"ref":"EID6eeb8d1c-0175-1000-4827-6698757e8f96"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:15:32Z","duration":3,"status":"PASSED"},{"id":"EID6eeb8df9-0175-1000-d393-48f056e61f5f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8e7e-0175-1000-89f7-acfcd004a3de","parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8e7e-0175-1000-7d37-be2345e18f26","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:15:32Z","duration":13,"status":"FAILED"},{"id":"EID6eeb8e8b-0175-1000-3d76-e59c1bbc0f70","parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8e8b-0175-1000-bf06-5ff1f1cd4777","parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8e8b-0175-1000-a91b-77d424223ca8","parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8e8b-0175-1000-6766-6d4abae85016","parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8e8b-0175-1000-b16b-0a7abb807de2","parent":{"ref":"EID6eeb8df9-0175-1000-d393-48f056e61f5f"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9762b340-c556-4f5d-994c-4113f0d8a92f"},{"ref":"EIDd7f119fc-4205-4d79-a77e-7a609514da7a"},{"ref":"EIDf02fb797-2d3c-478a-b9f8-33501babf282"}]},"parent":{"ref":"EID6eeb8d1c-0175-1000-4827-6698757e8f96"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:15:32Z","duration":28,"status":"FAILED"}]},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:15:32Z","duration":367,"status":"FAILED"},{"id":"EID6eeb8e8c-0175-1000-caf1-3c7bcd3a6afb","testStepResults":{"TestStepResult":[{"id":"EID6eeb8e8c-0175-1000-8e58-7e27b1528f63","parent":{"ref":"EID6eeb8e8c-0175-1000-caf1-3c7bcd3a6afb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8e8c-0175-1000-db06-4bc264f41b56","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb8f7a-0175-1000-1e24-81e40f6fa006","parent":{"ref":"EID6eeb8e8c-0175-1000-db06-4bc264f41b56"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8f7a-0175-1000-3d37-471f0c1998d2","parent":{"ref":"EID6eeb8e8c-0175-1000-db06-4bc264f41b56"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8f7a-0175-1000-f866-3f221c28c01a","parent":{"ref":"EID6eeb8e8c-0175-1000-db06-4bc264f41b56"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6eeb8f7a-0175-1000-7c0e-176f8ed3331d","parent":{"ref":"EID6eeb8e8c-0175-1000-db06-4bc264f41b56"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd80c3546-5917-440f-bef4-ad316d1b95c5"},{"ref":"EID83830824-2b19-44db-b9e5-6e2fbcf3a215"},{"ref":"EID9b94343a-dc33-48b4-b2e4-35360e99a413"}]},"parent":{"ref":"EID6eeb8e8c-0175-1000-caf1-3c7bcd3a6afb"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:15:32Z","duration":145,"status":"PASSED"},{"id":"EID6eeb8f7a-0175-1000-e35e-50ebd4a4da8a","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eeb8f98-0175-1000-1dcf-ca3c66d31572","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb920c-0175-1000-7cd6-43660b0fc8d1","parent":{"ref":"EID6eeb8f98-0175-1000-1dcf-ca3c66d31572"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6eeb920c-0175-1000-857f-a2953dd86e74","parent":{"ref":"EID6eeb8f98-0175-1000-1dcf-ca3c66d31572"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6eeb920c-0175-1000-8fab-cca360ca8403","parent":{"ref":"EID6eeb8f98-0175-1000-1dcf-ca3c66d31572"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:15:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8c6900b4-d7e0-4dc4-b92d-aa1bd1c62057"},{"ref":"EID962cda27-76cc-4b2b-8be8-595f8e67a488"},{"ref":"EID7ad000ef-4e8b-4b5e-9b61-cc9b88b24b43"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:15:32Z","duration":549,"status":"PASSED"},{"id":"EID6eeb920d-0175-1000-2640-47b9ff728818","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb96b0-0175-1000-572c-737e0bb462ee","parent":{"ref":"EID6eeb920d-0175-1000-2640-47b9ff728818"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6eeb96b0-0175-1000-e88b-d3e7d0e45771","parent":{"ref":"EID6eeb920d-0175-1000-2640-47b9ff728818"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6eeb96b0-0175-1000-a9a7-4a42068d239e","parent":{"ref":"EID6eeb920d-0175-1000-2640-47b9ff728818"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:15:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3f25a04f-aab9-4cb2-85ef-7ea3678dfb5e"},{"ref":"EID24b16859-f522-4e88-afb9-765632985096"},{"ref":"EIDac99908d-b518-441c-adf2-7a16b21c7033"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:15:33Z","duration":1137,"status":"PASSED"},{"id":"EID6eeb96b9-0175-1000-b0e0-c697d3995872","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb97b5-0175-1000-0760-afd676af5d8a","parent":{"ref":"EID6eeb96b9-0175-1000-b0e0-c697d3995872"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6eeb97b5-0175-1000-8e8f-f631da512fe8","parent":{"ref":"EID6eeb96b9-0175-1000-b0e0-c697d3995872"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6eeb97b5-0175-1000-70a0-7f2bdb64ea18","parent":{"ref":"EID6eeb96b9-0175-1000-b0e0-c697d3995872"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:15:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf0a3c5fc-060a-4d11-b834-a33f1a4a39f7"},{"ref":"EID221b8e40-f017-4319-b814-4a2ab6bff5d0"},{"ref":"EIDc917378f-35f1-4a2a-8095-1e4656906ac8"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:15:34Z","duration":150,"status":"PASSED"}]},"parent":{"ref":"EID6eeb8e8c-0175-1000-caf1-3c7bcd3a6afb"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:15:32Z","duration":2108,"status":"PASSED"},{"id":"EID6eeb97b6-0175-1000-a73c-4ebd8061e9a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb9824-0175-1000-1125-7a5ebca09c3e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb97b6-0175-1000-a73c-4ebd8061e9a8"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:15:35Z","duration":17,"status":"FAILED"},{"id":"EID6eeb9835-0175-1000-3a64-85d3055f3bab","parent":{"ref":"EID6eeb97b6-0175-1000-a73c-4ebd8061e9a8"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"PASSED"},{"id":"EID6eeb9835-0175-1000-cd6b-d059223aedc1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb97b6-0175-1000-a73c-4ebd8061e9a8"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"FAILED"},{"id":"EID6eeb9835-0175-1000-0ba3-7f0f8cdb746b","parent":{"ref":"EID6eeb97b6-0175-1000-a73c-4ebd8061e9a8"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID673c934f-650f-4cec-9b77-3c3cdfdb26c8"},{"ref":"EID79fb1274-e141-40e1-ac1d-10c7aa030882"},{"ref":"EID7cf10628-8592-4390-9125-804879b817d6"}]},"parent":{"ref":"EID6eeb8e8c-0175-1000-caf1-3c7bcd3a6afb"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:15:34Z","duration":32,"status":"FAILED"}]},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:15:32Z","duration":2485,"status":"FAILED"},{"id":"EID6eeb9841-0175-1000-ce94-4a6fa3dce324","testStepResults":{"TestStepResult":{"id":"EID6eeb9841-0175-1000-8f08-227e115df7bf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb98b0-0175-1000-2943-ef255dd64621","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb9841-0175-1000-8f08-227e115df7bf"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:15:35Z","duration":15,"status":"FAILED"},{"id":"EID6eeb98bf-0175-1000-7786-a72208ff52cf","parent":{"ref":"EID6eeb9841-0175-1000-8f08-227e115df7bf"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"PASSED"},{"id":"EID6eeb98bf-0175-1000-633b-0f5783361e82","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb9841-0175-1000-8f08-227e115df7bf"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"FAILED"},{"id":"EID6eeb98bf-0175-1000-c9e4-7d94010d151f","parent":{"ref":"EID6eeb9841-0175-1000-8f08-227e115df7bf"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa0882f5c-90b2-4af1-a824-0e000437c4d6"},{"ref":"EID741e1e8f-8af3-466b-830b-a991b0da4f40"},{"ref":"EIDd8c5f5d0-313b-4316-8d9f-073d9b3ae25c"}]},"parent":{"ref":"EID6eeb9841-0175-1000-ce94-4a6fa3dce324"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:15:35Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6eeb8668-0175-1000-ab77-29ce12e540fe"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:15:35Z","duration":134,"status":"FAILED"}]},"parent":{"ref":"EID4bee505b-063e-4c1f-97ca-b424629f9e64"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:15:30Z","duration":4704,"status":"FAILED"},{"id":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3","testCaseResults":{"TestCaseResult":[{"id":"EID6eeb98c8-0175-1000-c7df-cfd1ea23b5cb","testStepResults":{"TestStepResult":{"id":"EID6eeb98c8-0175-1000-c65c-2912781c0af6","parent":{"ref":"EID6eeb98c8-0175-1000-c7df-cfd1ea23b5cb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":672,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb98d1-0175-1000-baae-aa50c5ab0914","testStepResults":{"TestStepResult":{"id":"EID6eeb98d1-0175-1000-ae07-f4c935c1a7e6","parent":{"ref":"EID6eeb98d1-0175-1000-baae-aa50c5ab0914"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":672,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb98d1-0175-1000-f11f-2254e9660a1a","testStepResults":{"TestStepResult":{"id":"EID6eeb98d1-0175-1000-5b70-8208ee8b907f","parent":{"ref":"EID6eeb98d1-0175-1000-f11f-2254e9660a1a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":672,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb98d1-0175-1000-3063-0d80a18efceb","testStepResults":{"TestStepResult":{"id":"EID6eeb98d1-0175-1000-f826-5f1aeff99b6d","parent":{"ref":"EID6eeb98d1-0175-1000-3063-0d80a18efceb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":672,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb98d1-0175-1000-2427-1eb11a052cbc","testStepResults":{"TestStepResult":{"id":"EID6eeb98d2-0175-1000-67ba-e99d821b4b02","parent":{"ref":"EID6eeb98d1-0175-1000-2427-1eb11a052cbc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":672,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:15:35Z","duration":1,"status":"SKIPPED"},{"id":"EID6eeb98d2-0175-1000-e43e-7c0723a1ca75","testStepResults":{"TestStepResult":{"id":"EID6eeb98d2-0175-1000-267d-a4bf6990395c","parent":{"ref":"EID6eeb98d2-0175-1000-e43e-7c0723a1ca75"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":672,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:15:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb98d2-0175-1000-9929-2244681daf72","testStepResults":{"TestStepResult":{"id":"EID6eeb98d9-0175-1000-53fc-3ea603e0a2c6","parent":{"ref":"EID6eeb98d2-0175-1000-9929-2244681daf72"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:15:35Z","duration":673,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb98c8-0175-1000-74c2-44fecbf8dcc3"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:15:35Z","duration":8,"status":"SKIPPED"}]},"parent":{"ref":"EID4bee505b-063e-4c1f-97ca-b424629f9e64"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:15:35Z","duration":18,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID221b8e40-f017-4319-b814-4a2ab6bff5d0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID221b8e40-f017-4319-b814-4a2ab6bff5d0"}},{"type":"Message","id":"EID9b6463bd-0bbf-482d-b8dc-b5d7b10f3925","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID9b6463bd-0bbf-482d-b8dc-b5d7b10f3925"}},{"type":"GetParameter","id":"EID1c250a2c-f32b-48be-8f34-13c4d83432b5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb5c30a4f-74d0-47a7-adb8-a2a2b63702af","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID7d3f46a7-13a8-4b96-a04c-c3455bc7d1d8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID7d3f46a7-13a8-4b96-a04c-c3455bc7d1d8"}},{"type":"GetParameter","id":"EID8062c009-29dc-43cf-8727-b022f453adee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDed6b0758-f86c-44be-9d3f-2ff584e41b7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDc8a212ed-8339-42cb-8170-7be2102bc8e2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID76394ce9-91de-4a66-85f8-9c216812fac7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID76394ce9-91de-4a66-85f8-9c216812fac7"}},{"type":"ServiceResponse","id":"EIDd02c4eb6-d5db-4d54-9e96-ddc07f11aff3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDd02c4eb6-d5db-4d54-9e96-ddc07f11aff3"}},{"type":"GetParameter","id":"EIDcd60cf68-8baa-4586-9bd1-b61dfdfd3dbb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDdc494c59-1f52-485e-b633-743dfda88798","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDdc494c59-1f52-485e-b633-743dfda88798"}},{"type":"ServiceEndpoint","id":"EIDbdcaa8d1-ddab-4c4d-851b-9093a4feebba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID65a26882-d50d-4f2c-a62a-b43f3e1b55eb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd3b79900-c300-4ee1-a3aa-e5999053eab8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID92c57420-4901-47dc-8151-8b4eaa5ee2dc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID92c57420-4901-47dc-8151-8b4eaa5ee2dc"}},{"type":"Message","id":"EID754c5025-7e0b-4722-b516-995d133f984c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID754c5025-7e0b-4722-b516-995d133f984c"}},{"type":"Message","id":"EIDbdc28154-2c7a-4bba-a889-46cef99d0dbf","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDbdc28154-2c7a-4bba-a889-46cef99d0dbf"}},{"type":"Error","id":"EIDc90ba2c3-bef9-4005-8746-95010c2cd661","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc90ba2c3-bef9-4005-8746-95010c2cd661"}},{"type":"ServiceResponse","id":"EID2d7332e2-12b1-4520-8cbc-e72a0bd9f398","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID2d7332e2-12b1-4520-8cbc-e72a0bd9f398"}},{"type":"GetParameter","id":"EID42486234-86e5-42fb-ad26-07f0ef6ece1d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc917378f-35f1-4a2a-8095-1e4656906ac8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDc436ef78-c321-490c-bd94-d410f18746cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc436ef78-c321-490c-bd94-d410f18746cf"}},{"type":"ServiceEndpoint","id":"EIDa0882f5c-90b2-4af1-a824-0e000437c4d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID25ec2d58-27f8-44c2-a54d-9a4aacbac91e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8ff50e07-6386-4db5-8086-099f1ef5b418","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe617d99b-ee11-4b6d-a52b-90fd527b3313","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDe617d99b-ee11-4b6d-a52b-90fd527b3313"}},{"type":"ServiceResponse","id":"EID126e8050-99bb-4f73-b583-ae170675f188","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID126e8050-99bb-4f73-b583-ae170675f188"}},{"type":"ServiceResponse","id":"EID65f72e5e-394d-4c96-b149-4693822f8ef6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID65f72e5e-394d-4c96-b149-4693822f8ef6"}},{"type":"GetParameter","id":"EIDf02fb797-2d3c-478a-b9f8-33501babf282","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID7ad000ef-4e8b-4b5e-9b61-cc9b88b24b43","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID35f49261-090f-481a-ba57-17e7b6cf1e7e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID35f49261-090f-481a-ba57-17e7b6cf1e7e"}},{"type":"GetParameter","id":"EIDeb4a357b-4cdb-4c74-9a7c-932eecc09b70","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID1c2066c7-1df2-4b2e-aebd-ae8bb99aa95f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID8fce58cc-c56e-41d7-b4c1-275885d84568","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID8fce58cc-c56e-41d7-b4c1-275885d84568"}},{"type":"ServiceResponse","id":"EID2b215569-13e5-4fa0-9fb5-27257063e78f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID2b215569-13e5-4fa0-9fb5-27257063e78f"}},{"type":"ServiceResponse","id":"EID89db7513-6ea7-493c-8a5b-b0ee076a1736","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID89db7513-6ea7-493c-8a5b-b0ee076a1736"}},{"type":"Message","id":"EIDeaaba32f-399a-447d-b4fa-cc733c51b791","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDeaaba32f-399a-447d-b4fa-cc733c51b791"}},{"type":"ServiceResponse","id":"EID42cf320b-cb1a-4c43-a940-1f58360831a4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID42cf320b-cb1a-4c43-a940-1f58360831a4"}},{"type":"ServiceEndpoint","id":"EIDe0ef053d-4500-4ef2-9a25-32a249be5a51","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1ac2ddc9-57bc-4459-bf92-39511b090e2c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6c92bb25-199c-4cf9-a947-7cc5e5fc6971","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID6c92bb25-199c-4cf9-a947-7cc5e5fc6971"}},{"type":"ServiceResponse","id":"EIDc4a5076d-a483-4352-90c5-baca12deeca8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc4a5076d-a483-4352-90c5-baca12deeca8"}},{"type":"GetParameter","id":"EID98d7afcb-accd-4b15-b1ec-c26898bb5530","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID28e62f55-dec3-4460-a0a5-dbb057e934aa","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID28e62f55-dec3-4460-a0a5-dbb057e934aa"}},{"type":"GetParameter","id":"EID3b75e11e-fd45-425e-99f5-25df4c5d0800","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5159ce22-d386-4985-92dd-64e9c5bae3dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID673c934f-650f-4cec-9b77-3c3cdfdb26c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID44442df1-6205-45d1-994a-2fbc1bceff3d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd7f119fc-4205-4d79-a77e-7a609514da7a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDd7f119fc-4205-4d79-a77e-7a609514da7a"}},{"type":"GetParameter","id":"EIDe41d2de4-95e9-41ae-a860-bb412b388a49","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID250430f3-ccd8-4cbb-bf63-b02fe6682868","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID96b3a1e8-a4d6-4cec-bf9b-f433a9003b06","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID96b3a1e8-a4d6-4cec-bf9b-f433a9003b06"}},{"type":"ServiceResponse","id":"EIDa87e37a3-b455-4afb-b1e0-4e396e764ccd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDa87e37a3-b455-4afb-b1e0-4e396e764ccd"}},{"type":"Error","id":"EIDc7ba375f-9000-418e-83dc-823d565ff4bd","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc7ba375f-9000-418e-83dc-823d565ff4bd"}},{"type":"ServiceEndpoint","id":"EIDd8608a52-6a39-44cf-a035-d9181e80c936","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7ce7077c-8224-4604-8969-57c263d2718d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID51fddd6b-4057-4a01-8589-4adb01ff5148","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID577aea60-01d8-4602-a308-afeb922c81f1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID577aea60-01d8-4602-a308-afeb922c81f1"}},{"type":"Error","id":"EIDfeff4be5-04f4-4035-8c2b-f062d7b548f6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDfeff4be5-04f4-4035-8c2b-f062d7b548f6"}},{"type":"ServiceEndpoint","id":"EIDa2fba74d-1f7d-41d0-934e-3c73ba653df9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID962cda27-76cc-4b2b-8be8-595f8e67a488","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID962cda27-76cc-4b2b-8be8-595f8e67a488"}},{"type":"Message","id":"EID9814a4ff-ba59-4b58-843b-b302c1e20242","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID9814a4ff-ba59-4b58-843b-b302c1e20242"}},{"type":"GetParameter","id":"EID8c666e8c-6e04-4cdb-95ca-ef807a1674d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID7f8382c5-a335-48e0-8fda-17ed20f9a833","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID7f8382c5-a335-48e0-8fda-17ed20f9a833"}},{"type":"GetParameter","id":"EID26254934-68f6-473b-a70a-7dac924254de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID583a0e02-6898-4981-90e6-12ff1fe03956","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"LogFile","id":"EIDdf634a29-ad11-40fd-87e8-0feac8d1f78b","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDdf634a29-ad11-40fd-87e8-0feac8d1f78b"}},{"type":"Error","id":"EIDefe56913-6065-445b-b80c-9c833ac646a1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDefe56913-6065-445b-b80c-9c833ac646a1"}},{"type":"ServiceResponse","id":"EIDc506af26-5eea-4680-be09-735ed2f55831","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc506af26-5eea-4680-be09-735ed2f55831"}},{"type":"GetParameter","id":"EIDafc68a8e-6b21-47e9-a2c0-971709e72bf8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID82c95ef0-b4d8-49e2-a6e4-ed9cd1692024","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID543a672c-7df5-44d4-b164-8dbed97a7a97","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID543a672c-7df5-44d4-b164-8dbed97a7a97"}},{"type":"Message","id":"EID61002d56-18ae-4f13-b4bf-83ac3e2bdf1f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID61002d56-18ae-4f13-b4bf-83ac3e2bdf1f"}},{"type":"ServiceEndpoint","id":"EIDf0a3c5fc-060a-4d11-b834-a33f1a4a39f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDb11a1786-9430-4767-93b1-14ac5e05b518","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDb11a1786-9430-4767-93b1-14ac5e05b518"}},{"type":"Message","id":"EIDdac60dac-d18a-4f5d-9504-3291c9a44ed8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDdac60dac-d18a-4f5d-9504-3291c9a44ed8"}},{"type":"ServiceResponse","id":"EID945b4a7a-2374-41e3-820d-080d25bcfa8b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID945b4a7a-2374-41e3-820d-080d25bcfa8b"}},{"type":"GetParameter","id":"EID236b4fbd-1266-4508-84ef-1911ddbcb1a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9762b340-c556-4f5d-994c-4113f0d8a92f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID65f1e17f-c379-4e3d-a34f-fb6b59a455f6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID65f1e17f-c379-4e3d-a34f-fb6b59a455f6"}},{"type":"Message","id":"EID40b5d41a-c66e-4a31-83e6-273b046940a5","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID40b5d41a-c66e-4a31-83e6-273b046940a5"}},{"type":"GetParameter","id":"EID3d824aea-ee6e-4dee-904d-0501bbd1dd03","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Error","id":"EIDbb37245f-5ffb-4248-b80c-329a7dc49ffa","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDbb37245f-5ffb-4248-b80c-329a7dc49ffa"}},{"type":"GetParameter","id":"EID83deaf22-646b-4220-a8c6-3e23cde09c5f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6dc1e4e5-0a7a-4678-b693-a0f4fbd56d31","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID03a73210-449a-46cd-8f11-d036ce738361","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDb12626a2-35d7-4e52-a78b-a04061e77b1e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDb12626a2-35d7-4e52-a78b-a04061e77b1e"}},{"type":"Message","id":"EID4c01ccd6-81e5-405f-915a-601f7e9cb785","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID4c01ccd6-81e5-405f-915a-601f7e9cb785"}},{"type":"Message","id":"EIDc8a366a4-f480-42cf-82ed-d2e9c631edd5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc8a366a4-f480-42cf-82ed-d2e9c631edd5"}},{"type":"Message","id":"EID4a83d52b-48e5-4c49-8367-f83fe38a1abf","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID4a83d52b-48e5-4c49-8367-f83fe38a1abf"}},{"type":"ServiceEndpoint","id":"EID03e8ad78-3c8d-4a95-a90a-6c77bd11f61f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDe688695f-8c6e-4ffb-9b22-ef1d346672e2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDe688695f-8c6e-4ffb-9b22-ef1d346672e2"}},{"type":"ServiceEndpoint","id":"EIDfc74716b-171a-4e03-a92f-07b7625aad78","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID93db1c52-e080-4887-b39c-3898e10396b9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID93db1c52-e080-4887-b39c-3898e10396b9"}},{"type":"ServiceResponse","id":"EID741e1e8f-8af3-466b-830b-a991b0da4f40","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID741e1e8f-8af3-466b-830b-a991b0da4f40"}},{"type":"ServiceResponse","id":"EID83830824-2b19-44db-b9e5-6e2fbcf3a215","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID83830824-2b19-44db-b9e5-6e2fbcf3a215"}},{"type":"ServiceResponse","id":"EIDdaa098ad-8968-4707-a947-2ac7da7ccb03","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDdaa098ad-8968-4707-a947-2ac7da7ccb03"}},{"type":"GetParameter","id":"EIDd258dcd8-67af-4007-a6dd-1cebcfdfe2ba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID747f8224-3c30-4252-a40a-dc9a64b11a37","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID747f8224-3c30-4252-a40a-dc9a64b11a37"}},{"type":"Message","id":"EIDa16fc02a-510f-44a9-8e70-ba5aab18f2df","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDa16fc02a-510f-44a9-8e70-ba5aab18f2df"}},{"type":"ServiceEndpoint","id":"EID62808f94-7aec-4ef3-9b19-43cea8e9f1d2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDcca958f3-8f7a-4e51-ae2f-2daf3a29cd07","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDcca958f3-8f7a-4e51-ae2f-2daf3a29cd07"}},{"type":"ServiceResponse","id":"EIDc7326c8f-edd0-4aee-aec9-58691cc0f1cc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc7326c8f-edd0-4aee-aec9-58691cc0f1cc"}},{"type":"GetParameter","id":"EIDc4c194cc-acab-421b-a180-818cf7faa57c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID79fb1274-e141-40e1-ac1d-10c7aa030882","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID79fb1274-e141-40e1-ac1d-10c7aa030882"}},{"type":"GetParameter","id":"EID53ccc4be-90d4-47ad-b839-d3c584b5d636","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID45c9659d-2cbd-4bbb-bad4-d53bcf965a58","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID45c9659d-2cbd-4bbb-bad4-d53bcf965a58"}},{"type":"Message","id":"EID4b217f67-bb9a-4758-ba92-dc666c94a6fe","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID4b217f67-bb9a-4758-ba92-dc666c94a6fe"}},{"type":"Message","id":"EID19cfabfd-3281-46a4-b221-cc488b9ffdc4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID19cfabfd-3281-46a4-b221-cc488b9ffdc4"}},{"type":"ServiceResponse","id":"EIDbbf6aba8-3335-4f31-9c4b-eec4899cfe97","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDbbf6aba8-3335-4f31-9c4b-eec4899cfe97"}},{"type":"GetParameter","id":"EID68b30eac-c743-4be7-a7b3-8217ec2c843d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa1178553-e3cc-417b-9bc3-cde5372ca77f","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDa1178553-e3cc-417b-9bc3-cde5372ca77f"}},{"type":"Message","id":"EID7a71f298-63ad-4f4c-8556-9f0eb13bdf68","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID7a71f298-63ad-4f4c-8556-9f0eb13bdf68"}},{"type":"ServiceEndpoint","id":"EIDb01ceaee-7fc0-40ed-a971-9d62b841fa24","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9b94343a-dc33-48b4-b2e4-35360e99a413","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDd80c3546-5917-440f-bef4-ad316d1b95c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID7cf10628-8592-4390-9125-804879b817d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDd8c5f5d0-313b-4316-8d9f-073d9b3ae25c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID9ea73fab-dd20-427f-bd3b-4f012517a60a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID9ea73fab-dd20-427f-bd3b-4f012517a60a"}},{"type":"GetParameter","id":"EIDac99908d-b518-441c-adf2-7a16b21c7033","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDb1876de5-32ea-43c0-98d0-64bcda2f7573","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDb1876de5-32ea-43c0-98d0-64bcda2f7573"}},{"type":"Error","id":"EID11fc963e-6dc8-45a6-890e-567b7035ba36","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID11fc963e-6dc8-45a6-890e-567b7035ba36"}},{"type":"GetParameter","id":"EID3939f67d-a1e4-4a2e-8266-2f6481b44a58","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID24b16859-f522-4e88-afb9-765632985096","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID24b16859-f522-4e88-afb9-765632985096"}},{"type":"GetParameter","id":"EID02e2e10e-2cef-45b8-acec-bc6671841a9c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID35a73536-bce7-448f-b8a1-3b6ff7fc60d0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa4923674-cb15-47f5-aca7-0fbeff019333","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID99b12f2e-fd5b-48ac-9285-4e113890d43c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID99b12f2e-fd5b-48ac-9285-4e113890d43c"}},{"type":"ServiceEndpoint","id":"EID8c6900b4-d7e0-4dc4-b92d-aa1bd1c62057","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDce9fbedf-716e-41f6-a284-38d598071641","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0dd49f44-0e81-46d7-a1fd-363e80d7de67","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID0dd49f44-0e81-46d7-a1fd-363e80d7de67"}},{"type":"ServiceResponse","id":"EIDd66fa7e3-b326-472f-8f4f-4075d69e1a32","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDd66fa7e3-b326-472f-8f4f-4075d69e1a32"}},{"type":"ServiceEndpoint","id":"EID79970ccc-6b80-40f9-a092-5bfd3c985860","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9155669f-299b-4e23-9835-daadf397d694","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa38091c7-7562-4e31-8d31-875e0d99e389","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID55727533-3873-4314-a6d1-114dc6a05e80","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDee56a2af-a2e3-4abb-b3d3-d7c0e7abe6d7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDee56a2af-a2e3-4abb-b3d3-d7c0e7abe6d7"}},{"type":"Message","id":"EIDe36d8e48-6cc7-46fa-9a3e-873d6d84447e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDe36d8e48-6cc7-46fa-9a3e-873d6d84447e"}},{"type":"ServiceResponse","id":"EIDe4320f30-4f66-42de-98cd-abcbcc646da6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDe4320f30-4f66-42de-98cd-abcbcc646da6"}},{"type":"Error","id":"EID29b7725c-f06a-4fa9-9a61-7814f8bb3761","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID29b7725c-f06a-4fa9-9a61-7814f8bb3761"}},{"type":"ServiceEndpoint","id":"EID3f25a04f-aab9-4cb2-85ef-7ea3678dfb5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID263dfce3-f2f3-46a0-9abd-c248a209f47b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDa7128675-d7a9-4566-81d0-8c9d04af676d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDa7128675-d7a9-4566-81d0-8c9d04af676d"}},{"type":"ServiceResponse","id":"EID85b5b256-0262-41dd-92b3-e2940610cf40","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID85b5b256-0262-41dd-92b3-e2940610cf40"}},{"type":"GetParameter","id":"EIDfdd10526-96fe-47c0-a6bd-6c59ea070fc6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDc2dec0e4-663d-4a04-a78b-417b523450c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDc2dec0e4-663d-4a04-a78b-417b523450c4"}},{"type":"GetParameter","id":"EID5bdb0f89-c0c3-4bf9-bb37-48d10bc0113e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6c0ea674-51e0-44e6-ae6d-9c767fece3e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDb07db163-411e-4b9d-bda7-d5efb847cf2f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EIDb07db163-411e-4b9d-bda7-d5efb847cf2f"}},{"type":"ServiceEndpoint","id":"EID5bdbe61d-cd7c-4ed0-ad2d-d2de82e50666","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa8df73fd-7b60-4aed-a6e3-195994276106","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID902210dc-7934-4b0e-9e6f-4b38c39ac0c0","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID902210dc-7934-4b0e-9e6f-4b38c39ac0c0"}},{"type":"GetParameter","id":"EID63a01811-6e5c-4756-8ce9-fbac7720a5e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8d87a622-b5f3-40fa-b3ed-ce3f80ea46f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0a03498b-6b64-4ebd-b5a2-e5ce1a1bf739","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID0a03498b-6b64-4ebd-b5a2-e5ce1a1bf739"}},{"type":"GetParameter","id":"EID7e50ac75-9057-41a0-a1f1-554d42d5d05b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID10128c34-72d2-4c8d-8cda-5e741b9f7c53","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID10128c34-72d2-4c8d-8cda-5e741b9f7c53"}},{"type":"GetParameter","id":"EID4f1354fc-c710-4c9e-ac81-cc578ee120af","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDcdb4026f-22bf-458b-aa2b-cb6673ad1f9e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID9092a3a1-abce-47b4-91b5-710fb5c8fa26","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID4bee505b-063e-4c1f-97ca-b424629f9e64/Attachments/EID9092a3a1-abce-47b4-91b5-710fb5c8fa26"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:15:23Z","duration":12208,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:15:54.783 [print] EID94357bbb-2bc5-48b1-a2b0-69d555c3d244
* print response.EtfItemCollection.testRuns.TestRun.status 0.004
11:15:54.787 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:15:54.787 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:15:54.787 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:15:54.787 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/94357bbb-2bc5-48b1-a2b0-69d555c3d244.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:15:54.788 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/94357bbb-2bc5-48b1-a2b0-69d555c3d244.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:15:54.788 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID94357bbb-2bc5-48b1-a2b0-69d555c3d244/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.009
11:15:54.803 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:15:54.803 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
11.616
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:52.025 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 11.616
11:09:52.025 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities"}}}

11:10:03.641 response time in milliseconds: 11510.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883403471","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:03.641 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.421
* print "testing url:" + metadata.url 0.000
11:16:44.976 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.420
11:16:44.976 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:45.396 response time in milliseconds: 420.14
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:45 GMT
1 < ETag: "18202-5af58ad52cc2e-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.408
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.407
11:16:45.403 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:45.810 response time in milliseconds: 406.91
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:45 GMT
1 < ETag: "18202-5af58ad52cc2e-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:45.810 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.569
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.002
11:15:25.451 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.566
11:15:25.451 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities"}}}

11:15:27.017 response time in milliseconds: 1460.36
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:26 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883726851","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:27.017 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
43.136
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:16.751 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.605
11:06:16.753 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}

11:06:23.355 response time in milliseconds: 5833.04
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:22 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:20 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a.json","testRuns":{"TestRun":{"id":"EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:20.302Z","testTasks":{"TestTask":{"id":"EIDa90ad65a-b5cb-4362-acc9-31df4fce0f70","parent":{"ref":"EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7abe4162-8c50-48ae-9d42-1cf4e1dba231"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7abe4162-8c50-48ae-9d42-1cf4e1dba231","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:17.203Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:19.884Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:23.358 [print] EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:23.358 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:23.359 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.005
11:06:23.365 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:23.365 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:06:23.365 [print] statuspath TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a
* print 'progresspath ', progresspath 0.000
11:06:23.366 [print] progresspath  TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
Given path progresspath 0.000
When method GET 0.519
11:06:23.366 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:23.885 response time in milliseconds: 517.83
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:23 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)","28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:20 - Preparing 1 Test Task:","28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)","28.10.2020 11:06:20 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:20 -  with parameters: ","28.10.2020 11:06:20 - etf.testcases = *","28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:20 - Setting state to CREATED","28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z","28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:22 - Project Properties: ","28.10.2020 11:06:22 - etf.testcases - * ","28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:06:22 - username -  ","28.10.2020 11:06:22 - authUser -  ","28.10.2020 11:06:22 - authMethod - basic ","28.10.2020 11:06:22 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:06:23.886 [print] {
  "val": "4",
  "max": "5",
  "log": [
    "28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)",
    "28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:06:20 - Preparing 1 Test Task:",
    "28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)",
    "28.10.2020 11:06:20 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:06:20 -  with parameters: ",
    "28.10.2020 11:06:20 - etf.testcases = *",
    "28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:06:20 - Setting state to CREATED",
    "28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z",
    "28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:06:22 - Project Properties: ",
    "28.10.2020 11:06:22 - etf.testcases - * ",
    "28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ",
    "28.10.2020 11:06:22 - username -  ",
    "28.10.2020 11:06:22 - authUser -  ",
    "28.10.2020 11:06:22 - authMethod - basic ",
    "28.10.2020 11:06:22 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 31.911
11:06:23.887 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:24.406 response time in milliseconds: 518.38
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:24 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)","28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:20 - Preparing 1 Test Task:","28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)","28.10.2020 11:06:20 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:20 -  with parameters: ","28.10.2020 11:06:20 - etf.testcases = *","28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:20 - Setting state to CREATED","28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z","28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:22 - Project Properties: ","28.10.2020 11:06:22 - etf.testcases - * ","28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:06:22 - username -  ","28.10.2020 11:06:22 - authUser -  ","28.10.2020 11:06:22 - authMethod - basic ","28.10.2020 11:06:22 - TestRunTask initialized"]}

11:06:24.406 retry condition not satisfied: response.val == response.max
11:06:24.406 sleeping before retry #1
11:06:29.408 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:32.101 response time in milliseconds: 2691.57
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:32 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)","28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:20 - Preparing 1 Test Task:","28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)","28.10.2020 11:06:20 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:20 -  with parameters: ","28.10.2020 11:06:20 - etf.testcases = *","28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:20 - Setting state to CREATED","28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z","28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:22 - Project Properties: ","28.10.2020 11:06:22 - etf.testcases - * ","28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:06:22 - username -  ","28.10.2020 11:06:22 - authUser -  ","28.10.2020 11:06:22 - authMethod - basic ","28.10.2020 11:06:22 - TestRunTask initialized"]}

11:06:32.101 retry condition not satisfied: response.val == response.max
11:06:32.101 sleeping before retry #2
11:06:37.102 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:37.722 response time in milliseconds: 617.65
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:06:37 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)","28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:20 - Preparing 1 Test Task:","28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)","28.10.2020 11:06:20 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:20 -  with parameters: ","28.10.2020 11:06:20 - etf.testcases = *","28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:20 - Setting state to CREATED","28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z","28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:22 - Project Properties: ","28.10.2020 11:06:22 - etf.testcases - * ","28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:06:22 - username -  ","28.10.2020 11:06:22 - authUser -  ","28.10.2020 11:06:22 - authMethod - basic ","28.10.2020 11:06:22 - TestRunTask initialized"]}

11:06:37.723 retry condition not satisfied: response.val == response.max
11:06:37.723 sleeping before retry #3
11:06:42.724 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:43.253 response time in milliseconds: 528.26
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:06:43 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"133","max":"134","log":["28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)","28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:20 - Preparing 1 Test Task:","28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)","28.10.2020 11:06:20 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:20 -  with parameters: ","28.10.2020 11:06:20 - etf.testcases = *","28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:20 - Setting state to CREATED","28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z","28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:22 - Project Properties: ","28.10.2020 11:06:22 - etf.testcases - * ","28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:06:22 - username -  ","28.10.2020 11:06:22 - authUser -  ","28.10.2020 11:06:22 - authMethod - basic ","28.10.2020 11:06:22 - TestRunTask initialized","28.10.2020 11:06:40 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:43.260 retry condition not satisfied: response.val == response.max
11:06:43.260 sleeping before retry #4
11:06:48.261 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:48.776 response time in milliseconds: 512.01
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:06:48 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["28.10.2020 11:06:20 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:20 UTC 2020)","28.10.2020 11:06:20 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:20 - Preparing 1 Test Task:","28.10.2020 11:06:20 -  TestTask 1 (a90ad65a-b5cb-4362-acc9-31df4fce0f70)","28.10.2020 11:06:20 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:20 -  with parameters: ","28.10.2020 11:06:20 - etf.testcases = *","28.10.2020 11:06:20 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:20 - Setting state to CREATED","28.10.2020 11:06:20 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:20 - Starting TestRun.df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a at 2020-10-28T11:06:22Z","28.10.2020 11:06:22 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:22 - Project Properties: ","28.10.2020 11:06:22 - etf.testcases - * ","28.10.2020 11:06:22 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:06:22 - username -  ","28.10.2020 11:06:22 - authUser -  ","28.10.2020 11:06:22 - authMethod - basic ","28.10.2020 11:06:22 - TestRunTask initialized","28.10.2020 11:06:40 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:48.776 retry condition not satisfied: response.val == response.max
11:06:48.776 sleeping before retry #5
11:06:53.778 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:55.796 response time in milliseconds: 2018.18
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:06:55 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:06:55.797 retry condition satisfied
* print response 0.000
11:06:55.797 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.039
11:06:55.798 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:59.832 response time in milliseconds: 3053.25
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Cache-Control: public, max-age=120
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:06:58 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Last-Modified: Wed, 28 Oct 2020 11:06:56 GMT
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a.json","testRuns":{"TestRun":{"id":"EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:20.302Z","testTasks":{"TestTask":{"id":"EIDa90ad65a-b5cb-4362-acc9-31df4fce0f70","parent":{"ref":"EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7abe4162-8c50-48ae-9d42-1cf4e1dba231"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID5c511005-9448-46df-88cc-056e216a47df"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7abe4162-8c50-48ae-9d42-1cf4e1dba231","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:17.203Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:19.884Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID5c511005-9448-46df-88cc-056e216a47df","testObject":{"ref":"EID7abe4162-8c50-48ae-9d42-1cf4e1dba231"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee328b2-0175-1000-9e13-c0ffac2dcef8","testCaseResults":{"TestCaseResult":[{"id":"EID6ee328b4-0175-1000-09bf-baf58179f399","testStepResults":{"TestStepResult":[{"id":"EID6ee328b5-0175-1000-066d-4e9055ffe8d2","parent":{"ref":"EID6ee328b4-0175-1000-09bf-baf58179f399"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:06:22Z","duration":13,"status":"PASSED"},{"id":"EID6ee328c2-0175-1000-988c-a7e84b5ff85e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32d78-0175-1000-daff-d5ab166ddd4e","parent":{"ref":"EID6ee328c2-0175-1000-988c-a7e84b5ff85e"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32d78-0175-1000-fd69-fe25c597b24c","parent":{"ref":"EID6ee328c2-0175-1000-988c-a7e84b5ff85e"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32d78-0175-1000-f5da-d3c449583590","parent":{"ref":"EID6ee328c2-0175-1000-988c-a7e84b5ff85e"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32d78-0175-1000-f92a-259a6c884611","parent":{"ref":"EID6ee328c2-0175-1000-988c-a7e84b5ff85e"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea00d514-cb2a-4b8a-a5e7-04f1d2e7096c"},{"ref":"EIDe43cd953-f878-4cf9-9df8-fc215feb8398"},{"ref":"EIDad76908f-c66b-441c-9ef9-cef6bc91eddf"}]},"parent":{"ref":"EID6ee328b4-0175-1000-09bf-baf58179f399"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:06:22Z","duration":1114,"status":"PASSED"}]},"parent":{"ref":"EID6ee328b2-0175-1000-9e13-c0ffac2dcef8"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:06:22Z","duration":1220,"status":"PASSED"},{"id":"EID6ee32d78-0175-1000-cd07-9ce9c25b3cc1","testStepResults":{"TestStepResult":{"id":"EID6ee32d78-0175-1000-6012-a6c809e7b5d2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee330ee-0175-1000-2d65-c14a6d8ad14a","parent":{"ref":"EID6ee32d78-0175-1000-6012-a6c809e7b5d2"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee330ee-0175-1000-3bb8-f5e8fb6fb782","parent":{"ref":"EID6ee32d78-0175-1000-6012-a6c809e7b5d2"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee330ee-0175-1000-3ba9-c6f7cf7d953e","parent":{"ref":"EID6ee32d78-0175-1000-6012-a6c809e7b5d2"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd4ab3146-e1fe-48fa-a05f-9cb0cfab5d9d"},{"ref":"EIDa309b385-559a-414c-b836-b4cc03c94d24"},{"ref":"EID9e4efc8f-87a8-4ff1-aec4-7e643ae1702c"}]},"parent":{"ref":"EID6ee32d78-0175-1000-cd07-9ce9c25b3cc1"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:06:23Z","duration":798,"status":"PASSED"}},"parent":{"ref":"EID6ee328b2-0175-1000-9e13-c0ffac2dcef8"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:06:23Z","duration":886,"status":"PASSED"}]},"parent":{"ref":"EID5c511005-9448-46df-88cc-056e216a47df"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:06:22Z","duration":2108,"status":"PASSED"},{"id":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76","testCaseResults":{"TestCaseResult":[{"id":"EID6ee330ee-0175-1000-15e7-3bedecf63217","testStepResults":{"TestStepResult":[{"id":"EID6ee330ee-0175-1000-e425-34373a6d9e39","parent":{"ref":"EID6ee330ee-0175-1000-15e7-3bedecf63217"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:06:24Z","duration":798,"status":"PASSED"},{"id":"EID6ee330ee-0175-1000-bf1b-6453cc30a3a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee331df-0175-1000-d081-aa430e29249c","parent":{"ref":"EID6ee330ee-0175-1000-bf1b-6453cc30a3a4"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee331df-0175-1000-c9be-090107c4be42","parent":{"ref":"EID6ee330ee-0175-1000-bf1b-6453cc30a3a4"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee331df-0175-1000-7fee-fa0af760d912","parent":{"ref":"EID6ee330ee-0175-1000-bf1b-6453cc30a3a4"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee331df-0175-1000-42b2-2a40dc6e644a","parent":{"ref":"EID6ee330ee-0175-1000-bf1b-6453cc30a3a4"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee331df-0175-1000-fbc4-b84931779b3a","parent":{"ref":"EID6ee330ee-0175-1000-bf1b-6453cc30a3a4"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:06:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID19a9bac5-0c67-435b-a8b8-cf14d311d394"},{"ref":"EID0ec6d6ec-e429-4f00-a323-2f8335e0ac05"},{"ref":"EID2c997aa1-609c-4ac8-8a61-38422b7612c1"}]},"parent":{"ref":"EID6ee330ee-0175-1000-15e7-3bedecf63217"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:06:24Z","duration":142,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:06:24Z","duration":241,"status":"PASSED"},{"id":"EID6ee331df-0175-1000-7348-9ad87b1f1ec9","testStepResults":{"TestStepResult":[{"id":"EID6ee331df-0175-1000-dab6-7f8cc68caabb","attachments":{"attachment":[{"ref":"EID6069f1b2-7762-4d13-9e8c-dfcb7f95051b"},{"ref":"EID49e65f73-c055-4484-9e9f-38bd901f0cfa"}]},"parent":{"ref":"EID6ee331df-0175-1000-7348-9ad87b1f1ec9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:06:24Z","duration":506,"status":"PASSED"},{"id":"EID6ee33401-0175-1000-3ba2-c746eec40d76","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee33613-0175-1000-b8a0-5319148a9a57","parent":{"ref":"EID6ee33401-0175-1000-3ba2-c746eec40d76"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:06:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee33613-0175-1000-96e4-2d4d7c6661e0","parent":{"ref":"EID6ee33401-0175-1000-3ba2-c746eec40d76"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:06:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee33613-0175-1000-fefb-cc0d42c9e03a","parent":{"ref":"EID6ee33401-0175-1000-3ba2-c746eec40d76"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:06:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee33613-0175-1000-a485-47b06bfbd9e6","parent":{"ref":"EID6ee33401-0175-1000-3ba2-c746eec40d76"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:06:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb9892162-2331-4727-8858-0a8138a2c6fe"},{"ref":"EID32ad086d-f626-4baf-801a-8d4ad69abf50"},{"ref":"EID5a5d3937-eb37-4921-a310-fe418b3ef4ff"}]},"parent":{"ref":"EID6ee331df-0175-1000-7348-9ad87b1f1ec9"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:06:25Z","duration":437,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:06:24Z","duration":1076,"status":"PASSED"},{"id":"EID6ee33613-0175-1000-2e98-74c33fdb9793","testStepResults":{"TestStepResult":[{"id":"EID6ee33613-0175-1000-ae02-f23bb39fed6c","attachments":{"attachment":[{"ref":"EIDfd101b3d-090b-4951-b6d3-47433a70ad77"},{"ref":"EID675c33d9-6bd5-4734-8d5c-c325dbd5ef42"}]},"parent":{"ref":"EID6ee33613-0175-1000-2e98-74c33fdb9793"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:06:25Z","duration":142,"status":"PASSED"},{"id":"EID6ee336ce-0175-1000-5ff3-f67beb464766","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee339f2-0175-1000-aa51-8a0c1545a34b","parent":{"ref":"EID6ee336ce-0175-1000-5ff3-f67beb464766"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:06:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee339f2-0175-1000-9634-fd3aa147c29f","parent":{"ref":"EID6ee336ce-0175-1000-5ff3-f67beb464766"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:06:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee339f2-0175-1000-d92b-4e071b7d4189","parent":{"ref":"EID6ee336ce-0175-1000-5ff3-f67beb464766"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:06:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee339f2-0175-1000-8395-f5f1444c7569","parent":{"ref":"EID6ee336ce-0175-1000-5ff3-f67beb464766"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:06:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee339f2-0175-1000-1bc5-c3acb3e84cca","parent":{"ref":"EID6ee336ce-0175-1000-5ff3-f67beb464766"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:06:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb54781e-8cd0-4931-908d-a2385d8e32dd"},{"ref":"EID0906a1fe-d998-4385-845e-580093815e2e"},{"ref":"EID4dbd04a7-d6fb-4d8e-ae18-2a1e378ca32b"}]},"parent":{"ref":"EID6ee33613-0175-1000-2e98-74c33fdb9793"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:06:25Z","duration":665,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:06:25Z","duration":991,"status":"PASSED"},{"id":"EID6ee339f2-0175-1000-9b3b-0ad979fdb3c0","testStepResults":{"TestStepResult":[{"id":"EID6ee339fb-0175-1000-96f2-241350a98b05","attachments":{"attachment":[{"ref":"EIDae8e8216-82c2-4a70-bcfe-4490c7b08bc1"},{"ref":"EIDa725eafc-755e-4e1c-ab92-0cb236da0a8b"}]},"parent":{"ref":"EID6ee339f2-0175-1000-9b3b-0ad979fdb3c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:06:26Z","duration":225,"status":"PASSED"},{"id":"EID6ee33b01-0175-1000-8641-022555cddd44","parent":{"ref":"EID6ee339f2-0175-1000-9b3b-0ad979fdb3c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:06:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee33b01-0175-1000-1869-152bd4c5fd79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee33de8-0175-1000-ee88-e2da62026a50","parent":{"ref":"EID6ee33b01-0175-1000-1869-152bd4c5fd79"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:06:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee33de8-0175-1000-5e42-3348a54705e2","parent":{"ref":"EID6ee33b01-0175-1000-1869-152bd4c5fd79"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:06:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee33de8-0175-1000-db9e-83f77fa9364b","parent":{"ref":"EID6ee33b01-0175-1000-1869-152bd4c5fd79"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:06:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee33de8-0175-1000-309c-2ee2093d2ae8","parent":{"ref":"EID6ee33b01-0175-1000-1869-152bd4c5fd79"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:06:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5c4be46c-f5fd-4057-9a6b-e53343b9fbd4"},{"ref":"EID869a52ee-2ca1-4167-8d39-698550a82d54"},{"ref":"EIDfa4208d8-feb3-485d-89bb-e4e4be4e7bf7"}]},"parent":{"ref":"EID6ee339f2-0175-1000-9b3b-0ad979fdb3c0"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:06:26Z","duration":648,"status":"PASSED"},{"id":"EID6ee33de8-0175-1000-c356-69dc9ee79b3d","attachments":{"attachment":{"ref":"EIDf9f7471d-5f64-424a-bf47-c53d92ff3278"}},"parent":{"ref":"EID6ee339f2-0175-1000-9b3b-0ad979fdb3c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:06:27Z","duration":1,"status":"PASSED"},{"id":"EID6ee33df5-0175-1000-b282-829640c62fd8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3423b-0175-1000-c2a1-95e9e0e732a5","parent":{"ref":"EID6ee33df5-0175-1000-b282-829640c62fd8"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:06:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee3423b-0175-1000-246a-05700e307395","parent":{"ref":"EID6ee33df5-0175-1000-b282-829640c62fd8"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:06:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee3423b-0175-1000-e9dc-2c66648d4f89","parent":{"ref":"EID6ee33df5-0175-1000-b282-829640c62fd8"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:06:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee3423b-0175-1000-c86d-dd6aaf80cad0","parent":{"ref":"EID6ee33df5-0175-1000-b282-829640c62fd8"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:06:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee3423b-0175-1000-fcc6-14a23c6785cd","parent":{"ref":"EID6ee33df5-0175-1000-b282-829640c62fd8"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:06:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa8f87076-135b-4a10-ba4b-769164059699"},{"ref":"EID003bffb3-4310-43bf-9ed3-17fc09f95302"},{"ref":"EID1b3741b5-2fb0-4255-a731-562a43661d38"}]},"parent":{"ref":"EID6ee339f2-0175-1000-9b3b-0ad979fdb3c0"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:06:27Z","duration":883,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:06:26Z","duration":2130,"status":"PASSED"},{"id":"EID6ee34245-0175-1000-b30a-9636c93f4976","testStepResults":{"TestStepResult":[{"id":"EID6ee34245-0175-1000-b7a2-f75dd808d2c8","attachments":{"attachment":[{"ref":"EIDa13d4bfb-ca96-4424-af54-8289b8da387a"},{"ref":"EID97936430-2206-4362-b5ae-cf53d4ffc4b4"}]},"parent":{"ref":"EID6ee34245-0175-1000-b30a-9636c93f4976"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:06:28Z","duration":236,"status":"PASSED"},{"id":"EID6ee343ef-0175-1000-1aad-603c88c2af6a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3448f-0175-1000-7af1-3f6b5ab83b14","parent":{"ref":"EID6ee343ef-0175-1000-1aad-603c88c2af6a"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:06:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee34490-0175-1000-7949-bbe143796c74","parent":{"ref":"EID6ee343ef-0175-1000-1aad-603c88c2af6a"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:06:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee34490-0175-1000-f3fe-0090d60af1a5","parent":{"ref":"EID6ee343ef-0175-1000-1aad-603c88c2af6a"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:06:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee34490-0175-1000-5d88-15063d2a6f78","parent":{"ref":"EID6ee343ef-0175-1000-1aad-603c88c2af6a"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:06:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID75b91d75-7503-48e2-aac5-a8eb901e3ccb"},{"ref":"EIDa5f93d65-c2c2-4157-a275-e5bebfb1e337"},{"ref":"EID1efc96dd-57bc-499f-acfc-fae0d884eecb"}]},"parent":{"ref":"EID6ee34245-0175-1000-b30a-9636c93f4976"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:06:29Z","duration":54,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:06:28Z","duration":587,"status":"PASSED"},{"id":"EID6ee34491-0175-1000-dc95-e8b266115c1c","testStepResults":{"TestStepResult":[{"id":"EID6ee34491-0175-1000-b144-12d5a81734ea","attachments":{"attachment":[{"ref":"EID6634b03b-fe9d-46e4-8f4c-23afc8263cc0"},{"ref":"EID52beb9ea-a4f2-4e9c-a8d4-476449416485"}]},"parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:06:29Z","duration":118,"status":"PASSED"},{"id":"EID6ee34f5e-0175-1000-8d71-9f2d8f5f885d","parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:06:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee34f5e-0175-1000-1939-9fc1b28bc881","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee35214-0175-1000-cffe-3688a2aee75e","parent":{"ref":"EID6ee34f5e-0175-1000-1939-9fc1b28bc881"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:06:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee35214-0175-1000-c22b-edc7d500ae2a","parent":{"ref":"EID6ee34f5e-0175-1000-1939-9fc1b28bc881"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:06:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee35215-0175-1000-f308-944b07606142","parent":{"ref":"EID6ee34f5e-0175-1000-1939-9fc1b28bc881"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:06:32Z","duration":0,"status":"PASSED"},{"id":"EID6ee35215-0175-1000-d2c1-faf30dbde63f","parent":{"ref":"EID6ee34f5e-0175-1000-1939-9fc1b28bc881"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:06:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4c90490e-5b20-444a-b669-89ede8e92490"},{"ref":"EIDc748d4a7-4ea2-49f4-aca0-4bace3bb0065"},{"ref":"EIDcff41a73-cd9f-4498-83ab-fe14169d3fac"}]},"parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:06:32Z","duration":434,"status":"PASSED"},{"id":"EID6ee3521d-0175-1000-9cdc-f327330316a5","attachments":{"attachment":{"ref":"EID93a49d22-31ff-4e3e-bb50-4c23ae2e04df"}},"parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:06:32Z","duration":2,"status":"PASSED"},{"id":"EID6ee35267-0175-1000-f308-5a283a2d80f8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee35345-0175-1000-8ad9-e35f61756339","parent":{"ref":"EID6ee35267-0175-1000-f308-5a283a2d80f8"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee35345-0175-1000-1340-441dedff7521","parent":{"ref":"EID6ee35267-0175-1000-f308-5a283a2d80f8"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee35345-0175-1000-6488-6d664c7af591","parent":{"ref":"EID6ee35267-0175-1000-f308-5a283a2d80f8"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID741ea249-e317-40f0-82c0-aa03cb2e2613"},{"ref":"EIDa876c99c-8830-4c05-857c-74531543135a"},{"ref":"EIDe34471dd-8ebe-4ac9-bc57-dcf4ca9cb725"}]},"parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:06:32Z","duration":159,"status":"PASSED"},{"id":"EID6ee35345-0175-1000-3fa0-34ad9c27ae0d","attachments":{"attachment":{"ref":"EIDb64ef53e-f9d9-469a-80ef-adedeeb65db9"}},"parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:06:33Z","duration":1,"status":"PASSED"},{"id":"EID6ee35353-0175-1000-e541-3ac5b3fc103c","attachments":{"attachment":{"ref":"EID7c39ed2b-a260-49a1-9406-9b116fd5e0a0"}},"parent":{"ref":"EID6ee34491-0175-1000-dc95-e8b266115c1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:06:29Z","duration":3793,"status":"PASSED"},{"id":"EID6ee35362-0175-1000-ce2a-984c68da84ca","testStepResults":{"TestStepResult":[{"id":"EID6ee35362-0175-1000-ed80-e9445ecf4816","attachments":{"attachment":[{"ref":"EIDcd7be1ca-a302-4aac-92f1-82b262852492"},{"ref":"EID82f3fcd0-d243-4d19-b670-b738f54562d9"}]},"parent":{"ref":"EID6ee35362-0175-1000-ce2a-984c68da84ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:06:33Z","duration":149,"status":"PASSED"},{"id":"EID6ee3543d-0175-1000-4303-4dd3cd3b1895","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee354f0-0175-1000-fa8b-ec40c83053da","parent":{"ref":"EID6ee3543d-0175-1000-4303-4dd3cd3b1895"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee354f0-0175-1000-9ef5-008a48b23a90","parent":{"ref":"EID6ee3543d-0175-1000-4303-4dd3cd3b1895"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee354f0-0175-1000-2224-a062351bc0fa","parent":{"ref":"EID6ee3543d-0175-1000-4303-4dd3cd3b1895"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee354f0-0175-1000-6763-9e5b981be0b1","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee3543d-0175-1000-4303-4dd3cd3b1895"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:06:33Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID00003ddf-ca2a-4001-8556-b4bac9983944"},{"ref":"EID2d0cc445-3f9c-4279-8e02-940908f70948"},{"ref":"EID8da56b87-9c13-4356-8ed0-f1f4fb6817d0"}]},"parent":{"ref":"EID6ee35362-0175-1000-ce2a-984c68da84ca"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:06:33Z","duration":79,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:06:33Z","duration":399,"status":"PASSED_MANUAL"},{"id":"EID6ee354f1-0175-1000-f71c-7572c7f0a1b2","testStepResults":{"TestStepResult":{"id":"EID6ee354f1-0175-1000-16f9-6e696b6453fe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee35807-0175-1000-c4b3-52880536885a","parent":{"ref":"EID6ee354f1-0175-1000-16f9-6e696b6453fe"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:06:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee35807-0175-1000-0f30-8bc5e60d8df6","parent":{"ref":"EID6ee354f1-0175-1000-16f9-6e696b6453fe"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:06:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee35807-0175-1000-d846-98655b7763fb","parent":{"ref":"EID6ee354f1-0175-1000-16f9-6e696b6453fe"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:06:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee35807-0175-1000-dcb2-c87da1a87952","parent":{"ref":"EID6ee354f1-0175-1000-16f9-6e696b6453fe"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:06:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID054be42a-aac6-45e2-907a-19d62a6b0c60"},{"ref":"EID077443fb-6fcb-4cf5-91cf-a1c684bf86c8"},{"ref":"EIDccf4c8fd-80d4-4e2c-b52f-05a8a137dcd7"}]},"parent":{"ref":"EID6ee354f1-0175-1000-f71c-7572c7f0a1b2"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:06:33Z","duration":243,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:06:33Z","duration":2585,"status":"PASSED"},{"id":"EID6ee35f0a-0175-1000-3d03-661eb7021225","testStepResults":{"TestStepResult":{"id":"EID6ee35f0b-0175-1000-37a6-3cdaa1d509ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee35fdd-0175-1000-6266-04022263b9ff","parent":{"ref":"EID6ee35f0b-0175-1000-37a6-3cdaa1d509ed"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:06:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee35fdd-0175-1000-ad9d-06e31b175fff","parent":{"ref":"EID6ee35f0b-0175-1000-37a6-3cdaa1d509ed"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:06:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee35fdd-0175-1000-ce8a-98b56ab3449f","parent":{"ref":"EID6ee35f0b-0175-1000-37a6-3cdaa1d509ed"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:06:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee35fdd-0175-1000-2942-fe24f7ff6a91","parent":{"ref":"EID6ee35f0b-0175-1000-37a6-3cdaa1d509ed"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:06:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID489acee5-e337-4034-9359-f121555902e5"},{"ref":"EIDfcfcf6d4-5e4d-4278-a008-ba7e38a2e818"},{"ref":"EIDd43d1d95-0a86-4045-8a80-e96c1fdd2f80"}]},"parent":{"ref":"EID6ee35f0a-0175-1000-3d03-661eb7021225"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:06:36Z","duration":51,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:06:36Z","duration":212,"status":"PASSED"},{"id":"EID6ee35fed-0175-1000-c6f1-8c9bc4ab869c","testStepResults":{"TestStepResult":[{"id":"EID6ee35fed-0175-1000-6c4c-5fb53e03bd2c","attachments":{"attachment":[{"ref":"EID6a6ffd8e-f3ae-4e73-b71b-9a0a67a03095"},{"ref":"EID2828a0ab-43ed-4ef9-880a-162f7e13c2fa"},{"ref":"EID3e6150f9-81eb-4f6d-b7d0-3f7e5e63f841"},{"ref":"EIDeee302a2-cdbd-4856-8e11-751af77c6d40"},{"ref":"EID06ebc2a6-f100-47ae-a07c-3bb7445dd5fc"},{"ref":"EID8ffe661d-a3e5-46e4-90b4-0408208335cf"},{"ref":"EIDb4abc405-c28a-4616-afd4-ea9fea261082"},{"ref":"EIDcac6708d-f512-4f3e-b658-a6c00a95255e"},{"ref":"EID00d32160-c80b-4e34-b7e0-dbbf7eef457f"},{"ref":"EID5ff7ce8e-0882-42aa-924d-9d39380e1712"},{"ref":"EID6a841413-6475-47d9-a712-91c617d873c6"},{"ref":"EID2bb43f8d-c6d7-43aa-8a06-704f576da636"}]},"parent":{"ref":"EID6ee35fed-0175-1000-c6f1-8c9bc4ab869c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:06:36Z","duration":777,"status":"PASSED"},{"id":"EID6ee363c1-0175-1000-f79c-3f7d6a45eee0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee36452-0175-1000-26d4-b6745c478cd4","parent":{"ref":"EID6ee363c1-0175-1000-f79c-3f7d6a45eee0"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee36452-0175-1000-a78c-f4651150cec2","parent":{"ref":"EID6ee363c1-0175-1000-f79c-3f7d6a45eee0"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee36452-0175-1000-448d-8393c58f0834","parent":{"ref":"EID6ee363c1-0175-1000-f79c-3f7d6a45eee0"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee36452-0175-1000-34ff-17cc3f998f53","parent":{"ref":"EID6ee363c1-0175-1000-f79c-3f7d6a45eee0"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee36452-0175-1000-b010-6b5a2b247f1a","parent":{"ref":"EID6ee363c1-0175-1000-f79c-3f7d6a45eee0"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb3410385-9b63-4002-b859-f0a113912cb2"},{"ref":"EID4ca3e2e6-4e06-4cdb-a49a-f6459e4b8412"},{"ref":"EIDc98ea2be-3fcf-4717-b999-827346fad906"}]},"parent":{"ref":"EID6ee35fed-0175-1000-c6f1-8c9bc4ab869c"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:06:37Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:06:36Z","duration":1125,"status":"PASSED"},{"id":"EID6ee36452-0175-1000-015b-43f6c1f467f7","testStepResults":{"TestStepResult":{"id":"EID6ee36452-0175-1000-97a0-ea2623a40d25","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee365a2-0175-1000-e73c-a79c9df06a38","parent":{"ref":"EID6ee36452-0175-1000-97a0-ea2623a40d25"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee365a2-0175-1000-d8e5-d5afd5cabbbb","parent":{"ref":"EID6ee36452-0175-1000-97a0-ea2623a40d25"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee365a2-0175-1000-f213-b2cc839ff6d6","parent":{"ref":"EID6ee36452-0175-1000-97a0-ea2623a40d25"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee365a2-0175-1000-d2e3-2e936fc14f41","parent":{"ref":"EID6ee36452-0175-1000-97a0-ea2623a40d25"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:06:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca36f6f1-0f0c-47ba-8c01-d2e894ac3f4a"},{"ref":"EIDbca254cb-5f21-4fa1-a56b-4c5c483d817a"},{"ref":"EID3ab485e5-fe4d-4f69-bb43-e03d683c731a"}]},"parent":{"ref":"EID6ee36452-0175-1000-015b-43f6c1f467f7"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:06:37Z","duration":260,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:06:37Z","duration":345,"status":"PASSED"},{"id":"EID6ee365ab-0175-1000-a14c-2e0e2acaf022","testStepResults":{"TestStepResult":{"id":"EID6ee365ac-0175-1000-6b01-060f462a3386","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3668e-0175-1000-369b-1fc6d6613d8b","parent":{"ref":"EID6ee365ac-0175-1000-6b01-060f462a3386"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee3668e-0175-1000-8b74-7c099ebd3b7f","parent":{"ref":"EID6ee365ac-0175-1000-6b01-060f462a3386"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee3668e-0175-1000-ba7b-23e0f7597479","parent":{"ref":"EID6ee365ac-0175-1000-6b01-060f462a3386"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee3668e-0175-1000-032c-19578fb32839","parent":{"ref":"EID6ee365ac-0175-1000-6b01-060f462a3386"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee3668e-0175-1000-b924-19aa2e90ba59","parent":{"ref":"EID6ee365ac-0175-1000-6b01-060f462a3386"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee3668e-0175-1000-39b1-0a3b5aee2b0a","parent":{"ref":"EID6ee365ac-0175-1000-6b01-060f462a3386"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea186e04-136c-48d3-8062-7ad0af94801c"},{"ref":"EIDc4b957cc-d7e2-4095-b58a-af8bd12d383d"},{"ref":"EID0187e95c-4c22-454f-b381-3ad4225c4a86"}]},"parent":{"ref":"EID6ee365ab-0175-1000-a14c-2e0e2acaf022"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:06:37Z","duration":115,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:06:37Z","duration":227,"status":"PASSED"},{"id":"EID6ee3668e-0175-1000-97b5-4bfba8fe33f8","testStepResults":{"TestStepResult":{"id":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee36835-0175-1000-8317-779d83dd9614","parent":{"ref":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36835-0175-1000-b78c-a9db976035c1","parent":{"ref":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36835-0175-1000-c28e-53e8e499ab30","parent":{"ref":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36835-0175-1000-27ab-4474e120f321","parent":{"ref":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36835-0175-1000-ed47-81ae2378e2a7","parent":{"ref":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36835-0175-1000-3523-6124e402d4b6","parent":{"ref":"EID6ee3668e-0175-1000-2082-fd2d10ebd70a"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID61657a0f-6517-4844-8fc4-e710e9a12cb6"},{"ref":"EIDf0c0556d-eee7-47c4-913c-cdb90948fbe4"},{"ref":"EID80f3600a-49f2-401d-b87f-5f41729d0e45"}]},"parent":{"ref":"EID6ee3668e-0175-1000-97b5-4bfba8fe33f8"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:06:38Z","duration":302,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:06:38Z","duration":424,"status":"PASSED"},{"id":"EID6ee36836-0175-1000-8eaf-04568d9b3d04","testStepResults":{"TestStepResult":{"id":"EID6ee36836-0175-1000-b082-0bdbc4baf01b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee36945-0175-1000-f72f-a94c2bfa2990","parent":{"ref":"EID6ee36836-0175-1000-b082-0bdbc4baf01b"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36946-0175-1000-af11-18529bf854af","parent":{"ref":"EID6ee36836-0175-1000-b082-0bdbc4baf01b"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36946-0175-1000-c088-0196cf10292b","parent":{"ref":"EID6ee36836-0175-1000-b082-0bdbc4baf01b"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee36946-0175-1000-10f1-ee4fea021c89","parent":{"ref":"EID6ee36836-0175-1000-b082-0bdbc4baf01b"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:06:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID893ff786-37e2-4ceb-a710-f653624477cd"},{"ref":"EID3f17b153-310c-4787-bb9c-2348f63a3469"},{"ref":"EID73dd563c-4555-4d14-ade7-3f86e6a3ed4b"}]},"parent":{"ref":"EID6ee36836-0175-1000-8eaf-04568d9b3d04"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:06:38Z","duration":176,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:06:38Z","duration":272,"status":"PASSED"},{"id":"EID6ee36946-0175-1000-4442-d1c992d74a5f","testStepResults":{"TestStepResult":[{"id":"EID6ee36946-0175-1000-1262-5628427118a8","attachments":{"attachment":[{"ref":"EID059d87e1-a260-407d-b63b-e4b5f3560aa5"},{"ref":"EID377f4e72-4fcc-471b-ad18-5a04162ba424"},{"ref":"EID0d4545d9-0790-41f1-b1af-488db7ffa931"},{"ref":"EID446de59f-bf5d-45ea-875e-1253e312ffb9"}]},"parent":{"ref":"EID6ee36946-0175-1000-4442-d1c992d74a5f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:06:38Z","duration":349,"status":"PASSED"},{"id":"EID6ee36ad1-0175-1000-626c-1c1eb22ad2b2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee36d20-0175-1000-fbe3-09855f5b8c6f","parent":{"ref":"EID6ee36ad1-0175-1000-626c-1c1eb22ad2b2"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:06:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee36d20-0175-1000-5c8a-28e0f489a93b","parent":{"ref":"EID6ee36ad1-0175-1000-626c-1c1eb22ad2b2"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:06:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee36d20-0175-1000-2230-0c68c5bcac4f","parent":{"ref":"EID6ee36ad1-0175-1000-626c-1c1eb22ad2b2"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:06:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee36d20-0175-1000-b774-310b3afc5677","parent":{"ref":"EID6ee36ad1-0175-1000-626c-1c1eb22ad2b2"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:06:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6cd5d412-f5cc-4515-b1ef-736c1c70ea66"},{"ref":"EID0e31e3e7-2ae7-459f-aff1-5ac03ba4e43f"},{"ref":"EID6ede91e5-3a43-4678-aeb8-2af2ec3d2ab3"}]},"parent":{"ref":"EID6ee36946-0175-1000-4442-d1c992d74a5f"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:06:39Z","duration":505,"status":"PASSED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:06:38Z","duration":993,"status":"PASSED"},{"id":"EID6ee36d28-0175-1000-3777-12718b48d3c5","testStepResults":{"TestStepResult":{"id":"EID6ee36d28-0175-1000-7416-8f2db9baad5c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee36f2c-0175-1000-e338-745eeb7aa687","parent":{"ref":"EID6ee36d28-0175-1000-7416-8f2db9baad5c"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36f2c-0175-1000-05ce-9a96a15a71af","parent":{"ref":"EID6ee36d28-0175-1000-7416-8f2db9baad5c"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36f2c-0175-1000-e203-79d1edb490f9","parent":{"ref":"EID6ee36d28-0175-1000-7416-8f2db9baad5c"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36f2c-0175-1000-2b06-90b04d118f92","parent":{"ref":"EID6ee36d28-0175-1000-7416-8f2db9baad5c"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd4ec2a66-a5d2-40b0-899e-75c060f8b5eb"},{"ref":"EID9d8a94a7-f07e-4c11-8d21-f9c2f7786a65"},{"ref":"EIDc6f836b6-0f0c-41e7-92ac-8b23d4ff58c0"}]},"parent":{"ref":"EID6ee36d28-0175-1000-3777-12718b48d3c5"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:06:39Z","duration":365,"status":"PASSED"}},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:06:39Z","duration":516,"status":"PASSED"},{"id":"EID6ee36f2d-0175-1000-ca06-fb56dc155be6","testStepResults":{"TestStepResult":[{"id":"EID6ee36f2d-0175-1000-c45c-30a6412bb860","parent":{"ref":"EID6ee36f2d-0175-1000-ca06-fb56dc155be6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36f2d-0175-1000-797b-a0a41955c76c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee36fcd-0175-1000-6e22-ed4c367c78bd","parent":{"ref":"EID6ee36f2d-0175-1000-797b-a0a41955c76c"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36fcd-0175-1000-287d-3f219ef06136","parent":{"ref":"EID6ee36f2d-0175-1000-797b-a0a41955c76c"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36fcd-0175-1000-91bc-d93e4a941be8","parent":{"ref":"EID6ee36f2d-0175-1000-797b-a0a41955c76c"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee36fcd-0175-1000-dd3d-1cac233409f0","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee36f2d-0175-1000-797b-a0a41955c76c"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9783f740-b43a-42bf-9e0f-0d57eeed3ea2"},{"ref":"EID1c47cdb1-1686-4cd4-bda5-c41df92f9e98"},{"ref":"EIDa8887c85-e79a-49f3-9460-edf1589f1124"}]},"parent":{"ref":"EID6ee36f2d-0175-1000-ca06-fb56dc155be6"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:06:40Z","duration":40,"status":"FAILED"}]},"parent":{"ref":"EID6ee330ee-0175-1000-a03e-4c5ae2d91c76"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:06:40Z","duration":243,"status":"FAILED"}]},"parent":{"ref":"EID5c511005-9448-46df-88cc-056e216a47df"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:06:24Z","duration":16179,"status":"FAILED"},{"id":"EID6ee37021-0175-1000-de53-b148f20ef052","testCaseResults":{"TestCaseResult":[{"id":"EID6ee37021-0175-1000-5fcf-1a955bf4ddf7","testStepResults":{"TestStepResult":[{"id":"EID6ee37021-0175-1000-3d2d-a90a0fbbc174","parent":{"ref":"EID6ee37021-0175-1000-5fcf-1a955bf4ddf7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee37021-0175-1000-ce70-0cefbd967550","parent":{"ref":"EID6ee37021-0175-1000-5fcf-1a955bf4ddf7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:06:40Z","duration":365,"status":"PASSED"},{"id":"EID6ee37021-0175-1000-eb6f-ddd441cf9add","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee370cb-0175-1000-2c43-c20a6265aedc","parent":{"ref":"EID6ee37021-0175-1000-eb6f-ddd441cf9add"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee370cb-0175-1000-13da-93d70b2a288a","parent":{"ref":"EID6ee37021-0175-1000-eb6f-ddd441cf9add"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee370cb-0175-1000-076d-7e3ad2e77ac8","parent":{"ref":"EID6ee37021-0175-1000-eb6f-ddd441cf9add"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8346ab5b-d7b8-4371-a4b4-dcda179da0e7"},{"ref":"EID2ae61cb4-ef77-4cae-8c6c-70ef89eda5c8"},{"ref":"EID1447c337-53d5-4aa5-995c-0393365879f3"}]},"parent":{"ref":"EID6ee37021-0175-1000-5fcf-1a955bf4ddf7"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:06:40Z","duration":52,"status":"PASSED"},{"id":"EID6ee370cb-0175-1000-1d29-a17c8b0f4879","attachments":{"attachment":{"ref":"EID8519004e-f5d4-44d3-9595-fba11b60bf65"}},"parent":{"ref":"EID6ee37021-0175-1000-5fcf-1a955bf4ddf7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:06:40Z","duration":0,"status":"PASSED"},{"id":"EID6ee370d8-0175-1000-f84d-efde4825584a","parent":{"ref":"EID6ee37021-0175-1000-5fcf-1a955bf4ddf7"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:06:40Z","duration":15,"status":"PASSED"}]},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:06:40Z","duration":199,"status":"PASSED"},{"id":"EID6ee370e8-0175-1000-9785-ad175eefa180","testStepResults":{"TestStepResult":[{"id":"EID6ee370e8-0175-1000-dedd-df9cbc577a89","parent":{"ref":"EID6ee370e8-0175-1000-9785-ad175eefa180"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:06:40Z","duration":798,"status":"PASSED"},{"id":"EID6ee370f3-0175-1000-db19-20b88923535a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37229-0175-1000-84cd-20f0efd7c8dc","parent":{"ref":"EID6ee370f3-0175-1000-db19-20b88923535a"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37229-0175-1000-bda5-f8609a171402","parent":{"ref":"EID6ee370f3-0175-1000-db19-20b88923535a"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37229-0175-1000-8f81-86e81f482e37","parent":{"ref":"EID6ee370f3-0175-1000-db19-20b88923535a"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37229-0175-1000-6327-ce5e409d4e43","parent":{"ref":"EID6ee370f3-0175-1000-db19-20b88923535a"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37229-0175-1000-5c89-e128e789ebe1","parent":{"ref":"EID6ee370f3-0175-1000-db19-20b88923535a"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeafd8cbc-3d5b-4472-9968-57959c62cd8d"},{"ref":"EID90bb27c2-1779-4026-a546-9691b0700640"},{"ref":"EID60ceaf8a-0940-4ed1-9483-5e36697e698a"}]},"parent":{"ref":"EID6ee370e8-0175-1000-9785-ad175eefa180"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:06:40Z","duration":231,"status":"PASSED"}]},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:06:40Z","duration":321,"status":"PASSED"},{"id":"EID6ee3722a-0175-1000-d85f-c9ef071a1590","testStepResults":{"TestStepResult":[{"id":"EID6ee3722a-0175-1000-a9d5-453513cae36a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37294-0175-1000-83de-5428a75a0310","parent":{"ref":"EID6ee3722a-0175-1000-a9d5-453513cae36a"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37294-0175-1000-793f-27ef5cc90bdc","parent":{"ref":"EID6ee3722a-0175-1000-a9d5-453513cae36a"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37294-0175-1000-54f8-b71da3514ffd","parent":{"ref":"EID6ee3722a-0175-1000-a9d5-453513cae36a"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6511de26-f626-4dbc-b8fa-a5a7d4fbe769"},{"ref":"EID523e050a-5eb3-47c4-a170-7cf78cc125eb"},{"ref":"EIDb3747de5-162a-4ad3-a526-f69efa689fdc"}]},"parent":{"ref":"EID6ee3722a-0175-1000-d85f-c9ef071a1590"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:06:41Z","duration":40,"status":"PASSED"},{"id":"EID6ee37294-0175-1000-e905-0b5d75bb8630","attachments":{"attachment":{"ref":"EID4d37cc6a-4f36-4bed-8004-a98ba5601fbd"}},"parent":{"ref":"EID6ee3722a-0175-1000-d85f-c9ef071a1590"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:06:41Z","duration":1,"status":"PASSED"},{"id":"EID6ee372a2-0175-1000-1e57-0b3ae701c12e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37334-0175-1000-38c2-c4afd6540503","parent":{"ref":"EID6ee372a2-0175-1000-1e57-0b3ae701c12e"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37334-0175-1000-8da9-16f1249b37f1","parent":{"ref":"EID6ee372a2-0175-1000-1e57-0b3ae701c12e"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37334-0175-1000-a0de-9e8129427b89","parent":{"ref":"EID6ee372a2-0175-1000-1e57-0b3ae701c12e"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37334-0175-1000-69d7-049878d3fc1e","parent":{"ref":"EID6ee372a2-0175-1000-1e57-0b3ae701c12e"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37334-0175-1000-411e-db5cfed047c2","parent":{"ref":"EID6ee372a2-0175-1000-1e57-0b3ae701c12e"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID159153bb-7671-4106-a5eb-9dc224cf55ee"},{"ref":"EIDccf5a228-7a93-4ca7-b9de-bb67c7b59e1b"},{"ref":"EID09535642-27d8-4b4b-8720-ab0d7edb9440"}]},"parent":{"ref":"EID6ee3722a-0175-1000-d85f-c9ef071a1590"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:06:41Z","duration":50,"status":"PASSED"}]},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:06:41Z","duration":278,"status":"PASSED"},{"id":"EID6ee37340-0175-1000-06ed-128f1fb31368","testStepResults":{"TestStepResult":[{"id":"EID6ee37340-0175-1000-3eb6-5c82aac74bea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee373cd-0175-1000-714f-a1a69ad839f6","parent":{"ref":"EID6ee37340-0175-1000-3eb6-5c82aac74bea"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee373cd-0175-1000-3aae-70eb0f2cab35","parent":{"ref":"EID6ee37340-0175-1000-3eb6-5c82aac74bea"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee373cd-0175-1000-92b7-45c176f25031","parent":{"ref":"EID6ee37340-0175-1000-3eb6-5c82aac74bea"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee373cd-0175-1000-e370-108a799e1dbb","parent":{"ref":"EID6ee37340-0175-1000-3eb6-5c82aac74bea"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb927eb7-3f86-4c24-905e-b001976c7a1c"},{"ref":"EID22c027da-4104-42d7-82a9-2a19823b3ee0"},{"ref":"EIDe908d125-8159-4417-ba7e-ceca2d430e33"}]},"parent":{"ref":"EID6ee37340-0175-1000-06ed-128f1fb31368"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:06:41Z","duration":55,"status":"PASSED"},{"id":"EID6ee373ce-0175-1000-494a-bcb4c7ce51df","attachments":{"attachment":{"ref":"EIDd2d0981b-d245-4e40-8486-f30a34a20629"}},"parent":{"ref":"EID6ee37340-0175-1000-06ed-128f1fb31368"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee373d9-0175-1000-578f-07d3d29c0fb1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37455-0175-1000-fe26-ef74b6762a70","parent":{"ref":"EID6ee373d9-0175-1000-578f-07d3d29c0fb1"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37455-0175-1000-f11d-d781cbf9ffd9","parent":{"ref":"EID6ee373d9-0175-1000-578f-07d3d29c0fb1"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf81a9874-3cbb-461f-955a-164bbb561be4"},{"ref":"EIDac3ddf73-ce26-4157-beda-e735fa848498"}]},"parent":{"ref":"EID6ee37340-0175-1000-06ed-128f1fb31368"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:06:41Z","duration":120,"status":"PASSED"},{"id":"EID6ee37455-0175-1000-0b03-6171ec77fa98","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee374b0-0175-1000-77f9-4c94d151d13b","parent":{"ref":"EID6ee37455-0175-1000-0b03-6171ec77fa98"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee374b0-0175-1000-20a3-b23ce7e3a31d","parent":{"ref":"EID6ee37455-0175-1000-0b03-6171ec77fa98"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee374b0-0175-1000-82e7-149981ee0415","parent":{"ref":"EID6ee37455-0175-1000-0b03-6171ec77fa98"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee374b0-0175-1000-b7ad-15710e15a8f1","parent":{"ref":"EID6ee37455-0175-1000-0b03-6171ec77fa98"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55ae836f-ed3d-4da9-9a2f-04fec34fd837"},{"ref":"EID44b372a2-e512-494d-b71c-e513d3267ef2"},{"ref":"EIDaba7937c-b9c9-4959-957e-e01e73ac093d"}]},"parent":{"ref":"EID6ee37340-0175-1000-06ed-128f1fb31368"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:06:41Z","duration":33,"status":"PASSED"}]},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:06:41Z","duration":368,"status":"PASSED"},{"id":"EID6ee374b0-0175-1000-5b52-d22dea6a0a0f","testStepResults":{"TestStepResult":{"id":"EID6ee374b0-0175-1000-5d80-e4d0b543c683","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37510-0175-1000-2a29-75c47c8729b2","parent":{"ref":"EID6ee374b0-0175-1000-5d80-e4d0b543c683"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37510-0175-1000-c52b-b0abf730be51","parent":{"ref":"EID6ee374b0-0175-1000-5d80-e4d0b543c683"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee37510-0175-1000-b60a-dea488a7a51b","parent":{"ref":"EID6ee374b0-0175-1000-5d80-e4d0b543c683"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5dd8e505-bc37-463e-87b5-7b30589e351d"},{"ref":"EID07a20a26-a3eb-4e93-ab41-c4f6bcafb69d"},{"ref":"EID02515318-bcf2-4257-840c-a6886e052d7e"}]},"parent":{"ref":"EID6ee374b0-0175-1000-5b52-d22dea6a0a0f"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:06:41Z","duration":40,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:06:41Z","duration":96,"status":"PASSED"},{"id":"EID6ee3751c-0175-1000-eb8a-728967b242c1","testStepResults":{"TestStepResult":{"id":"EID6ee3751c-0175-1000-f806-0838554917eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee375c7-0175-1000-3bbd-c5ff490d0731","parent":{"ref":"EID6ee3751c-0175-1000-f806-0838554917eb"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee375c7-0175-1000-3494-4782a8f24081","parent":{"ref":"EID6ee3751c-0175-1000-f806-0838554917eb"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee375c7-0175-1000-801d-4be36bd84e4c","parent":{"ref":"EID6ee3751c-0175-1000-f806-0838554917eb"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:06:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID50cd1c36-8b85-4b1d-b2da-6120ae7931a2"},{"ref":"EIDf59f0bf5-d7a6-4e12-a6b8-67be85ca9a50"},{"ref":"EID00567e14-9296-46ae-8f3e-68c886b64d03"}]},"parent":{"ref":"EID6ee3751c-0175-1000-eb8a-728967b242c1"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:06:41Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:06:41Z","duration":171,"status":"PASSED"},{"id":"EID6ee375c7-0175-1000-cecc-5cf0f197a86b","testStepResults":{"TestStepResult":{"id":"EID6ee375c7-0175-1000-fa5b-9ba9015b899f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee377b4-0175-1000-6c0e-5e551cbde019","parent":{"ref":"EID6ee375c7-0175-1000-fa5b-9ba9015b899f"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee377b4-0175-1000-4dad-67028b6dde6b","parent":{"ref":"EID6ee375c7-0175-1000-fa5b-9ba9015b899f"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee377b4-0175-1000-32f5-bd2d94d741d3","parent":{"ref":"EID6ee375c7-0175-1000-fa5b-9ba9015b899f"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee377b4-0175-1000-edcc-b3ce1d08a3bc","parent":{"ref":"EID6ee375c7-0175-1000-fa5b-9ba9015b899f"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee377b4-0175-1000-796e-ed2bcdc66fec","parent":{"ref":"EID6ee375c7-0175-1000-fa5b-9ba9015b899f"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2d091640-616e-45aa-915c-9ae09b911563"},{"ref":"EID5e945003-99cf-4ddb-a8f3-a170af96a8e5"},{"ref":"EID6e17ada7-b93d-48b6-9d54-ed4933b69fb4"}]},"parent":{"ref":"EID6ee375c7-0175-1000-cecc-5cf0f197a86b"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:06:41Z","duration":394,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:06:41Z","duration":493,"status":"PASSED"},{"id":"EID6ee377b5-0175-1000-9fdb-502df83b2dba","testStepResults":{"TestStepResult":{"id":"EID6ee377b5-0175-1000-57a2-6ef2e34e0237","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3784f-0175-1000-c4b5-e4f6823f7a3e","parent":{"ref":"EID6ee377b5-0175-1000-57a2-6ef2e34e0237"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee3784f-0175-1000-983f-431e4bc916ba","parent":{"ref":"EID6ee377b5-0175-1000-57a2-6ef2e34e0237"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee3784f-0175-1000-c17b-4a4d9a5492a8","parent":{"ref":"EID6ee377b5-0175-1000-57a2-6ef2e34e0237"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8f0d81ad-89cc-4e0e-a891-18d2c44ce446"},{"ref":"EIDdf0fb92d-c7bc-4ff8-8f5e-5d378a754b54"},{"ref":"EID6edb7766-c98e-4851-b9a9-ddfe83061d16"}]},"parent":{"ref":"EID6ee377b5-0175-1000-9fdb-502df83b2dba"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:06:42Z","duration":98,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:06:42Z","duration":155,"status":"PASSED"},{"id":"EID6ee37850-0175-1000-eecb-0984bf0fb9a1","testStepResults":{"TestStepResult":{"id":"EID6ee37850-0175-1000-f122-028ec4fcb6ef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37988-0175-1000-4a3e-50c298255875","parent":{"ref":"EID6ee37850-0175-1000-f122-028ec4fcb6ef"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee37988-0175-1000-432f-ff70d08aa5f9","parent":{"ref":"EID6ee37850-0175-1000-f122-028ec4fcb6ef"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee37988-0175-1000-5997-d9f2077eb48d","parent":{"ref":"EID6ee37850-0175-1000-f122-028ec4fcb6ef"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:06:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96e65777-0e16-4330-8ade-243607ae86e1"},{"ref":"EID9afd904d-7ee0-4ee9-8029-c774681c13ab"},{"ref":"EID7f5d2458-ff99-4595-9e87-15b9bf979803"}]},"parent":{"ref":"EID6ee37850-0175-1000-eecb-0984bf0fb9a1"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:06:42Z","duration":143,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:06:42Z","duration":312,"status":"PASSED"},{"id":"EID6ee37988-0175-1000-9647-1567aaca972c","testStepResults":{"TestStepResult":{"id":"EID6ee37988-0175-1000-c179-d4b7f69008c4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37c6b-0175-1000-2b7a-c149f748b944","parent":{"ref":"EID6ee37988-0175-1000-c179-d4b7f69008c4"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee37c6b-0175-1000-3190-57870b2b566b","parent":{"ref":"EID6ee37988-0175-1000-c179-d4b7f69008c4"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee37c6b-0175-1000-578a-24348b804a66","parent":{"ref":"EID6ee37988-0175-1000-c179-d4b7f69008c4"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee37c6b-0175-1000-1eb0-981e85420d81","parent":{"ref":"EID6ee37988-0175-1000-c179-d4b7f69008c4"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7208d7ec-e685-402e-ab37-5cb2955ae37e"},{"ref":"EID091a047f-daf5-4b08-a7a0-8045742d553b"},{"ref":"EIDb516f7e8-f8c5-4d19-9c25-fb2fbbff1971"}]},"parent":{"ref":"EID6ee37988-0175-1000-9647-1567aaca972c"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:06:42Z","duration":626,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:06:42Z","duration":739,"status":"PASSED"},{"id":"EID6ee37c6b-0175-1000-1363-59ae975b9d75","testStepResults":{"TestStepResult":{"id":"EID6ee37c6c-0175-1000-c794-a856eb1c8421","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37dde-0175-1000-dc03-8c0cce1ea0a5","parent":{"ref":"EID6ee37c6c-0175-1000-c794-a856eb1c8421"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37dde-0175-1000-be0f-bb1c824cf13b","parent":{"ref":"EID6ee37c6c-0175-1000-c794-a856eb1c8421"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37dde-0175-1000-b519-6b19135ab94d","parent":{"ref":"EID6ee37c6c-0175-1000-c794-a856eb1c8421"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37dde-0175-1000-21d3-35bb45cade86","parent":{"ref":"EID6ee37c6c-0175-1000-c794-a856eb1c8421"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa3fc46e1-e46e-4736-9d03-0330c873d5e5"},{"ref":"EID6603777b-8797-40ff-bbff-f3c6946967c7"},{"ref":"EID4b3dfd43-8dd9-4c4d-9f1a-b39fe0e303a7"}]},"parent":{"ref":"EID6ee37c6b-0175-1000-1363-59ae975b9d75"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:06:43Z","duration":291,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:06:43Z","duration":371,"status":"PASSED"},{"id":"EID6ee37dde-0175-1000-4005-e8eeca240900","testStepResults":{"TestStepResult":[{"id":"EID6ee37ddf-0175-1000-3c9d-115b6eff45b5","parent":{"ref":"EID6ee37dde-0175-1000-4005-e8eeca240900"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37ddf-0175-1000-fc31-612707ad6fdd","parent":{"ref":"EID6ee37dde-0175-1000-4005-e8eeca240900"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:06:44Z","duration":939,"status":"PASSED"},{"id":"EID6ee37ddf-0175-1000-362c-50cd3f58cce8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37ff0-0175-1000-9c69-8e3846f1e026","parent":{"ref":"EID6ee37ddf-0175-1000-362c-50cd3f58cce8"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37ff0-0175-1000-18e0-8e85b582d665","parent":{"ref":"EID6ee37ddf-0175-1000-362c-50cd3f58cce8"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37ff0-0175-1000-395e-f11b5666d70f","parent":{"ref":"EID6ee37ddf-0175-1000-362c-50cd3f58cce8"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37ff0-0175-1000-9ab5-e6eb63d15787","parent":{"ref":"EID6ee37ddf-0175-1000-362c-50cd3f58cce8"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID10289541-3e02-4747-ac20-611d22af55a7"},{"ref":"EIDfaf2545a-a919-4d53-82d2-951f25fbc2ba"},{"ref":"EIDe30d0c33-bbc7-413e-9223-37c428cc78ba"}]},"parent":{"ref":"EID6ee37dde-0175-1000-4005-e8eeca240900"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:06:44Z","duration":418,"status":"PASSED"},{"id":"EID6ee37ff0-0175-1000-419e-8f2dac1d0ed8","attachments":{"attachment":{"ref":"EIDc8d8598b-b0e1-4276-8b9a-36c9c292d997"}},"parent":{"ref":"EID6ee37dde-0175-1000-4005-e8eeca240900"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:06:44Z","duration":1,"status":"PASSED"},{"id":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3843c-0175-1000-b5cf-2a5b0571be1d","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-aa51-4639ef77d218","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-42c7-5778b6c3f86c","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-2db6-676bb4c6d9c6","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-8484-16f0aac70418","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-2784-f220c0725642","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-735d-d3a43143b94c","parent":{"ref":"EID6ee37ffb-0175-1000-d19e-c2d0101eaaf6"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID71189bcb-163b-4da7-b712-359182aea82e"},{"ref":"EIDbde98f15-5dfe-4572-b613-7e99a7077ac2"},{"ref":"EID058d70a3-e443-4bcf-9363-978b193a1430"}]},"parent":{"ref":"EID6ee37dde-0175-1000-4005-e8eeca240900"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:06:44Z","duration":984,"status":"PASSED"}]},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:06:44Z","duration":1630,"status":"PASSED"},{"id":"EID6ee3843c-0175-1000-e872-fb1532e42a69","testStepResults":{"TestStepResult":[{"id":"EID6ee3843d-0175-1000-1a53-ec0c1fa83e62","parent":{"ref":"EID6ee3843c-0175-1000-e872-fb1532e42a69"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee3843d-0175-1000-bc0c-87c994590e24","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38537-0175-1000-0825-29a0bbe6b575","parent":{"ref":"EID6ee3843d-0175-1000-bc0c-87c994590e24"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38537-0175-1000-55e6-6e88047d8824","parent":{"ref":"EID6ee3843d-0175-1000-bc0c-87c994590e24"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38537-0175-1000-e76d-ca7c9918af34","parent":{"ref":"EID6ee3843d-0175-1000-bc0c-87c994590e24"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38537-0175-1000-4fd0-b2a43b744ecd","parent":{"ref":"EID6ee3843d-0175-1000-bc0c-87c994590e24"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID286673b7-6fe2-473f-8709-b4da1e723878"},{"ref":"EID62ea4cb2-f0be-4211-984f-e0302103fc67"},{"ref":"EID9ea9866d-456c-4cce-84a6-52f55bc99625"}]},"parent":{"ref":"EID6ee3843c-0175-1000-e872-fb1532e42a69"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:06:45Z","duration":150,"status":"PASSED"},{"id":"EID6ee38544-0175-1000-a26a-01422e6676f9","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee38553-0175-1000-cd18-29f7c1c0c353","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38645-0175-1000-4015-261cd025dbc8","parent":{"ref":"EID6ee38553-0175-1000-cd18-29f7c1c0c353"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee38645-0175-1000-6a1f-349daf8ebea5","parent":{"ref":"EID6ee38553-0175-1000-cd18-29f7c1c0c353"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee38645-0175-1000-7337-d0bee315f8f0","parent":{"ref":"EID6ee38553-0175-1000-cd18-29f7c1c0c353"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID085d83c9-c06a-4cf7-aa71-6266985ae983"},{"ref":"EID32695e26-1061-493d-b088-053eb2cf2abd"},{"ref":"EIDaef7805c-4fa1-434b-a018-892dd64aaeec"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:45Z","duration":151,"status":"PASSED"},{"id":"EID6ee38646-0175-1000-7b64-fb978c15ee82","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3870b-0175-1000-39af-d115c1df5b16","parent":{"ref":"EID6ee38646-0175-1000-7b64-fb978c15ee82"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee3870b-0175-1000-a7fe-b528b0d18036","parent":{"ref":"EID6ee38646-0175-1000-7b64-fb978c15ee82"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee3870b-0175-1000-5cd3-5a906661f8de","parent":{"ref":"EID6ee38646-0175-1000-7b64-fb978c15ee82"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a403a2b-18eb-4d60-98d2-3c47db16a72d"},{"ref":"EID63b55ff2-0910-40e8-850c-9ec29cbca1e3"},{"ref":"EID29e14523-a6ed-430d-9280-c54d667e75dc"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:46Z","duration":146,"status":"PASSED"},{"id":"EID6ee3870c-0175-1000-b780-c50841fbcf20","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38780-0175-1000-a382-83191c929fdd","parent":{"ref":"EID6ee3870c-0175-1000-b780-c50841fbcf20"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee38780-0175-1000-bf81-a271e004e730","parent":{"ref":"EID6ee3870c-0175-1000-b780-c50841fbcf20"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee38780-0175-1000-0cb7-28745e53606b","parent":{"ref":"EID6ee3870c-0175-1000-b780-c50841fbcf20"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdee1e6fa-5867-43d4-ae53-7bbfecb7d647"},{"ref":"EID43c9f26e-1d57-4bbe-b1e7-7b6de60df328"},{"ref":"EID09b79a10-2915-4f4c-b58e-ade05e870662"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:46Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6ee3843c-0175-1000-e872-fb1532e42a69"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:06:45Z","duration":573,"status":"PASSED"},{"id":"EID6ee38781-0175-1000-b31b-e1050f2d4472","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38c54-0175-1000-e786-0f3b110e8c19","parent":{"ref":"EID6ee38781-0175-1000-b31b-e1050f2d4472"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38c54-0175-1000-1639-30e31ab382c3","parent":{"ref":"EID6ee38781-0175-1000-b31b-e1050f2d4472"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38c54-0175-1000-aad3-5cc17b5adc7d","parent":{"ref":"EID6ee38781-0175-1000-b31b-e1050f2d4472"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38c54-0175-1000-be35-6cd1b48c2983","parent":{"ref":"EID6ee38781-0175-1000-b31b-e1050f2d4472"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27ff2e02-4180-4acd-bdea-6bc9158a56fd"},{"ref":"EIDaf7d4e98-f066-435d-93b7-f82dfce34fd1"},{"ref":"EIDc7b62a0f-cf63-453c-a87f-b52205aeaf3b"}]},"parent":{"ref":"EID6ee3843c-0175-1000-e872-fb1532e42a69"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:06:46Z","duration":1158,"status":"PASSED"}]},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:06:45Z","duration":2072,"status":"PASSED"},{"id":"EID6ee38c54-0175-1000-e00c-33df21169471","testStepResults":{"TestStepResult":{"id":"EID6ee38c54-0175-1000-5d0a-e7feaca6e47d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38e13-0175-1000-8746-013947f097bb","parent":{"ref":"EID6ee38c54-0175-1000-5d0a-e7feaca6e47d"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:06:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee38e13-0175-1000-e2c7-03b79cfc5cb8","parent":{"ref":"EID6ee38c54-0175-1000-5d0a-e7feaca6e47d"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:06:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee38e13-0175-1000-ce0c-3f290c63f7ef","parent":{"ref":"EID6ee38c54-0175-1000-5d0a-e7feaca6e47d"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:06:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee38e13-0175-1000-9c44-0930b10608e9","parent":{"ref":"EID6ee38c54-0175-1000-5d0a-e7feaca6e47d"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:06:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID286b03c7-a09e-46a7-af4a-c6e28b9576dc"},{"ref":"EID78cdcfdc-cb3b-4ade-8de0-179ff957ccb5"},{"ref":"EIDe7295cb2-e011-4312-bf58-b2720e8858ec"}]},"parent":{"ref":"EID6ee38c54-0175-1000-e00c-33df21169471"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:06:47Z","duration":343,"status":"PASSED"}},"parent":{"ref":"EID6ee37021-0175-1000-de53-b148f20ef052"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:06:47Z","duration":448,"status":"PASSED"}]},"parent":{"ref":"EID5c511005-9448-46df-88cc-056e216a47df"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:06:40Z","duration":7667,"status":"PASSED"},{"id":"EID6ee38e14-0175-1000-659c-6f299b80fc01","testCaseResults":{"TestCaseResult":[{"id":"EID6ee38e14-0175-1000-bf00-5b841afe1128","testStepResults":{"TestStepResult":[{"id":"EID6ee38e1d-0175-1000-d79d-c578bc868d1c","parent":{"ref":"EID6ee38e14-0175-1000-bf00-5b841afe1128"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:06:48Z","duration":701,"status":"PASSED"},{"id":"EID6ee38e1e-0175-1000-02a8-45f9618d39e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee391e5-0175-1000-0b35-6af923e51cb1","parent":{"ref":"EID6ee38e1e-0175-1000-02a8-45f9618d39e7"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee391e5-0175-1000-0677-ea86e0780a1f","parent":{"ref":"EID6ee38e1e-0175-1000-02a8-45f9618d39e7"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee391e5-0175-1000-ef02-7955e14157d2","parent":{"ref":"EID6ee38e1e-0175-1000-02a8-45f9618d39e7"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1c5f0bfe-be34-4c02-9404-56d93f71c463"},{"ref":"EID32448f67-36d9-4305-a10a-02e37a068acf"},{"ref":"EIDb1750680-726c-42f5-b400-b8d06d22dbd5"}]},"parent":{"ref":"EID6ee38e14-0175-1000-bf00-5b841afe1128"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:06:48Z","duration":867,"status":"PASSED"},{"id":"EID6ee391e5-0175-1000-beef-149a523ba0cb","attachments":{"attachment":{"ref":"EID26ad6f2a-f0c4-4754-9d1e-34e2ebcab699"}},"parent":{"ref":"EID6ee38e14-0175-1000-bf00-5b841afe1128"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:06:48Z","duration":989,"status":"PASSED"},{"id":"EID6ee391f1-0175-1000-579b-156c8c9e3bbf","testStepResults":{"TestStepResult":[{"id":"EID6ee391f1-0175-1000-cfa8-f416c29ded99","parent":{"ref":"EID6ee391f1-0175-1000-579b-156c8c9e3bbf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":700,"status":"PASSED"},{"id":"EID6ee391f1-0175-1000-37d6-4beb393b5fc1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee392a2-0175-1000-91c6-049b9a3c40df","parent":{"ref":"EID6ee391f1-0175-1000-37d6-4beb393b5fc1"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee392a2-0175-1000-eec4-9433502d8836","parent":{"ref":"EID6ee391f1-0175-1000-37d6-4beb393b5fc1"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee392a2-0175-1000-2976-a50c745e66cb","parent":{"ref":"EID6ee391f1-0175-1000-37d6-4beb393b5fc1"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee392a2-0175-1000-28f3-1d854684d6ed","parent":{"ref":"EID6ee391f1-0175-1000-37d6-4beb393b5fc1"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27e053ec-771b-4d42-83a8-254eacd67427"},{"ref":"EIDd0360f44-542e-4d9f-abef-eeef5d910849"},{"ref":"EID862f316b-dcd1-4329-b942-9708dfbee2ab"}]},"parent":{"ref":"EID6ee391f1-0175-1000-579b-156c8c9e3bbf"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:06:49Z","duration":113,"status":"PASSED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:06:49Z","duration":184,"status":"PASSED"},{"id":"EID6ee392a9-0175-1000-c919-23498203c1de","testStepResults":{"TestStepResult":[{"id":"EID6ee392a9-0175-1000-cdb4-4a5c3c352cb3","parent":{"ref":"EID6ee392a9-0175-1000-c919-23498203c1de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":700,"status":"PASSED"},{"id":"EID6ee392a9-0175-1000-6e46-40437283189b","parent":{"ref":"EID6ee392a9-0175-1000-c919-23498203c1de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee392a9-0175-1000-57e9-fe16572a902d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39359-0175-1000-a153-70323a6d0a7b","parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39359-0175-1000-6274-a0d99a3cade8","parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39359-0175-1000-2a82-5b1ed7ec6023","parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39359-0175-1000-d533-fdb4d751c5ae","parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39359-0175-1000-2d89-61a80fdeaad8","parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39359-0175-1000-1eb5-5f059032991b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"FAILED"},{"id":"EID6ee39359-0175-1000-9499-2a037392e732","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee392a9-0175-1000-57e9-fe16572a902d"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDca09c82a-a225-43d2-b97e-b5b5e2d24b0d"},{"ref":"EID6ff0b6aa-7937-4863-a839-62e6e2a9122c"},{"ref":"EID6d3a5913-2261-41c5-89e5-67337eb496ef"}]},"parent":{"ref":"EID6ee392a9-0175-1000-c919-23498203c1de"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:06:49Z","duration":84,"status":"FAILED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:06:49Z","duration":185,"status":"FAILED"},{"id":"EID6ee39362-0175-1000-027c-8d1c57962f6f","testStepResults":{"TestStepResult":[{"id":"EID6ee39362-0175-1000-53bf-794223c3170f","parent":{"ref":"EID6ee39362-0175-1000-027c-8d1c57962f6f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":700,"status":"PASSED"},{"id":"EID6ee39362-0175-1000-628b-931cd50582a4","parent":{"ref":"EID6ee39362-0175-1000-027c-8d1c57962f6f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39363-0175-1000-84c7-dcd9453906ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3940c-0175-1000-d6a7-6e288fa469c3","parent":{"ref":"EID6ee39363-0175-1000-84c7-dcd9453906ca"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3940c-0175-1000-1ebe-e85cf5ddb1ad","parent":{"ref":"EID6ee39363-0175-1000-84c7-dcd9453906ca"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3940c-0175-1000-0b16-0abe46ee5472","parent":{"ref":"EID6ee39363-0175-1000-84c7-dcd9453906ca"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3940c-0175-1000-9345-0b8e78f5f9a3","parent":{"ref":"EID6ee39363-0175-1000-84c7-dcd9453906ca"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3940c-0175-1000-9574-345cea4aabd2","parent":{"ref":"EID6ee39363-0175-1000-84c7-dcd9453906ca"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3940c-0175-1000-a32a-4496ee46a632","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee39363-0175-1000-84c7-dcd9453906ca"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa571ffe9-4a7a-44f8-a440-a66ace998316"},{"ref":"EIDa839c6dc-5c7c-433c-a8df-d4d72cfca6bb"},{"ref":"EID0f18e577-7bd5-4ce2-b6d8-726c544b2b7d"}]},"parent":{"ref":"EID6ee39362-0175-1000-027c-8d1c57962f6f"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:06:49Z","duration":79,"status":"FAILED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:06:49Z","duration":176,"status":"FAILED"},{"id":"EID6ee39412-0175-1000-e708-5b6d4a45ec87","testStepResults":{"TestStepResult":[{"id":"EID6ee39412-0175-1000-839c-32931504dea7","parent":{"ref":"EID6ee39412-0175-1000-e708-5b6d4a45ec87"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":700,"status":"PASSED"},{"id":"EID6ee39412-0175-1000-1ae1-555fd579ce17","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDd930522b-69bb-4536-a1c8-474294e10207"},{"ref":"EIDb7f1c3f8-a002-42a4-9aba-c3d71679d9ca"},{"ref":"EID172036c2-6e00-4463-b833-bdcb1c3649e7"},{"ref":"EIDfb8f6ab3-6abe-4b9a-863e-c7de61fa1dad"},{"ref":"EID38441fb5-3f43-4387-9a31-e1fb4b081853"},{"ref":"EIDcb6022c4-b454-4ca9-a3f4-9a706b77d653"},{"ref":"EID09545a31-b591-4a0a-ba9c-82a54d3e04b9"},{"ref":"EIDcf0a11d2-aeb8-4406-bfdd-15f6ac4cf587"},{"ref":"EID42a3d740-5b51-48e3-b7ca-8d00a5a05359"},{"ref":"EID87a81e3d-f4f3-4b83-acbd-40b164be9607"},{"ref":"EID63c49f21-de49-4140-b21b-6fb23572b9de"},{"ref":"EID643d30b4-0e76-4485-8fd2-24361c561245"},{"ref":"EID65bf6f51-5530-409c-8a8f-15dcccede7c9"},{"ref":"EID64886265-8521-4ad9-96ac-b9d45f0c5a66"},{"ref":"EID39f1c16e-cf51-4bab-95cb-97cd8a5ee3f3"}]},"parent":{"ref":"EID6ee39412-0175-1000-e708-5b6d4a45ec87"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":992,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:06:49Z","duration":1258,"status":"SKIPPED"},{"id":"EID6ee398fc-0175-1000-f9c4-4c52a8179392","testStepResults":{"TestStepResult":[{"id":"EID6ee398fc-0175-1000-d15e-7b1419000b78","parent":{"ref":"EID6ee398fc-0175-1000-f9c4-4c52a8179392"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:06:51Z","duration":700,"status":"PASSED"},{"id":"EID6ee398fc-0175-1000-6c4c-3f5dd0818b74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3999c-0175-1000-fcb0-c97b25f0a0e3","parent":{"ref":"EID6ee398fc-0175-1000-6c4c-3f5dd0818b74"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee3999c-0175-1000-5d1a-bb37f41306b7","parent":{"ref":"EID6ee398fc-0175-1000-6c4c-3f5dd0818b74"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee3999c-0175-1000-38ba-e87d542592ee","parent":{"ref":"EID6ee398fc-0175-1000-6c4c-3f5dd0818b74"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee3999c-0175-1000-19fb-2ce6f4fd2edd","parent":{"ref":"EID6ee398fc-0175-1000-6c4c-3f5dd0818b74"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID03e82f26-014f-40e3-b54e-516880e0eda4"},{"ref":"EIDb86ca6ea-ebe0-4335-9fbf-dbeb3ab29809"},{"ref":"EID8313703d-47c8-4b46-b660-43cc87b60014"}]},"parent":{"ref":"EID6ee398fc-0175-1000-f9c4-4c52a8179392"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:06:51Z","duration":86,"status":"PASSED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:06:51Z","duration":160,"status":"PASSED"},{"id":"EID6ee3999c-0175-1000-eeb0-3c1c5b8b92d9","testStepResults":{"TestStepResult":[{"id":"EID6ee3999c-0175-1000-4d07-2eb269d0c4fc","parent":{"ref":"EID6ee3999c-0175-1000-eeb0-3c1c5b8b92d9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:06:51Z","duration":700,"status":"PASSED"},{"id":"EID6ee3999c-0175-1000-6831-63d939e81427","parent":{"ref":"EID6ee3999c-0175-1000-eeb0-3c1c5b8b92d9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee3999d-0175-1000-05d0-b02ac014c369","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39a48-0175-1000-08a6-cc567872a770","parent":{"ref":"EID6ee3999d-0175-1000-05d0-b02ac014c369"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a48-0175-1000-b6b8-1a6fe538e6b3","parent":{"ref":"EID6ee3999d-0175-1000-05d0-b02ac014c369"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a48-0175-1000-fc80-373bdc28ae75","parent":{"ref":"EID6ee3999d-0175-1000-05d0-b02ac014c369"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a48-0175-1000-d6c9-f4ad757351d3","parent":{"ref":"EID6ee3999d-0175-1000-05d0-b02ac014c369"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc6b2c78a-8669-483e-9a49-aa34807b511c"},{"ref":"EID451ba838-bc5d-4c80-81fd-2ffc366ffd1f"},{"ref":"EID4a86f088-a37c-4be4-9039-ffc36d3725b9"}]},"parent":{"ref":"EID6ee3999c-0175-1000-eeb0-3c1c5b8b92d9"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:06:51Z","duration":86,"status":"PASSED"},{"id":"EID6ee39a48-0175-1000-c70a-5d5e6a9fbd74","attachments":{"attachment":{"ref":"EID30f7de4d-22cb-4e41-92eb-39b0fc2a8508"}},"parent":{"ref":"EID6ee3999c-0175-1000-eeb0-3c1c5b8b92d9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a52-0175-1000-8433-cce47d57c1a1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39a56-0175-1000-8efa-0f1d948c3dbe","parent":{"ref":"EID6ee39a52-0175-1000-8433-cce47d57c1a1"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a56-0175-1000-ce18-68f034ea0388","parent":{"ref":"EID6ee39a52-0175-1000-8433-cce47d57c1a1"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a56-0175-1000-e1de-770ebc772586","parent":{"ref":"EID6ee39a52-0175-1000-8433-cce47d57c1a1"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9631a866-71bc-4a9f-9d93-9a03e5a84e91"},{"ref":"EIDa28ff422-3b54-4c3b-90dd-a0073d2e4b39"}]},"parent":{"ref":"EID6ee3999c-0175-1000-eeb0-3c1c5b8b92d9"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee38e14-0175-1000-659c-6f299b80fc01"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:06:51Z","duration":186,"status":"PASSED"}]},"parent":{"ref":"EID5c511005-9448-46df-88cc-056e216a47df"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:06:48Z","duration":3138,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EIDc7b62a0f-cf63-453c-a87f-b52205aeaf3b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID0d4545d9-0790-41f1-b1af-488db7ffa931","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID0d4545d9-0790-41f1-b1af-488db7ffa931"}},{"type":"GetParameter","id":"EIDe34471dd-8ebe-4ac9-bc57-dcf4ca9cb725","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDca09c82a-a225-43d2-b97e-b5b5e2d24b0d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDaba7937c-b9c9-4959-957e-e01e73ac093d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDd4ab3146-e1fe-48fa-a05f-9cb0cfab5d9d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc6f836b6-0f0c-41e7-92ac-8b23d4ff58c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4c90490e-5b20-444a-b669-89ede8e92490","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa876c99c-8830-4c05-857c-74531543135a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDa876c99c-8830-4c05-857c-74531543135a"}},{"type":"ServiceEndpoint","id":"EIDeafd8cbc-3d5b-4472-9968-57959c62cd8d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDa725eafc-755e-4e1c-ab92-0cb236da0a8b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDa725eafc-755e-4e1c-ab92-0cb236da0a8b"}},{"type":"GetParameter","id":"EID7f5d2458-ff99-4595-9e87-15b9bf979803","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID38441fb5-3f43-4387-9a31-e1fb4b081853","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID38441fb5-3f43-4387-9a31-e1fb4b081853"}},{"type":"ServiceEndpoint","id":"EID2d091640-616e-45aa-915c-9ae09b911563","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDe908d125-8159-4417-ba7e-ceca2d430e33","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID6511de26-f626-4dbc-b8fa-a5a7d4fbe769","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID8ffe661d-a3e5-46e4-90b4-0408208335cf","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID8ffe661d-a3e5-46e4-90b4-0408208335cf"}},{"type":"ServiceResponse","id":"EIDaf7d4e98-f066-435d-93b7-f82dfce34fd1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDaf7d4e98-f066-435d-93b7-f82dfce34fd1"}},{"type":"ServiceEndpoint","id":"EID286b03c7-a09e-46a7-af4a-c6e28b9576dc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID4a86f088-a37c-4be4-9039-ffc36d3725b9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID32448f67-36d9-4305-a10a-02e37a068acf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID32448f67-36d9-4305-a10a-02e37a068acf"}},{"type":"Message","id":"EID172036c2-6e00-4463-b833-bdcb1c3649e7","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID172036c2-6e00-4463-b833-bdcb1c3649e7"}},{"type":"GetParameter","id":"EID1b3741b5-2fb0-4255-a731-562a43661d38","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb9892162-2331-4727-8858-0a8138a2c6fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID80f3600a-49f2-401d-b87f-5f41729d0e45","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID27ff2e02-4180-4acd-bdea-6bc9158a56fd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID4dbd04a7-d6fb-4d8e-ae18-2a1e378ca32b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8313703d-47c8-4b46-b660-43cc87b60014","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID2c997aa1-609c-4ac8-8a61-38422b7612c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID00567e14-9296-46ae-8f3e-68c886b64d03","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID3e6150f9-81eb-4f6d-b7d0-3f7e5e63f841","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID3e6150f9-81eb-4f6d-b7d0-3f7e5e63f841"}},{"type":"ServiceResponse","id":"EID869a52ee-2ca1-4167-8d39-698550a82d54","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID869a52ee-2ca1-4167-8d39-698550a82d54"}},{"type":"ServiceEndpoint","id":"EID085d83c9-c06a-4cf7-aa71-6266985ae983","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID30f7de4d-22cb-4e41-92eb-39b0fc2a8508","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID30f7de4d-22cb-4e41-92eb-39b0fc2a8508"}},{"type":"Message","id":"EID82f3fcd0-d243-4d19-b670-b738f54562d9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID82f3fcd0-d243-4d19-b670-b738f54562d9"}},{"type":"Message","id":"EID64886265-8521-4ad9-96ac-b9d45f0c5a66","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID64886265-8521-4ad9-96ac-b9d45f0c5a66"}},{"type":"ServiceResponse","id":"EIDdf0fb92d-c7bc-4ff8-8f5e-5d378a754b54","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDdf0fb92d-c7bc-4ff8-8f5e-5d378a754b54"}},{"type":"Message","id":"EIDd930522b-69bb-4536-a1c8-474294e10207","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDd930522b-69bb-4536-a1c8-474294e10207"}},{"type":"ServiceEndpoint","id":"EID50cd1c36-8b85-4b1d-b2da-6120ae7931a2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDc4b957cc-d7e2-4095-b58a-af8bd12d383d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDc4b957cc-d7e2-4095-b58a-af8bd12d383d"}},{"type":"GetParameter","id":"EID6e17ada7-b93d-48b6-9d54-ed4933b69fb4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID446de59f-bf5d-45ea-875e-1253e312ffb9","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID446de59f-bf5d-45ea-875e-1253e312ffb9"}},{"type":"ServiceEndpoint","id":"EID8346ab5b-d7b8-4371-a4b4-dcda179da0e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDbde98f15-5dfe-4572-b613-7e99a7077ac2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDbde98f15-5dfe-4572-b613-7e99a7077ac2"}},{"type":"ServiceEndpoint","id":"EID96e65777-0e16-4330-8ade-243607ae86e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDca36f6f1-0f0c-47ba-8c01-d2e894ac3f4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID62ea4cb2-f0be-4211-984f-e0302103fc67","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID62ea4cb2-f0be-4211-984f-e0302103fc67"}},{"type":"GetParameter","id":"EIDcff41a73-cd9f-4498-83ab-fe14169d3fac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfaf2545a-a919-4d53-82d2-951f25fbc2ba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDfaf2545a-a919-4d53-82d2-951f25fbc2ba"}},{"type":"Message","id":"EID8519004e-f5d4-44d3-9595-fba11b60bf65","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID8519004e-f5d4-44d3-9595-fba11b60bf65"}},{"type":"ServiceEndpoint","id":"EIDa571ffe9-4a7a-44f8-a440-a66ace998316","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID2ae61cb4-ef77-4cae-8c6c-70ef89eda5c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID2ae61cb4-ef77-4cae-8c6c-70ef89eda5c8"}},{"type":"Message","id":"EID6069f1b2-7762-4d13-9e8c-dfcb7f95051b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID6069f1b2-7762-4d13-9e8c-dfcb7f95051b"}},{"type":"GetParameter","id":"EIDb516f7e8-f8c5-4d19-9c25-fb2fbbff1971","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDdee1e6fa-5867-43d4-ae53-7bbfecb7d647","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID52beb9ea-a4f2-4e9c-a8d4-476449416485","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID52beb9ea-a4f2-4e9c-a8d4-476449416485"}},{"type":"Message","id":"EIDc8d8598b-b0e1-4276-8b9a-36c9c292d997","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDc8d8598b-b0e1-4276-8b9a-36c9c292d997"}},{"type":"GetParameter","id":"EIDe7295cb2-e011-4312-bf58-b2720e8858ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID377f4e72-4fcc-471b-ad18-5a04162ba424","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID377f4e72-4fcc-471b-ad18-5a04162ba424"}},{"type":"Message","id":"EID93a49d22-31ff-4e3e-bb50-4c23ae2e04df","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID93a49d22-31ff-4e3e-bb50-4c23ae2e04df"}},{"type":"Message","id":"EID059d87e1-a260-407d-b63b-e4b5f3560aa5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID059d87e1-a260-407d-b63b-e4b5f3560aa5"}},{"type":"ServiceEndpoint","id":"EID61657a0f-6517-4844-8fc4-e710e9a12cb6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5a5d3937-eb37-4921-a310-fe418b3ef4ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDeee302a2-cdbd-4856-8e11-751af77c6d40","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDeee302a2-cdbd-4856-8e11-751af77c6d40"}},{"type":"GetParameter","id":"EIDb3747de5-162a-4ad3-a526-f69efa689fdc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID09545a31-b591-4a0a-ba9c-82a54d3e04b9","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID09545a31-b591-4a0a-ba9c-82a54d3e04b9"}},{"type":"LogFile","id":"EIDc83dfbcf-0245-4be5-84ca-9adbbcb3d0ec","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDc83dfbcf-0245-4be5-84ca-9adbbcb3d0ec"}},{"type":"ServiceResponse","id":"EID44b372a2-e512-494d-b71c-e513d3267ef2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID44b372a2-e512-494d-b71c-e513d3267ef2"}},{"type":"GetParameter","id":"EID6d3a5913-2261-41c5-89e5-67337eb496ef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDeb54781e-8cd0-4931-908d-a2385d8e32dd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID27e053ec-771b-4d42-83a8-254eacd67427","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID39f1c16e-cf51-4bab-95cb-97cd8a5ee3f3","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID39f1c16e-cf51-4bab-95cb-97cd8a5ee3f3"}},{"type":"ServiceResponse","id":"EIDbca254cb-5f21-4fa1-a56b-4c5c483d817a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDbca254cb-5f21-4fa1-a56b-4c5c483d817a"}},{"type":"ServiceEndpoint","id":"EIDea00d514-cb2a-4b8a-a5e7-04f1d2e7096c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1c47cdb1-1686-4cd4-bda5-c41df92f9e98","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID1c47cdb1-1686-4cd4-bda5-c41df92f9e98"}},{"type":"GetParameter","id":"EID09535642-27d8-4b4b-8720-ab0d7edb9440","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID643d30b4-0e76-4485-8fd2-24361c561245","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID643d30b4-0e76-4485-8fd2-24361c561245"}},{"type":"Message","id":"EIDb64ef53e-f9d9-469a-80ef-adedeeb65db9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDb64ef53e-f9d9-469a-80ef-adedeeb65db9"}},{"type":"Message","id":"EID26ad6f2a-f0c4-4754-9d1e-34e2ebcab699","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID26ad6f2a-f0c4-4754-9d1e-34e2ebcab699"}},{"type":"GetParameter","id":"EIDa28ff422-3b54-4c3b-90dd-a0073d2e4b39","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EIDd43d1d95-0a86-4045-8a80-e96c1fdd2f80","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9d8a94a7-f07e-4c11-8d21-f9c2f7786a65","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID9d8a94a7-f07e-4c11-8d21-f9c2f7786a65"}},{"type":"ServiceResponse","id":"EID523e050a-5eb3-47c4-a170-7cf78cc125eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID523e050a-5eb3-47c4-a170-7cf78cc125eb"}},{"type":"GetParameter","id":"EIDa8887c85-e79a-49f3-9460-edf1589f1124","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb3410385-9b63-4002-b859-f0a113912cb2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID29e14523-a6ed-430d-9280-c54d667e75dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EIDa309b385-559a-414c-b836-b4cc03c94d24","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDa309b385-559a-414c-b836-b4cc03c94d24"}},{"type":"GetParameter","id":"EID02515318-bcf2-4257-840c-a6886e052d7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDf59f0bf5-d7a6-4e12-a6b8-67be85ca9a50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDf59f0bf5-d7a6-4e12-a6b8-67be85ca9a50"}},{"type":"ServiceResponse","id":"EIDf0c0556d-eee7-47c4-913c-cdb90948fbe4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDf0c0556d-eee7-47c4-913c-cdb90948fbe4"}},{"type":"ServiceEndpoint","id":"EID8f0d81ad-89cc-4e0e-a891-18d2c44ce446","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID42a3d740-5b51-48e3-b7ca-8d00a5a05359","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID42a3d740-5b51-48e3-b7ca-8d00a5a05359"}},{"type":"Message","id":"EID675c33d9-6bd5-4734-8d5c-c325dbd5ef42","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID675c33d9-6bd5-4734-8d5c-c325dbd5ef42"}},{"type":"ServiceResponse","id":"EIDa839c6dc-5c7c-433c-a8df-d4d72cfca6bb","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDa839c6dc-5c7c-433c-a8df-d4d72cfca6bb"}},{"type":"ServiceEndpoint","id":"EIDdb927eb7-3f86-4c24-905e-b001976c7a1c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID9afd904d-7ee0-4ee9-8029-c774681c13ab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID9afd904d-7ee0-4ee9-8029-c774681c13ab"}},{"type":"Message","id":"EID06ebc2a6-f100-47ae-a07c-3bb7445dd5fc","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID06ebc2a6-f100-47ae-a07c-3bb7445dd5fc"}},{"type":"GetParameter","id":"EID9ea9866d-456c-4cce-84a6-52f55bc99625","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID32695e26-1061-493d-b088-053eb2cf2abd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID32695e26-1061-493d-b088-053eb2cf2abd"}},{"type":"Message","id":"EIDa13d4bfb-ca96-4424-af54-8289b8da387a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDa13d4bfb-ca96-4424-af54-8289b8da387a"}},{"type":"Message","id":"EID87a81e3d-f4f3-4b83-acbd-40b164be9607","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID87a81e3d-f4f3-4b83-acbd-40b164be9607"}},{"type":"ServiceEndpoint","id":"EID00003ddf-ca2a-4001-8556-b4bac9983944","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb86ca6ea-ebe0-4335-9fbf-dbeb3ab29809","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDb86ca6ea-ebe0-4335-9fbf-dbeb3ab29809"}},{"type":"ServiceEndpoint","id":"EIDd4ec2a66-a5d2-40b0-899e-75c060f8b5eb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb1750680-726c-42f5-b400-b8d06d22dbd5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDcd7be1ca-a302-4aac-92f1-82b262852492","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDcd7be1ca-a302-4aac-92f1-82b262852492"}},{"type":"ServiceResponse","id":"EID4ca3e2e6-4e06-4cdb-a49a-f6459e4b8412","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID4ca3e2e6-4e06-4cdb-a49a-f6459e4b8412"}},{"type":"ServiceResponse","id":"EID3f17b153-310c-4787-bb9c-2348f63a3469","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID3f17b153-310c-4787-bb9c-2348f63a3469"}},{"type":"ServiceEndpoint","id":"EIDf81a9874-3cbb-461f-955a-164bbb561be4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"ServiceResponse","id":"EIDd0360f44-542e-4d9f-abef-eeef5d910849","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDd0360f44-542e-4d9f-abef-eeef5d910849"}},{"type":"GetParameter","id":"EID60ceaf8a-0940-4ed1-9483-5e36697e698a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID6603777b-8797-40ff-bbff-f3c6946967c7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID6603777b-8797-40ff-bbff-f3c6946967c7"}},{"type":"ServiceEndpoint","id":"EID2a403a2b-18eb-4d60-98d2-3c47db16a72d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID7208d7ec-e685-402e-ab37-5cb2955ae37e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID077443fb-6fcb-4cf5-91cf-a1c684bf86c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID077443fb-6fcb-4cf5-91cf-a1c684bf86c8"}},{"type":"GetParameter","id":"EID0f18e577-7bd5-4ce2-b6d8-726c544b2b7d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID71189bcb-163b-4da7-b712-359182aea82e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDfb8f6ab3-6abe-4b9a-863e-c7de61fa1dad","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDfb8f6ab3-6abe-4b9a-863e-c7de61fa1dad"}},{"type":"ServiceEndpoint","id":"EID1c5f0bfe-be34-4c02-9404-56d93f71c463","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID058d70a3-e443-4bcf-9363-978b193a1430","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID22c027da-4104-42d7-82a9-2a19823b3ee0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID22c027da-4104-42d7-82a9-2a19823b3ee0"}},{"type":"GetParameter","id":"EID1efc96dd-57bc-499f-acfc-fae0d884eecb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc98ea2be-3fcf-4717-b999-827346fad906","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID65bf6f51-5530-409c-8a8f-15dcccede7c9","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID65bf6f51-5530-409c-8a8f-15dcccede7c9"}},{"type":"ServiceResponse","id":"EIDfcfcf6d4-5e4d-4278-a008-ba7e38a2e818","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDfcfcf6d4-5e4d-4278-a008-ba7e38a2e818"}},{"type":"ServiceResponse","id":"EID07a20a26-a3eb-4e93-ab41-c4f6bcafb69d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID07a20a26-a3eb-4e93-ab41-c4f6bcafb69d"}},{"type":"ServiceEndpoint","id":"EID75b91d75-7503-48e2-aac5-a8eb901e3ccb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDac3ddf73-ce26-4157-beda-e735fa848498","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID054be42a-aac6-45e2-907a-19d62a6b0c60","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6ff0b6aa-7937-4863-a839-62e6e2a9122c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID6ff0b6aa-7937-4863-a839-62e6e2a9122c"}},{"type":"ServiceEndpoint","id":"EIDa8f87076-135b-4a10-ba4b-769164059699","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3ab485e5-fe4d-4f69-bb43-e03d683c731a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa3fc46e1-e46e-4736-9d03-0330c873d5e5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDb7f1c3f8-a002-42a4-9aba-c3d71679d9ca","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDb7f1c3f8-a002-42a4-9aba-c3d71679d9ca"}},{"type":"ServiceEndpoint","id":"EID19a9bac5-0c67-435b-a8b8-cf14d311d394","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf9f7471d-5f64-424a-bf47-c53d92ff3278","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDf9f7471d-5f64-424a-bf47-c53d92ff3278"}},{"type":"ServiceEndpoint","id":"EID9783f740-b43a-42bf-9e0f-0d57eeed3ea2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDaef7805c-4fa1-434b-a018-892dd64aaeec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDd2d0981b-d245-4e40-8486-f30a34a20629","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDd2d0981b-d245-4e40-8486-f30a34a20629"}},{"type":"Message","id":"EID49e65f73-c055-4484-9e9f-38bd901f0cfa","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID49e65f73-c055-4484-9e9f-38bd901f0cfa"}},{"type":"Message","id":"EID2828a0ab-43ed-4ef9-880a-162f7e13c2fa","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID2828a0ab-43ed-4ef9-880a-162f7e13c2fa"}},{"type":"GetParameter","id":"EID6edb7766-c98e-4851-b9a9-ddfe83061d16","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID63c49f21-de49-4140-b21b-6fb23572b9de","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID63c49f21-de49-4140-b21b-6fb23572b9de"}},{"type":"GetParameter","id":"EID862f316b-dcd1-4329-b942-9708dfbee2ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID893ff786-37e2-4ceb-a710-f653624477cd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID32ad086d-f626-4baf-801a-8d4ad69abf50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID32ad086d-f626-4baf-801a-8d4ad69abf50"}},{"type":"ServiceResponse","id":"EID78cdcfdc-cb3b-4ade-8de0-179ff957ccb5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID78cdcfdc-cb3b-4ade-8de0-179ff957ccb5"}},{"type":"Message","id":"EID97936430-2206-4362-b5ae-cf53d4ffc4b4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID97936430-2206-4362-b5ae-cf53d4ffc4b4"}},{"type":"ServiceEndpoint","id":"EIDea186e04-136c-48d3-8062-7ad0af94801c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc748d4a7-4ea2-49f4-aca0-4bace3bb0065","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDc748d4a7-4ea2-49f4-aca0-4bace3bb0065"}},{"type":"Message","id":"EID5ff7ce8e-0882-42aa-924d-9d39380e1712","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID5ff7ce8e-0882-42aa-924d-9d39380e1712"}},{"type":"ServiceResponse","id":"EID451ba838-bc5d-4c80-81fd-2ffc366ffd1f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID451ba838-bc5d-4c80-81fd-2ffc366ffd1f"}},{"type":"ServiceEndpoint","id":"EID286673b7-6fe2-473f-8709-b4da1e723878","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID6a841413-6475-47d9-a712-91c617d873c6","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID6a841413-6475-47d9-a712-91c617d873c6"}},{"type":"GetParameter","id":"EID0187e95c-4c22-454f-b381-3ad4225c4a86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID6634b03b-fe9d-46e4-8f4c-23afc8263cc0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID6634b03b-fe9d-46e4-8f4c-23afc8263cc0"}},{"type":"ServiceEndpoint","id":"EID55ae836f-ed3d-4da9-9a2f-04fec34fd837","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID2bb43f8d-c6d7-43aa-8a06-704f576da636","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID2bb43f8d-c6d7-43aa-8a06-704f576da636"}},{"type":"Message","id":"EIDcf0a11d2-aeb8-4406-bfdd-15f6ac4cf587","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDcf0a11d2-aeb8-4406-bfdd-15f6ac4cf587"}},{"type":"GetParameter","id":"EIDe30d0c33-bbc7-413e-9223-37c428cc78ba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6cd5d412-f5cc-4515-b1ef-736c1c70ea66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDccf4c8fd-80d4-4e2c-b52f-05a8a137dcd7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4b3dfd43-8dd9-4c4d-9f1a-b39fe0e303a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID63b55ff2-0910-40e8-850c-9ec29cbca1e3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID63b55ff2-0910-40e8-850c-9ec29cbca1e3"}},{"type":"Message","id":"EIDfd101b3d-090b-4951-b6d3-47433a70ad77","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDfd101b3d-090b-4951-b6d3-47433a70ad77"}},{"type":"Message","id":"EIDcb6022c4-b454-4ca9-a3f4-9a706b77d653","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDcb6022c4-b454-4ca9-a3f4-9a706b77d653"}},{"type":"Message","id":"EID6a6ffd8e-f3ae-4e73-b71b-9a0a67a03095","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID6a6ffd8e-f3ae-4e73-b71b-9a0a67a03095"}},{"type":"Message","id":"EIDae8e8216-82c2-4a70-bcfe-4490c7b08bc1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDae8e8216-82c2-4a70-bcfe-4490c7b08bc1"}},{"type":"ServiceEndpoint","id":"EID5dd8e505-bc37-463e-87b5-7b30589e351d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID5e945003-99cf-4ddb-a8f3-a170af96a8e5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID5e945003-99cf-4ddb-a8f3-a170af96a8e5"}},{"type":"ServiceEndpoint","id":"EID9631a866-71bc-4a9f-9d93-9a03e5a84e91","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDe43cd953-f878-4cf9-9df8-fc215feb8398","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDe43cd953-f878-4cf9-9df8-fc215feb8398"}},{"type":"ServiceResponse","id":"EID90bb27c2-1779-4026-a546-9691b0700640","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID90bb27c2-1779-4026-a546-9691b0700640"}},{"type":"ServiceEndpoint","id":"EID5c4be46c-f5fd-4057-9a6b-e53343b9fbd4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDccf5a228-7a93-4ca7-b9de-bb67c7b59e1b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDccf5a228-7a93-4ca7-b9de-bb67c7b59e1b"}},{"type":"ServiceEndpoint","id":"EID159153bb-7671-4106-a5eb-9dc224cf55ee","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID03e82f26-014f-40e3-b54e-516880e0eda4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDfa4208d8-feb3-485d-89bb-e4e4be4e7bf7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa5f93d65-c2c2-4157-a275-e5bebfb1e337","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDa5f93d65-c2c2-4157-a275-e5bebfb1e337"}},{"type":"GetParameter","id":"EID8da56b87-9c13-4356-8ed0-f1f4fb6817d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID43c9f26e-1d57-4bbe-b1e7-7b6de60df328","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID43c9f26e-1d57-4bbe-b1e7-7b6de60df328"}},{"type":"Message","id":"EID4d37cc6a-4f36-4bed-8004-a98ba5601fbd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID4d37cc6a-4f36-4bed-8004-a98ba5601fbd"}},{"type":"ServiceEndpoint","id":"EIDc6b2c78a-8669-483e-9a49-aa34807b511c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID9e4efc8f-87a8-4ff1-aec4-7e643ae1702c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID09b79a10-2915-4f4c-b58e-ade05e870662","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID73dd563c-4555-4d14-ade7-3f86e6a3ed4b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID091a047f-daf5-4b08-a7a0-8045742d553b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID091a047f-daf5-4b08-a7a0-8045742d553b"}},{"type":"ServiceResponse","id":"EID0ec6d6ec-e429-4f00-a323-2f8335e0ac05","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID0ec6d6ec-e429-4f00-a323-2f8335e0ac05"}},{"type":"ServiceEndpoint","id":"EID10289541-3e02-4747-ac20-611d22af55a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID489acee5-e337-4034-9359-f121555902e5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDad76908f-c66b-441c-9ef9-cef6bc91eddf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID003bffb3-4310-43bf-9ed3-17fc09f95302","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID003bffb3-4310-43bf-9ed3-17fc09f95302"}},{"type":"ServiceResponse","id":"EID0906a1fe-d998-4385-845e-580093815e2e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID0906a1fe-d998-4385-845e-580093815e2e"}},{"type":"GetParameter","id":"EID6ede91e5-3a43-4678-aeb8-2af2ec3d2ab3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2d0cc445-3f9c-4279-8e02-940908f70948","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID2d0cc445-3f9c-4279-8e02-940908f70948"}},{"type":"Message","id":"EIDb4abc405-c28a-4616-afd4-ea9fea261082","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDb4abc405-c28a-4616-afd4-ea9fea261082"}},{"type":"ServiceResponse","id":"EID0e31e3e7-2ae7-459f-aff1-5ac03ba4e43f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID0e31e3e7-2ae7-459f-aff1-5ac03ba4e43f"}},{"type":"Message","id":"EID7c39ed2b-a260-49a1-9406-9b116fd5e0a0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID7c39ed2b-a260-49a1-9406-9b116fd5e0a0"}},{"type":"Message","id":"EIDcac6708d-f512-4f3e-b658-a6c00a95255e","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EIDcac6708d-f512-4f3e-b658-a6c00a95255e"}},{"type":"GetParameter","id":"EID1447c337-53d5-4aa5-995c-0393365879f3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID00d32160-c80b-4e34-b7e0-dbbf7eef457f","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5c511005-9448-46df-88cc-056e216a47df/Attachments/EID00d32160-c80b-4e34-b7e0-dbbf7eef457f"}},{"type":"ServiceEndpoint","id":"EID741ea249-e317-40f0-82c0-aa03cb2e2613","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:06:22Z","duration":29124,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.011
11:06:59.849 [print] EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:59.850 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:06:59.850 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:59.851 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:59.851 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:06:59.851 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/df1229b3-8be9-4dd2-b416-bd2b2eaf3d6a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:59.852 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdf1229b3-8be9-4dd2-b416-bd2b2eaf3d6a/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.017
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.012
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.001
11:06:59.885 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:06:59.886 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.001
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.216
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:40.526 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.215
11:16:40.527 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS"}}}

11:16:43.741 response time in milliseconds: 3107.79
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883803574","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:43.742 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.398
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:44.739 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.398
11:16:44.739 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities"}}}

11:16:48.137 response time in milliseconds: 3292.23
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:47 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883807972","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:48.137 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.726
* print "testing url:" + metadata.url 0.000
11:05:58.456 [print] testing url:https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.726
11:05:58.456 request:
1 > HEAD https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:59.182 response time in milliseconds: 725.49
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3377
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:05:58 GMT
1 < Etag: "2323579506"
1 < Last-Modified: Wed, 28 Oct 2020 05:06:40 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
0.363
Given url metadata.url 0.002
When method HEAD 0.359
11:05:59.200 request:
1 > HEAD https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:59.558 response time in milliseconds: 357.83
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3377
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:05:59 GMT
1 < Etag: "2200453337"
1 < Last-Modified: Wed, 28 Oct 2020 05:05:28 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
7.335
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.003
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:22.631 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.330
11:10:22.633 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

11:10:29.962 response time in milliseconds: 7223.95
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:29 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883429792","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:29.963 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.412
* print "testing url:" + metadata.url 0.000
11:05:26.406 [print] testing url:https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs
Given url metadata.url 0.000
When method HEAD 0.411
11:05:26.409 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:26.818 response time in milliseconds: 407.34
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:05:26 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.403
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.403
11:05:26.827 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:27.229 response time in milliseconds: 402.03
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:05:27 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:05:27.230 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
26.031
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:09.073 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.630
11:06:09.074 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:06:14.697 response time in milliseconds: 4878.88
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:13 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:11 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a581ace8-1be9-4ab0-9997-d33ae7c378ea.json","testRuns":{"TestRun":{"id":"EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:10.833Z","testTasks":{"TestTask":{"id":"EID89eb9479-19d7-45e7-90aa-b9c7139a6cba","parent":{"ref":"EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID07885ef6-db2e-4420-be2a-fc56528a7c14"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID07885ef6-db2e-4420-be2a-fc56528a7c14","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:09.508Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:10.324Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:14.704 [print] EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
11:06:14.706 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:14.707 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:14.708 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a581ace8-1be9-4ab0-9997-d33ae7c378ea.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:14.708 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:06:14.708 [print] statuspath TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea
* print 'progresspath ', progresspath 0.000
11:06:14.708 [print] progresspath  TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/progress
Given path progresspath 0.000
When method GET 0.535
11:06:14.709 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:15.244 response time in milliseconds: 531.46
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:15 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:06:10 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:10 UTC 2020)","28.10.2020 11:06:10 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:10 - Preparing 1 Test Task:","28.10.2020 11:06:10 -  TestTask 1 (89eb9479-19d7-45e7-90aa-b9c7139a6cba)","28.10.2020 11:06:10 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:10 -  with parameters: ","28.10.2020 11:06:10 - etf.testcases = *","28.10.2020 11:06:10 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:10 - Setting state to CREATED","28.10.2020 11:06:10 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:12 - Starting TestRun.a581ace8-1be9-4ab0-9997-d33ae7c378ea at 2020-10-28T11:06:13Z","28.10.2020 11:06:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:13 - Project Properties: ","28.10.2020 11:06:13 - etf.testcases - * ","28.10.2020 11:06:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:06:13 - username -  ","28.10.2020 11:06:13 - authUser -  ","28.10.2020 11:06:13 - authMethod - basic ","28.10.2020 11:06:13 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:06:15.244 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "28.10.2020 11:06:10 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:10 UTC 2020)",
    "28.10.2020 11:06:10 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:06:10 - Preparing 1 Test Task:",
    "28.10.2020 11:06:10 -  TestTask 1 (89eb9479-19d7-45e7-90aa-b9c7139a6cba)",
    "28.10.2020 11:06:10 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:06:10 -  with parameters: ",
    "28.10.2020 11:06:10 - etf.testcases = *",
    "28.10.2020 11:06:10 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:06:10 - Setting state to CREATED",
    "28.10.2020 11:06:10 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:06:12 - Starting TestRun.a581ace8-1be9-4ab0-9997-d33ae7c378ea at 2020-10-28T11:06:13Z",
    "28.10.2020 11:06:13 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:06:13 - Project Properties: ",
    "28.10.2020 11:06:13 - etf.testcases - * ",
    "28.10.2020 11:06:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:06:13 - username -  ",
    "28.10.2020 11:06:13 - authUser -  ",
    "28.10.2020 11:06:13 - authMethod - basic ",
    "28.10.2020 11:06:13 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 13.079
11:06:15.246 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:15.775 response time in milliseconds: 525.38
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:15 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:06:10 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:10 UTC 2020)","28.10.2020 11:06:10 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:10 - Preparing 1 Test Task:","28.10.2020 11:06:10 -  TestTask 1 (89eb9479-19d7-45e7-90aa-b9c7139a6cba)","28.10.2020 11:06:10 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:10 -  with parameters: ","28.10.2020 11:06:10 - etf.testcases = *","28.10.2020 11:06:10 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:10 - Setting state to CREATED","28.10.2020 11:06:10 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:12 - Starting TestRun.a581ace8-1be9-4ab0-9997-d33ae7c378ea at 2020-10-28T11:06:13Z","28.10.2020 11:06:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:13 - Project Properties: ","28.10.2020 11:06:13 - etf.testcases - * ","28.10.2020 11:06:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:06:13 - username -  ","28.10.2020 11:06:13 - authUser -  ","28.10.2020 11:06:13 - authMethod - basic ","28.10.2020 11:06:13 - TestRunTask initialized"]}

11:06:15.776 retry condition not satisfied: response.val == response.max
11:06:15.776 sleeping before retry #1
11:06:20.777 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:21.303 response time in milliseconds: 524.42
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:21 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"101","log":["28.10.2020 11:06:10 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:10 UTC 2020)","28.10.2020 11:06:10 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:10 - Preparing 1 Test Task:","28.10.2020 11:06:10 -  TestTask 1 (89eb9479-19d7-45e7-90aa-b9c7139a6cba)","28.10.2020 11:06:10 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:10 -  with parameters: ","28.10.2020 11:06:10 - etf.testcases = *","28.10.2020 11:06:10 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:10 - Setting state to CREATED","28.10.2020 11:06:10 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:12 - Starting TestRun.a581ace8-1be9-4ab0-9997-d33ae7c378ea at 2020-10-28T11:06:13Z","28.10.2020 11:06:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:13 - Project Properties: ","28.10.2020 11:06:13 - etf.testcases - * ","28.10.2020 11:06:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:06:13 - username -  ","28.10.2020 11:06:13 - authUser -  ","28.10.2020 11:06:13 - authMethod - basic ","28.10.2020 11:06:13 - TestRunTask initialized","28.10.2020 11:06:16 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:06:16 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:06:18 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:06:20 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:06:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:06:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:06:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:06:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:06:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:06:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:06:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:06:21 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:06:21 ERROR Response status code:404 is not in acceptable list of status codes"]}

11:06:21.303 retry condition not satisfied: response.val == response.max
11:06:21.303 sleeping before retry #2
11:06:26.305 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:28.323 response time in milliseconds: 2015.76
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:06:28 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:06:28.323 retry condition satisfied
* print response 0.000
11:06:28.324 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 6.747
11:06:28.325 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:35.067 response time in milliseconds: 5786.93
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:06:34 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:06:26 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a581ace8-1be9-4ab0-9997-d33ae7c378ea.json","testRuns":{"TestRun":{"id":"EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:10.833Z","testTasks":{"TestTask":{"id":"EID89eb9479-19d7-45e7-90aa-b9c7139a6cba","parent":{"ref":"EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID07885ef6-db2e-4420-be2a-fc56528a7c14"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID6812d803-7ce2-4b31-a2c3-0540b14d9e39"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID07885ef6-db2e-4420-be2a-fc56528a7c14","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:09.508Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:10.324Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID6812d803-7ce2-4b31-a2c3-0540b14d9e39","testObject":{"ref":"EID07885ef6-db2e-4420-be2a-fc56528a7c14"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee306c6-0175-1000-50cc-14a3bda7fc86","testCaseResults":{"TestCaseResult":[{"id":"EID6ee306c7-0175-1000-7fd2-1b5da05fd4cb","testStepResults":{"TestStepResult":[{"id":"EID6ee306c8-0175-1000-8a59-038c143bb412","parent":{"ref":"EID6ee306c7-0175-1000-7fd2-1b5da05fd4cb"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:06:13Z","duration":24,"status":"PASSED"},{"id":"EID6ee306e0-0175-1000-ecdc-f5a50f750e0a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee30785-0175-1000-fd6d-95aaac66efd6","parent":{"ref":"EID6ee306e0-0175-1000-ecdc-f5a50f750e0a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee30785-0175-1000-24a9-37ed2c6238f2","parent":{"ref":"EID6ee306e0-0175-1000-ecdc-f5a50f750e0a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee30785-0175-1000-dcd0-f575613e187a","parent":{"ref":"EID6ee306e0-0175-1000-ecdc-f5a50f750e0a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee30785-0175-1000-402d-6a129bac3699","parent":{"ref":"EID6ee306e0-0175-1000-ecdc-f5a50f750e0a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc92d138f-6b14-448f-bec1-e30ba4832714"},{"ref":"EIDa1656a08-17df-4dd5-ad7a-757836369b5b"},{"ref":"EID612f5e8a-7ae2-4f43-8de4-871246ac814d"}]},"parent":{"ref":"EID6ee306c7-0175-1000-7fd2-1b5da05fd4cb"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:06:13Z","duration":44,"status":"PASSED"}]},"parent":{"ref":"EID6ee306c6-0175-1000-50cc-14a3bda7fc86"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:06:13Z","duration":204,"status":"PASSED"},{"id":"EID6ee307aa-0175-1000-b388-fc214467eb23","testStepResults":{"TestStepResult":{"id":"EID6ee307aa-0175-1000-4941-2e7baca19d9c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3082f-0175-1000-6410-b743af95b84d","parent":{"ref":"EID6ee307aa-0175-1000-4941-2e7baca19d9c"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3082f-0175-1000-76b2-7a58d5a0c70b","parent":{"ref":"EID6ee307aa-0175-1000-4941-2e7baca19d9c"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3082f-0175-1000-8abf-24bb65403bdd","parent":{"ref":"EID6ee307aa-0175-1000-4941-2e7baca19d9c"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:06:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4ab2b5a2-eff0-4918-9924-98187bce3e66"},{"ref":"EIDa941c3c2-5e92-4b2b-b6e7-73f0eab02853"},{"ref":"EID66225936-21be-479f-b1a3-2f92d2b2b299"}]},"parent":{"ref":"EID6ee307aa-0175-1000-b388-fc214467eb23"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:06:13Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6ee306c6-0175-1000-50cc-14a3bda7fc86"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:06:13Z","duration":133,"status":"PASSED"}]},"parent":{"ref":"EID6812d803-7ce2-4b31-a2c3-0540b14d9e39"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:06:13Z","duration":361,"status":"PASSED"},{"id":"EID6ee3082f-0175-1000-513f-8e2b997d36a5","testCaseResults":{"TestCaseResult":[{"id":"EID6ee30830-0175-1000-6d83-48ce40d16276","testStepResults":{"TestStepResult":[{"id":"EID6ee30830-0175-1000-fe19-728b79d6d244","parent":{"ref":"EID6ee30830-0175-1000-6d83-48ce40d16276"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:06:13Z","duration":53,"status":"PASSED"},{"id":"EID6ee3083a-0175-1000-3dc9-02916014900a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3095e-0175-1000-2b8a-fd23e0689c9a","parent":{"ref":"EID6ee3083a-0175-1000-3dc9-02916014900a"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee3095e-0175-1000-60ac-428d7b4c3bb4","parent":{"ref":"EID6ee3083a-0175-1000-3dc9-02916014900a"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee3095e-0175-1000-7b9c-a200977be71d","parent":{"ref":"EID6ee3083a-0175-1000-3dc9-02916014900a"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee3095e-0175-1000-dbd6-87a017e4f4c5","parent":{"ref":"EID6ee3083a-0175-1000-3dc9-02916014900a"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee3095f-0175-1000-f74d-950a8b082f40","parent":{"ref":"EID6ee3083a-0175-1000-3dc9-02916014900a"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1da857ae-9252-49ad-a9b8-223fa0387a83"},{"ref":"EID45caac5c-81d7-4651-8bc2-8117b3f79346"},{"ref":"EIDbf0aa9fa-c67f-4584-8401-b305788d0480"}]},"parent":{"ref":"EID6ee30830-0175-1000-6d83-48ce40d16276"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:06:13Z","duration":98,"status":"PASSED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:06:13Z","duration":303,"status":"PASSED"},{"id":"EID6ee3095f-0175-1000-34bc-c62080ab251c","testStepResults":{"TestStepResult":[{"id":"EID6ee30967-0175-1000-077e-ffd39fd71ae3","attachments":{"attachment":[{"ref":"EID5db55e68-17f6-46e2-bc8b-41ffad728190"},{"ref":"EIDe6c7ea2f-1f57-4863-8983-c971e6c08cc3"}]},"parent":{"ref":"EID6ee3095f-0175-1000-34bc-c62080ab251c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:06:14Z","duration":82,"status":"PASSED"},{"id":"EID6ee30a10-0175-1000-b2b2-1d46a6ea24bb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee30aaf-0175-1000-9f36-4f8fa787480b","parent":{"ref":"EID6ee30a10-0175-1000-b2b2-1d46a6ea24bb"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30aaf-0175-1000-5ca5-fec9c7307295","parent":{"ref":"EID6ee30a10-0175-1000-b2b2-1d46a6ea24bb"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30aaf-0175-1000-e9a7-df63febfe3d5","parent":{"ref":"EID6ee30a10-0175-1000-b2b2-1d46a6ea24bb"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30aaf-0175-1000-6faa-acca7bde26ac","parent":{"ref":"EID6ee30a10-0175-1000-b2b2-1d46a6ea24bb"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID817d1d53-c689-49fa-ba07-9f7a3372030d"},{"ref":"EID876ef7c0-c48e-4f54-a113-56f0959a3839"},{"ref":"EIDef9caf72-a064-4e58-9be2-27064ca08621"}]},"parent":{"ref":"EID6ee3095f-0175-1000-34bc-c62080ab251c"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:06:14Z","duration":38,"status":"PASSED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:06:14Z","duration":336,"status":"PASSED"},{"id":"EID6ee30aaf-0175-1000-adcb-82e291923ca7","testStepResults":{"TestStepResult":[{"id":"EID6ee30ab7-0175-1000-c5cb-31efbc5ff15b","attachments":{"attachment":[{"ref":"EID38a84270-5b62-4fe1-a1f3-b614e6948f01"},{"ref":"EID38beec96-b03c-4adf-92cb-b9fbaf2a9ab1"}]},"parent":{"ref":"EID6ee30aaf-0175-1000-adcb-82e291923ca7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:06:14Z","duration":117,"status":"PASSED"},{"id":"EID6ee30b52-0175-1000-3550-b4d3a825c3a9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee30c27-0175-1000-7386-37d2a34a3bf0","parent":{"ref":"EID6ee30b52-0175-1000-3550-b4d3a825c3a9"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30c27-0175-1000-65e0-6e397e9e3173","parent":{"ref":"EID6ee30b52-0175-1000-3550-b4d3a825c3a9"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30c27-0175-1000-27b5-5f9c0cad3e7d","parent":{"ref":"EID6ee30b52-0175-1000-3550-b4d3a825c3a9"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30c27-0175-1000-adf6-e98bbdf2c207","parent":{"ref":"EID6ee30b52-0175-1000-3550-b4d3a825c3a9"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee30c27-0175-1000-dbff-00eb9a341eef","parent":{"ref":"EID6ee30b52-0175-1000-3550-b4d3a825c3a9"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:06:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe6a6a5a3-46b4-46ef-aafe-f732f6c682cd"},{"ref":"EID0fd53386-4c18-4d0a-91ac-25f1545bc20c"},{"ref":"EID2505c271-5ea8-42fa-8333-7b01aec6254c"}]},"parent":{"ref":"EID6ee30aaf-0175-1000-adcb-82e291923ca7"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:06:14Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:06:14Z","duration":385,"status":"PASSED"},{"id":"EID6ee30c30-0175-1000-ba7f-d64b1b68bc01","testStepResults":{"TestStepResult":[{"id":"EID6ee30c30-0175-1000-8d6a-72fc292e6d5f","attachments":{"attachment":[{"ref":"EID5917af01-cefd-4cb0-886a-a29cf84b3650"},{"ref":"EID775f1ead-4a04-4eca-b948-890c52fcaa13"}]},"parent":{"ref":"EID6ee30c30-0175-1000-ba7f-d64b1b68bc01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:06:14Z","duration":183,"status":"PASSED"},{"id":"EID6ee30d27-0175-1000-b403-c0b6d0d2b70d","parent":{"ref":"EID6ee30c30-0175-1000-ba7f-d64b1b68bc01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30d27-0175-1000-d38d-440498c491a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee30ddc-0175-1000-19dd-b1d71bd95598","parent":{"ref":"EID6ee30d27-0175-1000-d38d-440498c491a8"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30ddc-0175-1000-b34a-02e3098cfe39","parent":{"ref":"EID6ee30d27-0175-1000-d38d-440498c491a8"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30ddc-0175-1000-93dc-4bc345a965c9","parent":{"ref":"EID6ee30d27-0175-1000-d38d-440498c491a8"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30ddc-0175-1000-4e7f-7ef3bcc13c2b","parent":{"ref":"EID6ee30d27-0175-1000-d38d-440498c491a8"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID83fb0b16-9de3-40b9-bb35-7058b3b8571c"},{"ref":"EIDf2909364-765b-4b80-8c4c-f70e818d8294"},{"ref":"EID0a487310-f46e-4b05-a683-03e9e0435b9c"}]},"parent":{"ref":"EID6ee30c30-0175-1000-ba7f-d64b1b68bc01"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:06:15Z","duration":73,"status":"PASSED"},{"id":"EID6ee30de5-0175-1000-1f21-e61dd9ae9db2","attachments":{"attachment":{"ref":"EID9844067c-6abe-48b6-883c-f3585ae22f30"}},"parent":{"ref":"EID6ee30c30-0175-1000-ba7f-d64b1b68bc01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:06:15Z","duration":2,"status":"PASSED"},{"id":"EID6ee30df3-0175-1000-8e91-a245f5af2495","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee30f11-0175-1000-764b-6ee318c166c2","parent":{"ref":"EID6ee30df3-0175-1000-8e91-a245f5af2495"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30f11-0175-1000-7aa3-49efdcf3db1f","parent":{"ref":"EID6ee30df3-0175-1000-8e91-a245f5af2495"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30f11-0175-1000-271e-136481a16c7e","parent":{"ref":"EID6ee30df3-0175-1000-8e91-a245f5af2495"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30f11-0175-1000-15ea-c0c057d35dd5","parent":{"ref":"EID6ee30df3-0175-1000-8e91-a245f5af2495"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee30f11-0175-1000-5d77-f58f8efde270","parent":{"ref":"EID6ee30df3-0175-1000-8e91-a245f5af2495"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:06:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb56dac84-d315-4706-af04-0161459f3115"},{"ref":"EID6c298dc5-24f6-4cb1-9f72-981c6618336e"},{"ref":"EIDdb2511e1-f30e-406e-97e6-9ed2440d6126"}]},"parent":{"ref":"EID6ee30c30-0175-1000-ba7f-d64b1b68bc01"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:06:15Z","duration":91,"status":"PASSED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:06:14Z","duration":737,"status":"PASSED"},{"id":"EID6ee30f11-0175-1000-cd00-c01617d8be3d","testStepResults":{"TestStepResult":[{"id":"EID6ee30f11-0175-1000-7440-7173d9e7b55f","attachments":{"attachment":[{"ref":"EID5e198dc0-bcb1-4774-a0a5-6885ec53ec25"},{"ref":"EID451a5efc-38fa-4ac4-bbc9-884091ac8591"}]},"parent":{"ref":"EID6ee30f11-0175-1000-cd00-c01617d8be3d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:06:15Z","duration":115,"status":"PASSED"},{"id":"EID6ee30fae-0175-1000-2ca4-1b0f351857aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee31094-0175-1000-0dd8-b70464991bbf","parent":{"ref":"EID6ee30fae-0175-1000-2ca4-1b0f351857aa"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee31094-0175-1000-c76a-77e5612e96d2","parent":{"ref":"EID6ee30fae-0175-1000-2ca4-1b0f351857aa"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee31094-0175-1000-0655-bc1a6041396b","parent":{"ref":"EID6ee30fae-0175-1000-2ca4-1b0f351857aa"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee31094-0175-1000-6478-bb93efab269e","parent":{"ref":"EID6ee30fae-0175-1000-2ca4-1b0f351857aa"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd1b7ea28-a863-4f51-b652-f0f000e78a79"},{"ref":"EID56195e77-44a7-4816-875b-6a46af02d8b6"},{"ref":"EID8f45e24f-b7c1-4757-9372-4202f6c24501"}]},"parent":{"ref":"EID6ee30f11-0175-1000-cd00-c01617d8be3d"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:06:15Z","duration":107,"status":"PASSED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:06:15Z","duration":388,"status":"PASSED"},{"id":"EID6ee31095-0175-1000-7ed8-cabcb039ca91","testStepResults":{"TestStepResult":[{"id":"EID6ee31095-0175-1000-45e4-0bc16b419641","attachments":{"attachment":[{"ref":"EID6d4b06c9-c6da-4ec1-86c3-305c80a0d193"},{"ref":"EIDd5ab164f-9364-413f-9b10-cd9ac9b3fe3c"}]},"parent":{"ref":"EID6ee31095-0175-1000-7ed8-cabcb039ca91"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:06:16Z","duration":147,"status":"PASSED"},{"id":"EID6ee31155-0175-1000-8aec-2fa658f809ec","parent":{"ref":"EID6ee31095-0175-1000-7ed8-cabcb039ca91"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee31155-0175-1000-2406-8ad76315cc8c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3120c-0175-1000-731d-cd0000694639","parent":{"ref":"EID6ee31155-0175-1000-2406-8ad76315cc8c"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3120c-0175-1000-6221-32734a0bdc7f","parent":{"ref":"EID6ee31155-0175-1000-2406-8ad76315cc8c"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3120c-0175-1000-d369-956f6b7edae3","parent":{"ref":"EID6ee31155-0175-1000-2406-8ad76315cc8c"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3120c-0175-1000-a256-700140680f22","parent":{"ref":"EID6ee31155-0175-1000-2406-8ad76315cc8c"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91656ed6-0443-440b-941c-be3d8d446193"},{"ref":"EID3a772445-bd91-4caf-9a91-25e5f70530ce"},{"ref":"EID9e7e9f98-5bba-4725-bb33-39da078dc7da"}]},"parent":{"ref":"EID6ee31095-0175-1000-7ed8-cabcb039ca91"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:06:16Z","duration":79,"status":"PASSED"},{"id":"EID6ee31215-0175-1000-24a2-335430b48000","attachments":{"attachment":{"ref":"EIDe41c80c9-46cc-4738-9b60-9178e4401a34"}},"parent":{"ref":"EID6ee31095-0175-1000-7ed8-cabcb039ca91"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:06:16Z","duration":1,"status":"PASSED"},{"id":"EID6ee31223-0175-1000-c19f-67a717853695","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3136c-0175-1000-0e26-604d94972580","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee31223-0175-1000-c19f-67a717853695"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:06:16Z","duration":12,"status":"FAILED"},{"id":"EID6ee31378-0175-1000-1218-0160cd349e66","parent":{"ref":"EID6ee31223-0175-1000-c19f-67a717853695"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee31378-0175-1000-8515-b1031301cda3","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee31223-0175-1000-c19f-67a717853695"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:06:16Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfd39d4a8-c550-4a22-98a7-ef27f8086038"},{"ref":"EID65c49752-1abf-4ea1-8bca-59e2bbb7e49f"},{"ref":"EID9cb9b723-769e-48d7-bfdb-45a81fc39951"}]},"parent":{"ref":"EID6ee31095-0175-1000-7ed8-cabcb039ca91"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:06:16Z","duration":270,"status":"FAILED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:06:16Z","duration":740,"status":"FAILED"},{"id":"EID6ee31391-0175-1000-711c-246bb1bc2d22","testStepResults":{"TestStepResult":[{"id":"EID6ee31391-0175-1000-981f-d91e89291aab","attachments":{"attachment":[{"ref":"EID55f4a93e-6954-40f7-9a55-d4c8cdf68f82"},{"ref":"EIDc153008c-92f5-43db-878c-ccf8b02f726f"}]},"parent":{"ref":"EID6ee31391-0175-1000-711c-246bb1bc2d22"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:06:16Z","duration":78,"status":"PASSED"},{"id":"EID6ee31476-0175-1000-4972-c4e7cd9c8b2e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee31531-0175-1000-6f35-ab9c50e583d3","parent":{"ref":"EID6ee31476-0175-1000-4972-c4e7cd9c8b2e"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee31531-0175-1000-4669-a7b8649262d7","parent":{"ref":"EID6ee31476-0175-1000-4972-c4e7cd9c8b2e"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee31531-0175-1000-9d13-5b442037657f","parent":{"ref":"EID6ee31476-0175-1000-4972-c4e7cd9c8b2e"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee31531-0175-1000-2d8f-00ac6ee30da6","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee31476-0175-1000-4972-c4e7cd9c8b2e"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID927d8932-708e-41ec-a8c9-fe524f6ebec1"},{"ref":"EIDfd84594b-c0a0-414d-8084-8e9b701675e9"},{"ref":"EID9d6b5b24-8ded-4501-a66d-e5a169540335"}]},"parent":{"ref":"EID6ee31391-0175-1000-711c-246bb1bc2d22"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:06:17Z","duration":43,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:06:16Z","duration":416,"status":"PASSED_MANUAL"},{"id":"EID6ee31531-0175-1000-4a0f-bf73d7ff60b4","testStepResults":{"TestStepResult":{"id":"EID6ee31531-0175-1000-1fe4-4ee1f23642f9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee315db-0175-1000-e414-a120fd98bdc9","parent":{"ref":"EID6ee31531-0175-1000-1fe4-4ee1f23642f9"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee315db-0175-1000-2b38-1b697d439bce","parent":{"ref":"EID6ee31531-0175-1000-1fe4-4ee1f23642f9"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee315db-0175-1000-0b60-541fbbaac65e","parent":{"ref":"EID6ee31531-0175-1000-1fe4-4ee1f23642f9"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee315db-0175-1000-3f0a-7e25f6b3ffe2","parent":{"ref":"EID6ee31531-0175-1000-1fe4-4ee1f23642f9"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4881d89d-19c7-4ea3-aadd-c0a1da9db152"},{"ref":"EIDff5687e6-b855-4dcc-9843-d181537864d7"},{"ref":"EID25618100-ec94-437a-8500-a41b71c43dd0"}]},"parent":{"ref":"EID6ee31531-0175-1000-4a0f-bf73d7ff60b4"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:06:17Z","duration":54,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:06:17Z","duration":170,"status":"PASSED"},{"id":"EID6ee315e5-0175-1000-16f1-20a082614a8d","testStepResults":{"TestStepResult":{"id":"EID6ee315e5-0175-1000-103a-8cfb0d044ffa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee316d1-0175-1000-3a7f-40fbb58bc55f","parent":{"ref":"EID6ee315e5-0175-1000-103a-8cfb0d044ffa"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee316d1-0175-1000-69f9-19251437e17f","parent":{"ref":"EID6ee315e5-0175-1000-103a-8cfb0d044ffa"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee316d1-0175-1000-8af2-77affb25d482","parent":{"ref":"EID6ee315e5-0175-1000-103a-8cfb0d044ffa"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee316d1-0175-1000-ab5f-5ee503fe9f50","parent":{"ref":"EID6ee315e5-0175-1000-103a-8cfb0d044ffa"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:06:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd5e8db0b-2533-43cc-aa6c-0ef6b91e8680"},{"ref":"EID935e02ba-f0f5-436d-925c-a6b271f4d9c8"},{"ref":"EID30196305-293b-44a4-938b-1b4e520b4765"}]},"parent":{"ref":"EID6ee315e5-0175-1000-16f1-20a082614a8d"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:06:17Z","duration":126,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:06:17Z","duration":237,"status":"PASSED"},{"id":"EID6ee316d2-0175-1000-918c-81a755c2f738","testStepResults":{"TestStepResult":{"id":"EID6ee316d2-0175-1000-75ce-8b61aedbe3d3","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID8e9bb5b4-1616-40af-90e3-10d67b5ddfc0"},{"ref":"EIDd3c82d6d-5ec0-471a-bf8f-08d44f9ade94"},{"ref":"EID708ad491-499b-444f-9c22-9eaae4d9047d"},{"ref":"EID0996f64b-31f6-4ec5-8621-d49fd15ef88f"},{"ref":"EID95be255c-44fa-4c79-a496-bab412bee2d4"},{"ref":"EID9a862a9b-32ff-449f-8b9c-c1a05a7911aa"},{"ref":"EID96dee8b5-c8ea-4fd4-af38-4af72ebf1dc7"},{"ref":"EID6e0c9625-0a4d-4906-88a9-02864060ca6a"},{"ref":"EID07ddf41d-5262-416d-bad1-3c690abf4f66"}]},"parent":{"ref":"EID6ee316d2-0175-1000-918c-81a755c2f738"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:06:17Z","duration":646,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:06:17Z","duration":819,"status":"SKIPPED"},{"id":"EID6ee31a05-0175-1000-11d1-e8be1f82c891","testStepResults":{"TestStepResult":{"id":"EID6ee31a05-0175-1000-b327-3ccc9e18604d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee31b30-0175-1000-1ece-fa8482d228db","parent":{"ref":"EID6ee31a05-0175-1000-b327-3ccc9e18604d"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:06:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee31b30-0175-1000-5a36-60c6401aa573","parent":{"ref":"EID6ee31a05-0175-1000-b327-3ccc9e18604d"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:06:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee31b30-0175-1000-a1ee-e74239910a59","parent":{"ref":"EID6ee31a05-0175-1000-b327-3ccc9e18604d"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:06:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee31b30-0175-1000-95a7-14fd1c672141","parent":{"ref":"EID6ee31a05-0175-1000-b327-3ccc9e18604d"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:06:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID382e45d2-87fd-4a39-9692-b8e416334106"},{"ref":"EIDd45b185f-4281-4d78-98ce-f960626a1521"},{"ref":"EID48b3aa8e-7c4e-4076-b239-cbda274490f5"}]},"parent":{"ref":"EID6ee31a05-0175-1000-11d1-e8be1f82c891"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:06:18Z","duration":142,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:06:18Z","duration":316,"status":"PASSED"},{"id":"EID6ee31b41-0175-1000-5477-4d3c207bd534","testStepResults":{"TestStepResult":{"id":"EID6ee31b41-0175-1000-f49f-6e1c7341a609","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee31c27-0175-1000-b51a-b434b73296ae","parent":{"ref":"EID6ee31b41-0175-1000-f49f-6e1c7341a609"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31c27-0175-1000-fe28-48e44bf7cece","parent":{"ref":"EID6ee31b41-0175-1000-f49f-6e1c7341a609"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31c27-0175-1000-4938-bd3694276f9d","parent":{"ref":"EID6ee31b41-0175-1000-f49f-6e1c7341a609"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31c27-0175-1000-2fde-89964d7cd4d2","parent":{"ref":"EID6ee31b41-0175-1000-f49f-6e1c7341a609"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31c27-0175-1000-158b-0a937a60f616","parent":{"ref":"EID6ee31b41-0175-1000-f49f-6e1c7341a609"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31c27-0175-1000-0f6e-6d937674aa6d","parent":{"ref":"EID6ee31b41-0175-1000-f49f-6e1c7341a609"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb8c4a454-a612-4323-84cb-8de65e30de2c"},{"ref":"EIDf3935679-6c51-41dc-806d-f78bc86ae7a6"},{"ref":"EID1dcc2f22-7ef0-4627-bb02-416875357d7b"}]},"parent":{"ref":"EID6ee31b41-0175-1000-5477-4d3c207bd534"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:06:18Z","duration":90,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:06:18Z","duration":230,"status":"PASSED"},{"id":"EID6ee31c27-0175-1000-886a-242664947e67","testStepResults":{"TestStepResult":{"id":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee31d4f-0175-1000-70c5-dbddf8e77f4b","parent":{"ref":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31d4f-0175-1000-8bc4-9c409c2390e9","parent":{"ref":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31d4f-0175-1000-34a0-f67c61e68558","parent":{"ref":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31d4f-0175-1000-1a48-8da5cebe2ed8","parent":{"ref":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31d4f-0175-1000-7098-1c9a1f3369bb","parent":{"ref":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31d4f-0175-1000-6634-52c78bf690e1","parent":{"ref":"EID6ee31c27-0175-1000-5b3f-d3459d556f1f"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48e321bc-c3bc-4c01-a886-f2fb95fda702"},{"ref":"EID63c5e522-f415-4a17-b612-097ec88c9385"},{"ref":"EIDa626773b-6ac4-4a7f-8259-958291ed7596"}]},"parent":{"ref":"EID6ee31c27-0175-1000-886a-242664947e67"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:06:19Z","duration":74,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:06:19Z","duration":306,"status":"PASSED"},{"id":"EID6ee31d59-0175-1000-ebf8-57ef9a53c028","testStepResults":{"TestStepResult":{"id":"EID6ee31d59-0175-1000-7cab-86110a06c8f4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee31dfc-0175-1000-4a69-a0d1f523b00b","parent":{"ref":"EID6ee31d59-0175-1000-7cab-86110a06c8f4"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31dfc-0175-1000-8287-e4248ba8d14a","parent":{"ref":"EID6ee31d59-0175-1000-7cab-86110a06c8f4"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31dfc-0175-1000-d176-3ffbdf00ad03","parent":{"ref":"EID6ee31d59-0175-1000-7cab-86110a06c8f4"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee31dfc-0175-1000-7c32-0d473550bc02","parent":{"ref":"EID6ee31d59-0175-1000-7cab-86110a06c8f4"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:06:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID14c819c9-d51a-4380-a2fb-edf4c106e984"},{"ref":"EIDd726735d-e349-40d8-9dd6-d6e6e52f4cbd"},{"ref":"EID4fd14429-e02e-40d4-80bc-8e16501ce11b"}]},"parent":{"ref":"EID6ee31d59-0175-1000-ebf8-57ef9a53c028"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:06:19Z","duration":27,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:06:19Z","duration":163,"status":"PASSED"},{"id":"EID6ee31dfc-0175-1000-ad80-08923702c290","testStepResults":{"TestStepResult":[{"id":"EID6ee31dfc-0175-1000-bbfa-78fac721c7eb","attachments":{"attachment":[{"ref":"EID675dc6dd-c6a3-4722-a7b6-3fa1b5329968"},{"ref":"EID39ff539f-cc61-467a-9983-81cd9559e492"},{"ref":"EID1b75bc01-3b2c-48ef-a419-d1bf03b2596b"},{"ref":"EID784af662-fcb7-4e1e-82a8-c0c765cc48f6"}]},"parent":{"ref":"EID6ee31dfc-0175-1000-ad80-08923702c290"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:06:19Z","duration":362,"status":"PASSED"},{"id":"EID6ee31fa8-0175-1000-5b40-ae60c3d2670a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32075-0175-1000-549b-7fed095f6ea3","parent":{"ref":"EID6ee31fa8-0175-1000-5b40-ae60c3d2670a"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee32075-0175-1000-b902-bc6a701409d4","parent":{"ref":"EID6ee31fa8-0175-1000-5b40-ae60c3d2670a"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee32075-0175-1000-a4b7-a010ab98bfe0","parent":{"ref":"EID6ee31fa8-0175-1000-5b40-ae60c3d2670a"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee32075-0175-1000-0994-efa0d441d0d1","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee31fa8-0175-1000-5b40-ae60c3d2670a"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe2156344-9969-488f-b687-dd037db376e7"},{"ref":"EIDaee92ca1-51bd-40d1-9c9f-4720cc26224a"},{"ref":"EID21a91b8f-2cf6-4d09-a004-d28dee7978a4"}]},"parent":{"ref":"EID6ee31dfc-0175-1000-ad80-08923702c290"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:06:19Z","duration":30,"status":"FAILED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:06:19Z","duration":634,"status":"FAILED"},{"id":"EID6ee32076-0175-1000-e7b5-5f09ebdd9e0d","testStepResults":{"TestStepResult":{"id":"EID6ee32076-0175-1000-2ad1-f9f1a75f3917","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3210a-0175-1000-d28c-6ecea832b018","parent":{"ref":"EID6ee32076-0175-1000-2ad1-f9f1a75f3917"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee3210a-0175-1000-f6b2-f1842e798ee3","parent":{"ref":"EID6ee32076-0175-1000-2ad1-f9f1a75f3917"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee3210b-0175-1000-a62d-f88baa721c8a","parent":{"ref":"EID6ee32076-0175-1000-2ad1-f9f1a75f3917"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee3210b-0175-1000-4882-f0405aa370cb","parent":{"ref":"EID6ee32076-0175-1000-2ad1-f9f1a75f3917"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdfc924ff-54a2-41de-81f7-a58e52be3de0"},{"ref":"EID07f11f46-5112-4bde-9148-3564da8126a2"},{"ref":"EID6870c3e8-3a8a-4e30-8d06-722931264e68"}]},"parent":{"ref":"EID6ee32076-0175-1000-e7b5-5f09ebdd9e0d"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:06:20Z","duration":31,"status":"PASSED"}},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:06:20Z","duration":156,"status":"PASSED"},{"id":"EID6ee32112-0175-1000-f76c-31c48b1461d7","testStepResults":{"TestStepResult":[{"id":"EID6ee32112-0175-1000-442e-a793d548d239","parent":{"ref":"EID6ee32112-0175-1000-f76c-31c48b1461d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee32112-0175-1000-43e3-9fc0833ddff7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee321ea-0175-1000-1c12-ec73569c3117","parent":{"ref":"EID6ee32112-0175-1000-43e3-9fc0833ddff7"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee321ea-0175-1000-76aa-ad24d722e734","parent":{"ref":"EID6ee32112-0175-1000-43e3-9fc0833ddff7"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee321ea-0175-1000-c659-7f9fd0b4f2c7","parent":{"ref":"EID6ee32112-0175-1000-43e3-9fc0833ddff7"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee321ea-0175-1000-d4b2-75de209d6045","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee32112-0175-1000-43e3-9fc0833ddff7"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID94af022b-26e3-4099-b993-bc805b304442"},{"ref":"EID01a1e39d-4a10-4d69-8f00-df1c5ef0103a"},{"ref":"EID7918d2b8-8082-40c5-9be9-245aa3a85a71"}]},"parent":{"ref":"EID6ee32112-0175-1000-f76c-31c48b1461d7"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:06:20Z","duration":64,"status":"FAILED"}]},"parent":{"ref":"EID6ee3082f-0175-1000-513f-8e2b997d36a5"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:06:20Z","duration":216,"status":"FAILED"}]},"parent":{"ref":"EID6812d803-7ce2-4b31-a2c3-0540b14d9e39"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:06:13Z","duration":6587,"status":"FAILED"},{"id":"EID6ee321ea-0175-1000-7e23-962bf7021c56","testCaseResults":{"TestCaseResult":[{"id":"EID6ee321ea-0175-1000-a20d-ed43fbec619c","testStepResults":{"TestStepResult":[{"id":"EID6ee321ea-0175-1000-f2b5-e63ca433d9f0","parent":{"ref":"EID6ee321ea-0175-1000-a20d-ed43fbec619c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee321eb-0175-1000-cd02-c27c4f4745fc","parent":{"ref":"EID6ee321ea-0175-1000-a20d-ed43fbec619c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:06:20Z","duration":31,"status":"PASSED"},{"id":"EID6ee321eb-0175-1000-0fd2-3c107bf18995","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee322b7-0175-1000-4c19-a71d4e73184d","parent":{"ref":"EID6ee321eb-0175-1000-0fd2-3c107bf18995"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee322b7-0175-1000-02a6-db3fb8d93d0c","parent":{"ref":"EID6ee321eb-0175-1000-0fd2-3c107bf18995"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee322b7-0175-1000-c799-dc153f2268b3","parent":{"ref":"EID6ee321eb-0175-1000-0fd2-3c107bf18995"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8fad5e8e-2024-4b72-88c0-e93ce5291f7d"},{"ref":"EIDb4ca7463-ccf7-4a77-9dc7-0223093491cf"},{"ref":"EID602a212a-ff1c-4acf-9da9-f64d7315c144"}]},"parent":{"ref":"EID6ee321ea-0175-1000-a20d-ed43fbec619c"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:06:20Z","duration":120,"status":"PASSED"},{"id":"EID6ee322bf-0175-1000-b67c-30476da0e718","attachments":{"attachment":{"ref":"EID973c9af3-a56b-47f7-89e0-e05d8564ed3f"}},"parent":{"ref":"EID6ee321ea-0175-1000-a20d-ed43fbec619c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee322cc-0175-1000-e736-28ccfed4dedc","parent":{"ref":"EID6ee321ea-0175-1000-a20d-ed43fbec619c"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:06:20Z","duration":36,"status":"PASSED"}]},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:06:20Z","duration":263,"status":"PASSED"},{"id":"EID6ee322f1-0175-1000-6fcd-96451900a7e9","testStepResults":{"TestStepResult":[{"id":"EID6ee322f1-0175-1000-e06f-a08b106d1d99","parent":{"ref":"EID6ee322f1-0175-1000-6fcd-96451900a7e9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:06:20Z","duration":44,"status":"PASSED"},{"id":"EID6ee322f1-0175-1000-6402-35007a90ecd5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32356-0175-1000-fb94-da180c08cbb0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee322f1-0175-1000-6402-35007a90ecd5"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:06:20Z","duration":13,"status":"FAILED"},{"id":"EID6ee32363-0175-1000-6bc7-3b2b423e5747","parent":{"ref":"EID6ee322f1-0175-1000-6402-35007a90ecd5"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee32363-0175-1000-ea8a-7da2480fd5ef","parent":{"ref":"EID6ee322f1-0175-1000-6402-35007a90ecd5"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee32363-0175-1000-f65c-f8ead7a09ef7","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee322f1-0175-1000-6402-35007a90ecd5"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"FAILED"},{"id":"EID6ee32363-0175-1000-57f4-4ce3642d3e84","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee322f1-0175-1000-6402-35007a90ecd5"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:06:20Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb27f1e6c-6f13-4b11-bcbb-58094026a474"},{"ref":"EIDc61f6080-cec0-41db-853e-18bb4485014b"},{"ref":"EID45da2e2c-50c7-44f3-986e-2f65c28ae7f3"}]},"parent":{"ref":"EID6ee322f1-0175-1000-6fcd-96451900a7e9"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:06:20Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:06:20Z","duration":130,"status":"FAILED"},{"id":"EID6ee32373-0175-1000-b93c-9e95e1a0e35b","testStepResults":{"TestStepResult":{"id":"EID6ee32373-0175-1000-c524-098087350d8c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee323cb-0175-1000-c194-a3bcecaf205c","parent":{"ref":"EID6ee32373-0175-1000-c524-098087350d8c"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee323cb-0175-1000-03a5-ddb7f52036e9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee32373-0175-1000-c524-098087350d8c"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:06:21Z","duration":13,"status":"FAILED"},{"id":"EID6ee323d8-0175-1000-5876-1a6c058dba4d","parent":{"ref":"EID6ee32373-0175-1000-c524-098087350d8c"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb2dd2c43-3fc0-4548-9d52-265649be0cf4"},{"ref":"EID1da67f53-8df6-4a52-8b78-2c38bd0a70a2"},{"ref":"EIDa759897f-6fa9-40bb-bfc8-d345c0f02ba7"}]},"parent":{"ref":"EID6ee32373-0175-1000-b93c-9e95e1a0e35b"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:06:20Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:06:20Z","duration":101,"status":"FAILED"},{"id":"EID6ee323d8-0175-1000-9a98-2b358b808958","testStepResults":{"TestStepResult":{"id":"EID6ee323d8-0175-1000-e76d-72b003b55518","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32449-0175-1000-a276-e4456e5bfac1","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee323d8-0175-1000-e76d-72b003b55518"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:06:21Z","duration":1,"status":"FAILED"},{"id":"EID6ee3244a-0175-1000-cde5-7258afc26aba","parent":{"ref":"EID6ee323d8-0175-1000-e76d-72b003b55518"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee3244a-0175-1000-e1e0-d32f0e7fe5d1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee323d8-0175-1000-e76d-72b003b55518"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:06:21Z","duration":11,"status":"FAILED"},{"id":"EID6ee32455-0175-1000-f85b-64ffc38154f0","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee323d8-0175-1000-e76d-72b003b55518"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4f3a460c-9c8a-4863-93f2-3b1286764ae6"},{"ref":"EID68734ec8-bdfe-48cd-b098-9c4f7aad568c"},{"ref":"EID8f6a0139-dcc5-458d-9300-eae62a56fddc"}]},"parent":{"ref":"EID6ee323d8-0175-1000-9a98-2b358b808958"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:06:21Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:06:21Z","duration":125,"status":"FAILED"},{"id":"EID6ee32455-0175-1000-ad5f-73dcda520cc6","testStepResults":{"TestStepResult":{"id":"EID6ee32455-0175-1000-6557-c84ab944be32","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee324a8-0175-1000-91a0-43c0942e7589","parent":{"ref":"EID6ee32455-0175-1000-6557-c84ab944be32"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee324a8-0175-1000-798e-f86f7a7dade0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee32455-0175-1000-6557-c84ab944be32"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:06:21Z","duration":15,"status":"FAILED"},{"id":"EID6ee324b7-0175-1000-9d18-abf502be7301","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee32455-0175-1000-6557-c84ab944be32"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID813773cb-ef27-4c06-9680-eceead08a5c3"},{"ref":"EIDaf41bf32-3546-4e8d-a2ab-a459aa9d5aad"},{"ref":"EIDe6560840-cc88-483b-8680-84c537cd9d9d"}]},"parent":{"ref":"EID6ee32455-0175-1000-ad5f-73dcda520cc6"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:06:21Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:06:21Z","duration":98,"status":"FAILED"},{"id":"EID6ee324b7-0175-1000-b8c1-a0f5a94ba3bb","testStepResults":{"TestStepResult":{"id":"EID6ee324b8-0175-1000-11fb-e9a399a66fa5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32510-0175-1000-d42c-f5c0a12e7696","parent":{"ref":"EID6ee324b8-0175-1000-11fb-e9a399a66fa5"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee32510-0175-1000-e5fc-98a7c8ad4d53","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee324b8-0175-1000-11fb-e9a399a66fa5"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:06:21Z","duration":12,"status":"FAILED"},{"id":"EID6ee3251c-0175-1000-edd6-f850776aea4c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee324b8-0175-1000-11fb-e9a399a66fa5"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf9407ac5-ed71-422b-bcc7-ac6a5f66e782"},{"ref":"EID5ee21fcd-3ff2-48a9-aaa4-30672fa4b556"},{"ref":"EID9f0e2e11-ad0d-4005-a8b0-17d4421826f1"}]},"parent":{"ref":"EID6ee324b7-0175-1000-b8c1-a0f5a94ba3bb"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:06:21Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:06:21Z","duration":101,"status":"FAILED"},{"id":"EID6ee3251c-0175-1000-20c9-c473de596e60","testStepResults":{"TestStepResult":{"id":"EID6ee3251c-0175-1000-e203-4d40874e30f4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32594-0175-1000-6ed1-a334362cbbef","parent":{"ref":"EID6ee3251c-0175-1000-e203-4d40874e30f4"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee32594-0175-1000-91e1-6616308bcb53","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee3251c-0175-1000-e203-4d40874e30f4"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:06:21Z","duration":14,"status":"FAILED"},{"id":"EID6ee325a2-0175-1000-09d2-5f31b36a3d86","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee3251c-0175-1000-e203-4d40874e30f4"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee325a2-0175-1000-c44d-033ad1b47c92","parent":{"ref":"EID6ee3251c-0175-1000-e203-4d40874e30f4"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee325a2-0175-1000-fe63-927b14e515de","parent":{"ref":"EID6ee3251c-0175-1000-e203-4d40874e30f4"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1573aa4f-cb71-41ab-8b73-c2977dca0035"},{"ref":"EIDf4aef25b-a378-44ad-9954-deab7d0be128"},{"ref":"EIDd254fb3a-dc35-4cff-bf19-f66e06c22285"}]},"parent":{"ref":"EID6ee3251c-0175-1000-20c9-c473de596e60"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:06:21Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:06:21Z","duration":135,"status":"FAILED"},{"id":"EID6ee325a3-0175-1000-b786-52461d7c4530","testStepResults":{"TestStepResult":{"id":"EID6ee325a3-0175-1000-4b29-58c25601f8f9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32602-0175-1000-f157-2c804a709939","parent":{"ref":"EID6ee325a3-0175-1000-4b29-58c25601f8f9"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee32602-0175-1000-f60c-1b8342116f7a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee325a3-0175-1000-4b29-58c25601f8f9"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:06:21Z","duration":20,"status":"FAILED"},{"id":"EID6ee32616-0175-1000-fe6f-39a3591f45b7","parent":{"ref":"EID6ee325a3-0175-1000-4b29-58c25601f8f9"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b390d83-9b55-4ba3-8b83-b6987c4a550f"},{"ref":"EID318b35c5-06e3-4cf3-828e-5f9bac0bcdbd"},{"ref":"EID4202c208-33b3-49ec-9ed0-d899a26c1888"}]},"parent":{"ref":"EID6ee325a3-0175-1000-b786-52461d7c4530"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:06:21Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:06:21Z","duration":115,"status":"FAILED"},{"id":"EID6ee32616-0175-1000-fbde-7c6b5aba7b30","testStepResults":{"TestStepResult":{"id":"EID6ee32620-0175-1000-6e18-fae487c1b969","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3269a-0175-1000-918d-01f5cd9270f3","parent":{"ref":"EID6ee32620-0175-1000-6e18-fae487c1b969"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee3269a-0175-1000-7906-0234bb87a4b2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee32620-0175-1000-6e18-fae487c1b969"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:06:21Z","duration":13,"status":"FAILED"},{"id":"EID6ee326a7-0175-1000-1189-6a5a19781bb3","parent":{"ref":"EID6ee32620-0175-1000-6e18-fae487c1b969"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID13c146cf-8bbe-4106-89cc-0ec9f990eef9"},{"ref":"EID9f6e1093-25e2-4937-bf82-068e3d6f8693"},{"ref":"EIDe7c19b50-53c4-4134-867f-2102e0da6f05"}]},"parent":{"ref":"EID6ee32616-0175-1000-fbde-7c6b5aba7b30"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:06:21Z","duration":37,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:06:21Z","duration":145,"status":"FAILED"},{"id":"EID6ee326a7-0175-1000-f910-d9c319d724d4","testStepResults":{"TestStepResult":{"id":"EID6ee326a7-0175-1000-cedd-c8a32f157ccd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3271f-0175-1000-f8b7-5fc59e87ee5d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee326a7-0175-1000-cedd-c8a32f157ccd"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:06:21Z","duration":17,"status":"FAILED"},{"id":"EID6ee32730-0175-1000-ef71-d01dda4cbda0","parent":{"ref":"EID6ee326a7-0175-1000-cedd-c8a32f157ccd"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee32730-0175-1000-83f8-9a7942822ae1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee326a7-0175-1000-cedd-c8a32f157ccd"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee32730-0175-1000-12ce-f1fa818a2660","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee326a7-0175-1000-cedd-c8a32f157ccd"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:06:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa78470c6-1631-4cff-8233-deb7318a131e"},{"ref":"EIDb2184452-3ff0-4330-ad44-95a6cc2d4e6f"},{"ref":"EIDe481dabd-6350-4146-8e90-8fd88ef73e2e"}]},"parent":{"ref":"EID6ee326a7-0175-1000-f910-d9c319d724d4"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:06:21Z","duration":37,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:06:21Z","duration":138,"status":"FAILED"},{"id":"EID6ee32731-0175-1000-256d-48654780fde8","testStepResults":{"TestStepResult":{"id":"EID6ee32731-0175-1000-8056-312d3d3e2e29","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee327a7-0175-1000-ba22-b0e4b543e52a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee32731-0175-1000-8056-312d3d3e2e29"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:06:21Z","duration":13,"status":"FAILED"},{"id":"EID6ee327b5-0175-1000-99a4-d094c25ff857","parent":{"ref":"EID6ee32731-0175-1000-8056-312d3d3e2e29"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee327b5-0175-1000-e933-78e6b17967f9","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee32731-0175-1000-8056-312d3d3e2e29"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"FAILED"},{"id":"EID6ee327b5-0175-1000-7a13-3f5df809d314","parent":{"ref":"EID6ee32731-0175-1000-8056-312d3d3e2e29"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaec31793-97d6-4a90-a5ef-67c58293fb86"},{"ref":"EID2f6a1e54-5af6-4b0b-a68b-f9d08c288f94"},{"ref":"EID7eb177d6-4c1a-480e-8f22-7c17c1d98692"}]},"parent":{"ref":"EID6ee32731-0175-1000-256d-48654780fde8"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:06:21Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:06:21Z","duration":132,"status":"FAILED"},{"id":"EID6ee327b5-0175-1000-7992-7fee8160c9fe","testStepResults":{"TestStepResult":[{"id":"EID6ee327b5-0175-1000-c50b-e7a987468b31","parent":{"ref":"EID6ee327b5-0175-1000-7992-7fee8160c9fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee327b5-0175-1000-2538-096109c7b527","parent":{"ref":"EID6ee327b5-0175-1000-7992-7fee8160c9fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:06:22Z","duration":142,"status":"PASSED"},{"id":"EID6ee327b5-0175-1000-50ad-c36d8e3fa93a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3286f-0175-1000-1521-b5ff12e40edf","parent":{"ref":"EID6ee327b5-0175-1000-50ad-c36d8e3fa93a"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3286f-0175-1000-6308-db997a69ebc3","parent":{"ref":"EID6ee327b5-0175-1000-50ad-c36d8e3fa93a"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3286f-0175-1000-599a-11af70d96c80","parent":{"ref":"EID6ee327b5-0175-1000-50ad-c36d8e3fa93a"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3286f-0175-1000-cc81-157b194e9308","parent":{"ref":"EID6ee327b5-0175-1000-50ad-c36d8e3fa93a"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7e25500e-050a-4fc6-a597-236ed97c2570"},{"ref":"EIDe1db4e59-11e4-4ed9-98e5-2c96af959a70"},{"ref":"EID9fa6050d-2d44-464d-b7ff-7899c0b56df1"}]},"parent":{"ref":"EID6ee327b5-0175-1000-7992-7fee8160c9fe"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:06:22Z","duration":59,"status":"PASSED"},{"id":"EID6ee3286f-0175-1000-ee44-b9822abcdb05","attachments":{"attachment":{"ref":"EID37c77ab8-1e98-4459-89b3-3f7b4d654ac0"}},"parent":{"ref":"EID6ee327b5-0175-1000-7992-7fee8160c9fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:06:22Z","duration":4,"status":"PASSED"},{"id":"EID6ee328a7-0175-1000-1bc5-f264326551b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32922-0175-1000-e5b8-5df177e0ee04","parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32922-0175-1000-2d94-258b8f5bf701","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:06:22Z","duration":11,"status":"FAILED"},{"id":"EID6ee3292d-0175-1000-7540-2567c95f49da","parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3292d-0175-1000-4e60-2431a8662600","parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3292d-0175-1000-caf2-330863741d27","parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3292d-0175-1000-4457-14063900ae39","parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee3292d-0175-1000-e6e1-55a94a933d7c","parent":{"ref":"EID6ee328a7-0175-1000-1bc5-f264326551b5"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a5e9599-3381-4ed6-af42-3b074505e7a7"},{"ref":"EID7db33714-7621-44d2-80ea-9cf74aadc795"},{"ref":"EID66e014c5-6d85-4fc0-8afe-8eb01e7e6a82"}]},"parent":{"ref":"EID6ee327b5-0175-1000-7992-7fee8160c9fe"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:06:22Z","duration":36,"status":"FAILED"}]},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:06:22Z","duration":386,"status":"FAILED"},{"id":"EID6ee32937-0175-1000-c715-bbcaa4395976","testStepResults":{"TestStepResult":[{"id":"EID6ee32937-0175-1000-680c-231d7265db53","parent":{"ref":"EID6ee32937-0175-1000-c715-bbcaa4395976"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32937-0175-1000-ee4b-5a382f4542db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32a22-0175-1000-2f0c-03bb5c5b013f","parent":{"ref":"EID6ee32937-0175-1000-ee4b-5a382f4542db"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32a22-0175-1000-e378-871ef33d0b3a","parent":{"ref":"EID6ee32937-0175-1000-ee4b-5a382f4542db"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32a22-0175-1000-77aa-f21b47645264","parent":{"ref":"EID6ee32937-0175-1000-ee4b-5a382f4542db"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32a22-0175-1000-f358-82d0cc777ea5","parent":{"ref":"EID6ee32937-0175-1000-ee4b-5a382f4542db"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96a9f36f-b485-47d8-8431-485f50a7567a"},{"ref":"EID7bd3d913-68b8-4907-be98-c9944efb41dc"},{"ref":"EIDdc9a784e-db2a-418d-b88c-7681e62c06aa"}]},"parent":{"ref":"EID6ee32937-0175-1000-c715-bbcaa4395976"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:06:22Z","duration":143,"status":"PASSED"},{"id":"EID6ee32a22-0175-1000-2fae-f31e0e1bbc28","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee32a31-0175-1000-b101-d4c2f4946c5a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32b2f-0175-1000-73ec-a47f77647e5e","parent":{"ref":"EID6ee32a31-0175-1000-b101-d4c2f4946c5a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32b2f-0175-1000-8ff5-ec9e7aa753b0","parent":{"ref":"EID6ee32a31-0175-1000-b101-d4c2f4946c5a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee32b2f-0175-1000-b949-082fe7ff30c8","parent":{"ref":"EID6ee32a31-0175-1000-b101-d4c2f4946c5a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd0e3ad41-ab1b-4aa6-b73c-e8f1a8050186"},{"ref":"EID6bec038a-111e-4b5c-8e0e-4c1a2e178e4d"},{"ref":"EIDab037e56-9f49-4ac1-8f63-3b177aac8c83"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:22Z","duration":150,"status":"PASSED"},{"id":"EID6ee32b31-0175-1000-9389-50b17114e1c2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32bff-0175-1000-2202-f80871ae9fb0","parent":{"ref":"EID6ee32b31-0175-1000-9389-50b17114e1c2"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:23Z","duration":1,"status":"PASSED"},{"id":"EID6ee32c00-0175-1000-d26e-ab0d2e3f98be","parent":{"ref":"EID6ee32b31-0175-1000-9389-50b17114e1c2"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32c00-0175-1000-68dc-639f808b50ca","parent":{"ref":"EID6ee32b31-0175-1000-9389-50b17114e1c2"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3ba1845-7bcb-46d3-96fa-d3a4cca5a404"},{"ref":"EID31448fcb-a390-4f85-b7fa-d87185ad748c"},{"ref":"EID4b19e0ec-7669-4460-9e43-6b011c95c1e4"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:22Z","duration":148,"status":"PASSED"},{"id":"EID6ee32c01-0175-1000-24bd-142748a2a68f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32c5f-0175-1000-dd41-9912e3b08a6d","parent":{"ref":"EID6ee32c01-0175-1000-24bd-142748a2a68f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32c5f-0175-1000-48ec-d4568f4629d6","parent":{"ref":"EID6ee32c01-0175-1000-24bd-142748a2a68f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32c5f-0175-1000-620e-6290334d4ff3","parent":{"ref":"EID6ee32c01-0175-1000-24bd-142748a2a68f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2dba7c6b-1310-4fac-8986-8d837e145a0c"},{"ref":"EID69232494-cc90-4057-83fe-4c7c9a42041a"},{"ref":"EID54ab0841-0bf0-48fc-af70-db1bdd85056f"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:23Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6ee32937-0175-1000-c715-bbcaa4395976"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:06:22Z","duration":574,"status":"PASSED"},{"id":"EID6ee32c60-0175-1000-eb85-97bf24707f43","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32cc0-0175-1000-b896-8a301b260f2a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee32c60-0175-1000-eb85-97bf24707f43"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:06:23Z","duration":11,"status":"FAILED"},{"id":"EID6ee32ccb-0175-1000-56cf-7263f3b34967","parent":{"ref":"EID6ee32c60-0175-1000-eb85-97bf24707f43"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32ccb-0175-1000-4bf1-adcff071b372","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee32c60-0175-1000-eb85-97bf24707f43"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"FAILED"},{"id":"EID6ee32ccb-0175-1000-a0c4-9361d11c64de","parent":{"ref":"EID6ee32c60-0175-1000-eb85-97bf24707f43"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9ca40c92-9bab-4efa-a3cc-f7160872e0a8"},{"ref":"EID8636c3be-e6a0-4e42-b3e2-af061e561ca8"},{"ref":"EID8c1e4f72-c106-415c-8928-39d48eae573a"}]},"parent":{"ref":"EID6ee32937-0175-1000-c715-bbcaa4395976"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:06:23Z","duration":37,"status":"FAILED"}]},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:06:22Z","duration":916,"status":"FAILED"},{"id":"EID6ee32ccc-0175-1000-0ab7-004f8c2febea","testStepResults":{"TestStepResult":{"id":"EID6ee32ccc-0175-1000-cd5e-3feaf438d788","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee32d32-0175-1000-7fad-50d9215a5d0d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee32ccc-0175-1000-cd5e-3feaf438d788"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:06:23Z","duration":12,"status":"FAILED"},{"id":"EID6ee32d3e-0175-1000-46d0-94622ecd6d29","parent":{"ref":"EID6ee32ccc-0175-1000-cd5e-3feaf438d788"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee32d3e-0175-1000-77fd-a8b1b87dcade","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee32ccc-0175-1000-cd5e-3feaf438d788"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"FAILED"},{"id":"EID6ee32d3e-0175-1000-2f76-9d4096ea2881","parent":{"ref":"EID6ee32ccc-0175-1000-cd5e-3feaf438d788"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1e008288-2d5b-4800-8a49-21c8673088f4"},{"ref":"EIDbb99e339-8e63-422f-9c2c-73b6a00a6998"},{"ref":"EID05359a2b-a2a0-409a-ada2-9b0b9a7c5e72"}]},"parent":{"ref":"EID6ee32ccc-0175-1000-0ab7-004f8c2febea"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:06:23Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee321ea-0175-1000-7e23-962bf7021c56"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:06:23Z","duration":114,"status":"FAILED"}]},"parent":{"ref":"EID6812d803-7ce2-4b31-a2c3-0540b14d9e39"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:06:20Z","duration":2900,"status":"FAILED"},{"id":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee32d3e-0175-1000-b2ec-9a3bc49b3199","testStepResults":{"TestStepResult":{"id":"EID6ee32d3e-0175-1000-94ac-3b50cc9820b0","parent":{"ref":"EID6ee32d3e-0175-1000-b2ec-9a3bc49b3199"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":497,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:06:23Z","duration":1,"status":"SKIPPED"},{"id":"EID6ee32d3f-0175-1000-6de8-cfa69589d55f","testStepResults":{"TestStepResult":{"id":"EID6ee32d3f-0175-1000-361d-de14d3a4b170","parent":{"ref":"EID6ee32d3f-0175-1000-6de8-cfa69589d55f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":497,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee32d3f-0175-1000-4285-8a13a2f56a75","testStepResults":{"TestStepResult":{"id":"EID6ee32d3f-0175-1000-deac-086c5ae04f03","parent":{"ref":"EID6ee32d3f-0175-1000-4285-8a13a2f56a75"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":497,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee32d3f-0175-1000-c4b5-384054952f45","testStepResults":{"TestStepResult":{"id":"EID6ee32d3f-0175-1000-237e-f1e6471b421b","parent":{"ref":"EID6ee32d3f-0175-1000-c4b5-384054952f45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":497,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee32d3f-0175-1000-f2c3-bf2f6a717558","testStepResults":{"TestStepResult":{"id":"EID6ee32d3f-0175-1000-47e7-3d059d1dceea","parent":{"ref":"EID6ee32d3f-0175-1000-f2c3-bf2f6a717558"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":504,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:06:23Z","duration":7,"status":"SKIPPED"},{"id":"EID6ee32d46-0175-1000-a656-6c9439d3ade8","testStepResults":{"TestStepResult":{"id":"EID6ee32d46-0175-1000-cb50-4a48a81b25d7","parent":{"ref":"EID6ee32d46-0175-1000-a656-6c9439d3ade8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":497,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee32d47-0175-1000-358e-2b75c3522bb3","testStepResults":{"TestStepResult":{"id":"EID6ee32d47-0175-1000-e3d6-376739962b6f","parent":{"ref":"EID6ee32d47-0175-1000-358e-2b75c3522bb3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:06:23Z","duration":497,"status":"SKIPPED"}},"parent":{"ref":"EID6ee32d3e-0175-1000-7b82-68c12b9e421a"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:06:23Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID6812d803-7ce2-4b31-a2c3-0540b14d9e39"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:06:23Z","duration":9,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EIDbf0aa9fa-c67f-4584-8401-b305788d0480","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd5ab164f-9364-413f-9b10-cd9ac9b3fe3c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDd5ab164f-9364-413f-9b10-cd9ac9b3fe3c"}},{"type":"Message","id":"EID708ad491-499b-444f-9c22-9eaae4d9047d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID708ad491-499b-444f-9c22-9eaae4d9047d"}},{"type":"Error","id":"EIDa2b4e737-b7dd-475b-8f87-f330304ed19f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDa2b4e737-b7dd-475b-8f87-f330304ed19f"}},{"type":"ServiceResponse","id":"EID69232494-cc90-4057-83fe-4c7c9a42041a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID69232494-cc90-4057-83fe-4c7c9a42041a"}},{"type":"ServiceResponse","id":"EID7bd3d913-68b8-4907-be98-c9944efb41dc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID7bd3d913-68b8-4907-be98-c9944efb41dc"}},{"type":"Message","id":"EID5db55e68-17f6-46e2-bc8b-41ffad728190","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID5db55e68-17f6-46e2-bc8b-41ffad728190"}},{"type":"ServiceResponse","id":"EIDb4ca7463-ccf7-4a77-9dc7-0223093491cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDb4ca7463-ccf7-4a77-9dc7-0223093491cf"}},{"type":"ServiceEndpoint","id":"EIDf9407ac5-ed71-422b-bcc7-ac6a5f66e782","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID7db33714-7621-44d2-80ea-9cf74aadc795","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID7db33714-7621-44d2-80ea-9cf74aadc795"}},{"type":"GetParameter","id":"EIDa759897f-6fa9-40bb-bfc8-d345c0f02ba7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID31448fcb-a390-4f85-b7fa-d87185ad748c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID31448fcb-a390-4f85-b7fa-d87185ad748c"}},{"type":"ServiceEndpoint","id":"EID4ab2b5a2-eff0-4918-9924-98187bce3e66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDb5f5ae6a-e88a-4bab-9317-6171fa451f82","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDb5f5ae6a-e88a-4bab-9317-6171fa451f82"}},{"type":"Message","id":"EID9a862a9b-32ff-449f-8b9c-c1a05a7911aa","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID9a862a9b-32ff-449f-8b9c-c1a05a7911aa"}},{"type":"ServiceEndpoint","id":"EID7e25500e-050a-4fc6-a597-236ed97c2570","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID14c819c9-d51a-4380-a2fb-edf4c106e984","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8fad5e8e-2024-4b72-88c0-e93ce5291f7d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID25618100-ec94-437a-8500-a41b71c43dd0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0a487310-f46e-4b05-a683-03e9e0435b9c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID95be255c-44fa-4c79-a496-bab412bee2d4","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID95be255c-44fa-4c79-a496-bab412bee2d4"}},{"type":"ServiceEndpoint","id":"EIDc92d138f-6b14-448f-bec1-e30ba4832714","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd254fb3a-dc35-4cff-bf19-f66e06c22285","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDd0f39fdc-2829-435f-9e83-80c2b8f64843","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDd0f39fdc-2829-435f-9e83-80c2b8f64843"}},{"type":"GetParameter","id":"EID4fd14429-e02e-40d4-80bc-8e16501ce11b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb2dd2c43-3fc0-4548-9d52-265649be0cf4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDd3ba1845-7bcb-46d3-96fa-d3a4cca5a404","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID66225936-21be-479f-b1a3-2f92d2b2b299","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4881d89d-19c7-4ea3-aadd-c0a1da9db152","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID30196305-293b-44a4-938b-1b4e520b4765","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7eb177d6-4c1a-480e-8f22-7c17c1d98692","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDd8163b56-4dfb-447c-a221-47c07164b1b9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDd8163b56-4dfb-447c-a221-47c07164b1b9"}},{"type":"ServiceEndpoint","id":"EID813773cb-ef27-4c06-9680-eceead08a5c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDf4aef25b-a378-44ad-9954-deab7d0be128","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDf4aef25b-a378-44ad-9954-deab7d0be128"}},{"type":"Message","id":"EID9844067c-6abe-48b6-883c-f3585ae22f30","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID9844067c-6abe-48b6-883c-f3585ae22f30"}},{"type":"ServiceEndpoint","id":"EID94af022b-26e3-4099-b993-bc805b304442","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa626773b-6ac4-4a7f-8259-958291ed7596","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID38a84270-5b62-4fe1-a1f3-b614e6948f01","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID38a84270-5b62-4fe1-a1f3-b614e6948f01"}},{"type":"Error","id":"EID29355450-bb78-4261-bdae-668e50aa13ad","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID29355450-bb78-4261-bdae-668e50aa13ad"}},{"type":"GetParameter","id":"EID8f45e24f-b7c1-4757-9372-4202f6c24501","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdfc924ff-54a2-41de-81f7-a58e52be3de0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe1db4e59-11e4-4ed9-98e5-2c96af959a70","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDe1db4e59-11e4-4ed9-98e5-2c96af959a70"}},{"type":"ServiceEndpoint","id":"EID4b390d83-9b55-4ba3-8b83-b6987c4a550f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID83fb0b16-9de3-40b9-bb35-7058b3b8571c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2f6a1e54-5af6-4b0b-a68b-f9d08c288f94","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID2f6a1e54-5af6-4b0b-a68b-f9d08c288f94"}},{"type":"ServiceResponse","id":"EIDfd84594b-c0a0-414d-8084-8e9b701675e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDfd84594b-c0a0-414d-8084-8e9b701675e9"}},{"type":"ServiceEndpoint","id":"EIDb56dac84-d315-4706-af04-0161459f3115","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDe41c80c9-46cc-4738-9b60-9178e4401a34","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDe41c80c9-46cc-4738-9b60-9178e4401a34"}},{"type":"Message","id":"EID96dee8b5-c8ea-4fd4-af38-4af72ebf1dc7","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID96dee8b5-c8ea-4fd4-af38-4af72ebf1dc7"}},{"type":"ServiceEndpoint","id":"EIDe2156344-9969-488f-b687-dd037db376e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDab037e56-9f49-4ac1-8f63-3b177aac8c83","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDb27f1e6c-6f13-4b11-bcbb-58094026a474","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID318b35c5-06e3-4cf3-828e-5f9bac0bcdbd","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID318b35c5-06e3-4cf3-828e-5f9bac0bcdbd"}},{"type":"GetParameter","id":"EID05359a2b-a2a0-409a-ada2-9b0b9a7c5e72","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9d6b5b24-8ded-4501-a66d-e5a169540335","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1da67f53-8df6-4a52-8b78-2c38bd0a70a2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID1da67f53-8df6-4a52-8b78-2c38bd0a70a2"}},{"type":"GetParameter","id":"EID4b19e0ec-7669-4460-9e43-6b011c95c1e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDdb2511e1-f30e-406e-97e6-9ed2440d6126","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID612f5e8a-7ae2-4f43-8de4-871246ac814d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID8e9bb5b4-1616-40af-90e3-10d67b5ddfc0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID8e9bb5b4-1616-40af-90e3-10d67b5ddfc0"}},{"type":"GetParameter","id":"EID2505c271-5ea8-42fa-8333-7b01aec6254c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe7c19b50-53c4-4134-867f-2102e0da6f05","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID3483cdfa-7f56-428d-aeb0-a2f11d5b0dbe","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID3483cdfa-7f56-428d-aeb0-a2f11d5b0dbe"}},{"type":"ServiceResponse","id":"EIDbb99e339-8e63-422f-9c2c-73b6a00a6998","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDbb99e339-8e63-422f-9c2c-73b6a00a6998"}},{"type":"ServiceEndpoint","id":"EID382e45d2-87fd-4a39-9692-b8e416334106","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID48b3aa8e-7c4e-4076-b239-cbda274490f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDfabc9eb0-b7f1-42e7-ac1b-5d330fdf7338","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDfabc9eb0-b7f1-42e7-ac1b-5d330fdf7338"}},{"type":"GetParameter","id":"EID602a212a-ff1c-4acf-9da9-f64d7315c144","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID66e014c5-6d85-4fc0-8afe-8eb01e7e6a82","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID54ab0841-0bf0-48fc-af70-db1bdd85056f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID13c146cf-8bbe-4106-89cc-0ec9f990eef9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID39ff539f-cc61-467a-9983-81cd9559e492","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID39ff539f-cc61-467a-9983-81cd9559e492"}},{"type":"Error","id":"EID8a426328-3513-493f-8e8a-cf01ae7b6172","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID8a426328-3513-493f-8e8a-cf01ae7b6172"}},{"type":"Message","id":"EID55f4a93e-6954-40f7-9a55-d4c8cdf68f82","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID55f4a93e-6954-40f7-9a55-d4c8cdf68f82"}},{"type":"ServiceEndpoint","id":"EID927d8932-708e-41ec-a8c9-fe524f6ebec1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID68734ec8-bdfe-48cd-b098-9c4f7aad568c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID68734ec8-bdfe-48cd-b098-9c4f7aad568c"}},{"type":"Message","id":"EID38beec96-b03c-4adf-92cb-b9fbaf2a9ab1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID38beec96-b03c-4adf-92cb-b9fbaf2a9ab1"}},{"type":"Message","id":"EID6d4b06c9-c6da-4ec1-86c3-305c80a0d193","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID6d4b06c9-c6da-4ec1-86c3-305c80a0d193"}},{"type":"ServiceResponse","id":"EID8636c3be-e6a0-4e42-b3e2-af061e561ca8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID8636c3be-e6a0-4e42-b3e2-af061e561ca8"}},{"type":"ServiceResponse","id":"EID01a1e39d-4a10-4d69-8f00-df1c5ef0103a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID01a1e39d-4a10-4d69-8f00-df1c5ef0103a"}},{"type":"Message","id":"EID775f1ead-4a04-4eca-b948-890c52fcaa13","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID775f1ead-4a04-4eca-b948-890c52fcaa13"}},{"type":"LogFile","id":"EID1d6d301d-9f13-4c24-94d7-e4d95ae25bf3","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID1d6d301d-9f13-4c24-94d7-e4d95ae25bf3"}},{"type":"Message","id":"EIDc153008c-92f5-43db-878c-ccf8b02f726f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDc153008c-92f5-43db-878c-ccf8b02f726f"}},{"type":"GetParameter","id":"EID6870c3e8-3a8a-4e30-8d06-722931264e68","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID45da2e2c-50c7-44f3-986e-2f65c28ae7f3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDea71f716-768f-4476-b694-d920775281f5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDea71f716-768f-4476-b694-d920775281f5"}},{"type":"Error","id":"EIDa2c9b57a-b9b0-4163-a712-514308824381","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDa2c9b57a-b9b0-4163-a712-514308824381"}},{"type":"ServiceResponse","id":"EIDff5687e6-b855-4dcc-9843-d181537864d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDff5687e6-b855-4dcc-9843-d181537864d7"}},{"type":"Error","id":"EID5f10a44b-6557-4c64-95b8-01d756a22c9e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID5f10a44b-6557-4c64-95b8-01d756a22c9e"}},{"type":"Message","id":"EID07ddf41d-5262-416d-bad1-3c690abf4f66","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID07ddf41d-5262-416d-bad1-3c690abf4f66"}},{"type":"GetParameter","id":"EIDe6560840-cc88-483b-8680-84c537cd9d9d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID7918d2b8-8082-40c5-9be9-245aa3a85a71","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID5e198dc0-bcb1-4774-a0a5-6885ec53ec25","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID5e198dc0-bcb1-4774-a0a5-6885ec53ec25"}},{"type":"GetParameter","id":"EID4202c208-33b3-49ec-9ed0-d899a26c1888","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9fa6050d-2d44-464d-b7ff-7899c0b56df1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa1656a08-17df-4dd5-ad7a-757836369b5b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDa1656a08-17df-4dd5-ad7a-757836369b5b"}},{"type":"ServiceResponse","id":"EIDd45b185f-4281-4d78-98ce-f960626a1521","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDd45b185f-4281-4d78-98ce-f960626a1521"}},{"type":"Message","id":"EID37c77ab8-1e98-4459-89b3-3f7b4d654ac0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID37c77ab8-1e98-4459-89b3-3f7b4d654ac0"}},{"type":"GetParameter","id":"EID9cb9b723-769e-48d7-bfdb-45a81fc39951","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID9f6e1093-25e2-4937-bf82-068e3d6f8693","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID9f6e1093-25e2-4937-bf82-068e3d6f8693"}},{"type":"ServiceEndpoint","id":"EID2a5e9599-3381-4ed6-af42-3b074505e7a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDd0e3ad41-ab1b-4aa6-b73c-e8f1a8050186","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDd5e8db0b-2533-43cc-aa6c-0ef6b91e8680","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd726735d-e349-40d8-9dd6-d6e6e52f4cbd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDd726735d-e349-40d8-9dd6-d6e6e52f4cbd"}},{"type":"Message","id":"EIDe6c7ea2f-1f57-4863-8983-c971e6c08cc3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDe6c7ea2f-1f57-4863-8983-c971e6c08cc3"}},{"type":"ServiceEndpoint","id":"EID1da857ae-9252-49ad-a9b8-223fa0387a83","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID07f11f46-5112-4bde-9148-3564da8126a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID07f11f46-5112-4bde-9148-3564da8126a2"}},{"type":"GetParameter","id":"EIDef9caf72-a064-4e58-9be2-27064ca08621","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd3c82d6d-5ec0-471a-bf8f-08d44f9ade94","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDd3c82d6d-5ec0-471a-bf8f-08d44f9ade94"}},{"type":"ServiceResponse","id":"EID5ee21fcd-3ff2-48a9-aaa4-30672fa4b556","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID5ee21fcd-3ff2-48a9-aaa4-30672fa4b556"}},{"type":"ServiceEndpoint","id":"EIDfd39d4a8-c550-4a22-98a7-ef27f8086038","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID935e02ba-f0f5-436d-925c-a6b271f4d9c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID935e02ba-f0f5-436d-925c-a6b271f4d9c8"}},{"type":"ServiceResponse","id":"EIDc61f6080-cec0-41db-853e-18bb4485014b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDc61f6080-cec0-41db-853e-18bb4485014b"}},{"type":"ServiceEndpoint","id":"EID9ca40c92-9bab-4efa-a3cc-f7160872e0a8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID0fd53386-4c18-4d0a-91ac-25f1545bc20c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID0fd53386-4c18-4d0a-91ac-25f1545bc20c"}},{"type":"ServiceEndpoint","id":"EIDd1b7ea28-a863-4f51-b652-f0f000e78a79","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID48e321bc-c3bc-4c01-a886-f2fb95fda702","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID5917af01-cefd-4cb0-886a-a29cf84b3650","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID5917af01-cefd-4cb0-886a-a29cf84b3650"}},{"type":"ServiceResponse","id":"EID45caac5c-81d7-4651-8bc2-8117b3f79346","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID45caac5c-81d7-4651-8bc2-8117b3f79346"}},{"type":"Error","id":"EID91da485d-e2eb-477e-9702-0ed0c2b64fb8","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID91da485d-e2eb-477e-9702-0ed0c2b64fb8"}},{"type":"ServiceResponse","id":"EID56195e77-44a7-4816-875b-6a46af02d8b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID56195e77-44a7-4816-875b-6a46af02d8b6"}},{"type":"ServiceResponse","id":"EID65c49752-1abf-4ea1-8bca-59e2bbb7e49f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID65c49752-1abf-4ea1-8bca-59e2bbb7e49f"}},{"type":"Message","id":"EID1b75bc01-3b2c-48ef-a419-d1bf03b2596b","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID1b75bc01-3b2c-48ef-a419-d1bf03b2596b"}},{"type":"ServiceEndpoint","id":"EID1573aa4f-cb71-41ab-8b73-c2977dca0035","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID8b40df60-97ce-499b-a599-e6af6b5bfb7c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID8b40df60-97ce-499b-a599-e6af6b5bfb7c"}},{"type":"GetParameter","id":"EID9e7e9f98-5bba-4725-bb33-39da078dc7da","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb2184452-3ff0-4330-ad44-95a6cc2d4e6f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDb2184452-3ff0-4330-ad44-95a6cc2d4e6f"}},{"type":"ServiceResponse","id":"EIDa941c3c2-5e92-4b2b-b6e7-73f0eab02853","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDa941c3c2-5e92-4b2b-b6e7-73f0eab02853"}},{"type":"ServiceEndpoint","id":"EIDaec31793-97d6-4a90-a5ef-67c58293fb86","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID3a772445-bd91-4caf-9a91-25e5f70530ce","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID3a772445-bd91-4caf-9a91-25e5f70530ce"}},{"type":"ServiceEndpoint","id":"EID96a9f36f-b485-47d8-8431-485f50a7567a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID1dcc2f22-7ef0-4627-bb02-416875357d7b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0996f64b-31f6-4ec5-8621-d49fd15ef88f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID0996f64b-31f6-4ec5-8621-d49fd15ef88f"}},{"type":"Error","id":"EID1488e5bc-2466-4cc2-bbd7-928e132fa0a1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID1488e5bc-2466-4cc2-bbd7-928e132fa0a1"}},{"type":"ServiceEndpoint","id":"EIDe6a6a5a3-46b4-46ef-aafe-f732f6c682cd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDdc9a784e-db2a-418d-b88c-7681e62c06aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID784af662-fcb7-4e1e-82a8-c0c765cc48f6","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID784af662-fcb7-4e1e-82a8-c0c765cc48f6"}},{"type":"GetParameter","id":"EID21a91b8f-2cf6-4d09-a004-d28dee7978a4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb8c4a454-a612-4323-84cb-8de65e30de2c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6c298dc5-24f6-4cb1-9f72-981c6618336e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID6c298dc5-24f6-4cb1-9f72-981c6618336e"}},{"type":"ServiceEndpoint","id":"EID2dba7c6b-1310-4fac-8986-8d837e145a0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID817d1d53-c689-49fa-ba07-9f7a3372030d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf3935679-6c51-41dc-806d-f78bc86ae7a6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDf3935679-6c51-41dc-806d-f78bc86ae7a6"}},{"type":"GetParameter","id":"EID8c1e4f72-c106-415c-8928-39d48eae573a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDaee92ca1-51bd-40d1-9c9f-4720cc26224a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDaee92ca1-51bd-40d1-9c9f-4720cc26224a"}},{"type":"GetParameter","id":"EID9f0e2e11-ad0d-4005-a8b0-17d4421826f1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID4f3a460c-9c8a-4863-93f2-3b1286764ae6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDa78470c6-1631-4cff-8233-deb7318a131e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDaf41bf32-3546-4e8d-a2ab-a459aa9d5aad","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDaf41bf32-3546-4e8d-a2ab-a459aa9d5aad"}},{"type":"ServiceResponse","id":"EIDf2909364-765b-4b80-8c4c-f70e818d8294","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EIDf2909364-765b-4b80-8c4c-f70e818d8294"}},{"type":"Message","id":"EID973c9af3-a56b-47f7-89e0-e05d8564ed3f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID973c9af3-a56b-47f7-89e0-e05d8564ed3f"}},{"type":"ServiceResponse","id":"EID6bec038a-111e-4b5c-8e0e-4c1a2e178e4d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID6bec038a-111e-4b5c-8e0e-4c1a2e178e4d"}},{"type":"ServiceEndpoint","id":"EID91656ed6-0443-440b-941c-be3d8d446193","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID63c5e522-f415-4a17-b612-097ec88c9385","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID63c5e522-f415-4a17-b612-097ec88c9385"}},{"type":"Message","id":"EID6e0c9625-0a4d-4906-88a9-02864060ca6a","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID6e0c9625-0a4d-4906-88a9-02864060ca6a"}},{"type":"ServiceResponse","id":"EID876ef7c0-c48e-4f54-a113-56f0959a3839","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID876ef7c0-c48e-4f54-a113-56f0959a3839"}},{"type":"GetParameter","id":"EIDe481dabd-6350-4146-8e90-8fd88ef73e2e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID1e008288-2d5b-4800-8a49-21c8673088f4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID675dc6dd-c6a3-4722-a7b6-3fa1b5329968","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID675dc6dd-c6a3-4722-a7b6-3fa1b5329968"}},{"type":"GetParameter","id":"EID8f6a0139-dcc5-458d-9300-eae62a56fddc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID451a5efc-38fa-4ac4-bbc9-884091ac8591","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID6812d803-7ce2-4b31-a2c3-0540b14d9e39/Attachments/EID451a5efc-38fa-4ac4-bbc9-884091ac8591"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:06:13Z","duration":9890,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:35.071 [print] EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:35.071 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:06:35.072 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:35.072 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:35.072 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a581ace8-1be9-4ab0-9997-d33ae7c378ea.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:06:35.072 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a581ace8-1be9-4ab0-9997-d33ae7c378ea.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:35.072 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa581ace8-1be9-4ab0-9997-d33ae7c378ea/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.006
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.008
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.003
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.001
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:06:35.095 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:06:35.095 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.009
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
24.752
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:08.029 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.198
11:14:08.029 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 249
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}}}

11:14:15.225 response time in milliseconds: 6531.99
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:14 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:11 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/80987e45-91b1-4a1e-ae6a-f743ba213f39.json","testRuns":{"TestRun":{"id":"EID80987e45-91b1-4a1e-ae6a-f743ba213f39","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:09.366Z","testTasks":{"TestTask":{"id":"EID52d5a1f2-5888-446f-b1f9-f2de97e61d30","parent":{"ref":"EID80987e45-91b1-4a1e-ae6a-f743ba213f39"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDa3f6a611-6c75-4068-9908-a3acc6e5e932"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDa3f6a611-6c75-4068-9908-a3acc6e5e932","remoteResource":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:08.475Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:08.86Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:15.228 [print] EID80987e45-91b1-4a1e-ae6a-f743ba213f39
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:15.228 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:15.228 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:15.228 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/80987e45-91b1-4a1e-ae6a-f743ba213f39.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:15.228 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:15.229 [print] statuspath TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39
* print 'progresspath ', progresspath 0.000
11:14:15.229 [print] progresspath  TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/progress
Given path progresspath 0.000
When method GET 0.539
11:14:15.229 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:15.768 response time in milliseconds: 538.19
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:15 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["28.10.2020 11:14:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:09 UTC 2020)","28.10.2020 11:14:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:09 - Preparing 1 Test Task:","28.10.2020 11:14:09 -  TestTask 1 (52d5a1f2-5888-446f-b1f9-f2de97e61d30)","28.10.2020 11:14:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:09 -  with parameters: ","28.10.2020 11:14:09 - etf.testcases = *","28.10.2020 11:14:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:09 - Setting state to CREATED","28.10.2020 11:14:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:11 - Starting TestRun.80987e45-91b1-4a1e-ae6a-f743ba213f39 at 2020-10-28T11:14:12Z","28.10.2020 11:14:12 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:13 - Project Properties: ","28.10.2020 11:14:13 - etf.testcases - * ","28.10.2020 11:14:13 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","28.10.2020 11:14:13 - username -  ","28.10.2020 11:14:13 - authUser -  ","28.10.2020 11:14:13 - authMethod - basic ","28.10.2020 11:14:13 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:14:15.768 [print] {
  "val": "45",
  "max": "46",
  "log": [
    "28.10.2020 11:14:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:09 UTC 2020)",
    "28.10.2020 11:14:09 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:14:09 - Preparing 1 Test Task:",
    "28.10.2020 11:14:09 -  TestTask 1 (52d5a1f2-5888-446f-b1f9-f2de97e61d30)",
    "28.10.2020 11:14:09 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:14:09 -  with parameters: ",
    "28.10.2020 11:14:09 - etf.testcases = *",
    "28.10.2020 11:14:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:14:09 - Setting state to CREATED",
    "28.10.2020 11:14:09 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:11 - Starting TestRun.80987e45-91b1-4a1e-ae6a-f743ba213f39 at 2020-10-28T11:14:12Z",
    "28.10.2020 11:14:12 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:13 - Project Properties: ",
    "28.10.2020 11:14:13 - etf.testcases - * ",
    "28.10.2020 11:14:13 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ",
    "28.10.2020 11:14:13 - username -  ",
    "28.10.2020 11:14:13 - authUser -  ",
    "28.10.2020 11:14:13 - authMethod - basic ",
    "28.10.2020 11:14:13 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 13.105
11:14:15.768 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:16.285 response time in milliseconds: 515.86
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:16 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["28.10.2020 11:14:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:09 UTC 2020)","28.10.2020 11:14:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:09 - Preparing 1 Test Task:","28.10.2020 11:14:09 -  TestTask 1 (52d5a1f2-5888-446f-b1f9-f2de97e61d30)","28.10.2020 11:14:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:09 -  with parameters: ","28.10.2020 11:14:09 - etf.testcases = *","28.10.2020 11:14:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:09 - Setting state to CREATED","28.10.2020 11:14:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:11 - Starting TestRun.80987e45-91b1-4a1e-ae6a-f743ba213f39 at 2020-10-28T11:14:12Z","28.10.2020 11:14:12 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:13 - Project Properties: ","28.10.2020 11:14:13 - etf.testcases - * ","28.10.2020 11:14:13 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","28.10.2020 11:14:13 - username -  ","28.10.2020 11:14:13 - authUser -  ","28.10.2020 11:14:13 - authMethod - basic ","28.10.2020 11:14:13 - TestRunTask initialized"]}

11:14:16.290 retry condition not satisfied: response.val == response.max
11:14:16.290 sleeping before retry #1
11:14:21.291 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:21.866 response time in milliseconds: 574.79
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:21 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["28.10.2020 11:14:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:09 UTC 2020)","28.10.2020 11:14:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:09 - Preparing 1 Test Task:","28.10.2020 11:14:09 -  TestTask 1 (52d5a1f2-5888-446f-b1f9-f2de97e61d30)","28.10.2020 11:14:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:09 -  with parameters: ","28.10.2020 11:14:09 - etf.testcases = *","28.10.2020 11:14:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:09 - Setting state to CREATED","28.10.2020 11:14:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:11 - Starting TestRun.80987e45-91b1-4a1e-ae6a-f743ba213f39 at 2020-10-28T11:14:12Z","28.10.2020 11:14:12 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:13 - Project Properties: ","28.10.2020 11:14:13 - etf.testcases - * ","28.10.2020 11:14:13 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","28.10.2020 11:14:13 - username -  ","28.10.2020 11:14:13 - authUser -  ","28.10.2020 11:14:13 - authMethod - basic ","28.10.2020 11:14:13 - TestRunTask initialized","28.10.2020 11:14:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:14:21.866 retry condition not satisfied: response.val == response.max
11:14:21.866 sleeping before retry #2
11:14:26.868 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:28.874 response time in milliseconds: 2005.50
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:14:28 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:14:28.874 retry condition satisfied
* print response 0.000
11:14:28.874 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.876
11:14:28.875 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:32.738 response time in milliseconds: 2908.32
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:14:31 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:14:26 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/80987e45-91b1-4a1e-ae6a-f743ba213f39.json","testRuns":{"TestRun":{"id":"EID80987e45-91b1-4a1e-ae6a-f743ba213f39","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:09.366Z","testTasks":{"TestTask":{"id":"EID52d5a1f2-5888-446f-b1f9-f2de97e61d30","parent":{"ref":"EID80987e45-91b1-4a1e-ae6a-f743ba213f39"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDa3f6a611-6c75-4068-9908-a3acc6e5e932"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDa3f6a611-6c75-4068-9908-a3acc6e5e932","remoteResource":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:08.475Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:08.86Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a","testObject":{"ref":"EIDa3f6a611-6c75-4068-9908-a3acc6e5e932"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eea57de-0175-1000-ec18-d01d7855251a","testCaseResults":{"TestCaseResult":[{"id":"EID6eea57df-0175-1000-2d7d-0298d5e6c265","testStepResults":{"TestStepResult":[{"id":"EID6eea57e4-0175-1000-9642-debdad7e5dd4","parent":{"ref":"EID6eea57df-0175-1000-2d7d-0298d5e6c265"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:14:13Z","duration":25,"status":"PASSED"},{"id":"EID6eea57fd-0175-1000-f2f6-9afcec7cb98a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea58bd-0175-1000-cf7d-9a78b9abc0bc","parent":{"ref":"EID6eea57fd-0175-1000-f2f6-9afcec7cb98a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea58bd-0175-1000-4507-29661af365f5","parent":{"ref":"EID6eea57fd-0175-1000-f2f6-9afcec7cb98a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea58bd-0175-1000-70b1-2e684bd385e5","parent":{"ref":"EID6eea57fd-0175-1000-f2f6-9afcec7cb98a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea58bd-0175-1000-2c6e-e0504e3a0064","parent":{"ref":"EID6eea57fd-0175-1000-f2f6-9afcec7cb98a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d01062f-b08c-4763-8e44-33d57d975df3"},{"ref":"EID38ddde6e-7888-4b0b-9f47-183c510ec3ee"},{"ref":"EIDea668053-41a4-4e39-a78e-4ea653f39373"}]},"parent":{"ref":"EID6eea57df-0175-1000-2d7d-0298d5e6c265"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:14:13Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea57de-0175-1000-ec18-d01d7855251a"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:14:13Z","duration":228,"status":"PASSED"},{"id":"EID6eea58c4-0175-1000-ed0e-94b1cba8f586","testStepResults":{"TestStepResult":{"id":"EID6eea58c4-0175-1000-c7d9-63222604caf7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5914-0175-1000-7a79-721f6e65ddfd","parent":{"ref":"EID6eea58c4-0175-1000-c7d9-63222604caf7"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea5914-0175-1000-695c-9deb6b8aa0ce","parent":{"ref":"EID6eea58c4-0175-1000-c7d9-63222604caf7"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea5914-0175-1000-927b-96ed7fa6e617","parent":{"ref":"EID6eea58c4-0175-1000-c7d9-63222604caf7"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc3502f8c-c1e9-40b6-8493-b536ea59b2b8"},{"ref":"EIDaca482d5-b4aa-489b-8630-b2d351b1ffd6"},{"ref":"EID45df123f-67ed-4815-a2bd-46f5fbabb044"}]},"parent":{"ref":"EID6eea58c4-0175-1000-ed0e-94b1cba8f586"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:14:13Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea57de-0175-1000-ec18-d01d7855251a"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:14:13Z","duration":80,"status":"PASSED"}]},"parent":{"ref":"EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:14:13Z","duration":310,"status":"PASSED"},{"id":"EID6eea5914-0175-1000-5ce0-e44d38995bf0","testCaseResults":{"TestCaseResult":[{"id":"EID6eea5914-0175-1000-8faf-38e2ba443f8e","testStepResults":{"TestStepResult":[{"id":"EID6eea5914-0175-1000-7677-8bb8a0f0356e","parent":{"ref":"EID6eea5914-0175-1000-8faf-38e2ba443f8e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:14:13Z","duration":20,"status":"PASSED"},{"id":"EID6eea5914-0175-1000-d4ca-3aa6a3a47dd2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea59f3-0175-1000-5644-74dbbd1d83c7","parent":{"ref":"EID6eea5914-0175-1000-d4ca-3aa6a3a47dd2"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea59f3-0175-1000-e246-144c5f9f950c","parent":{"ref":"EID6eea5914-0175-1000-d4ca-3aa6a3a47dd2"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea59f3-0175-1000-20f2-3857e20f7b8e","parent":{"ref":"EID6eea5914-0175-1000-d4ca-3aa6a3a47dd2"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea59f3-0175-1000-db45-312eafe4455f","parent":{"ref":"EID6eea5914-0175-1000-d4ca-3aa6a3a47dd2"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea59f3-0175-1000-36ef-eab7615dd64a","parent":{"ref":"EID6eea5914-0175-1000-d4ca-3aa6a3a47dd2"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd7ce5cf-16cb-414a-b2fb-f6b30d769843"},{"ref":"EID42eb0575-d217-46e9-902f-0dba8f97a83d"},{"ref":"EID7864087b-ce0a-4eff-902a-ba2945a02eb6"}]},"parent":{"ref":"EID6eea5914-0175-1000-8faf-38e2ba443f8e"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:14:13Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:14:13Z","duration":224,"status":"PASSED"},{"id":"EID6eea59f4-0175-1000-230f-d70198327670","testStepResults":{"TestStepResult":[{"id":"EID6eea59f4-0175-1000-6532-ab9c4e4c839c","attachments":{"attachment":[{"ref":"EIDb81cddf8-3daa-4725-9f1c-8513396f4d7a"},{"ref":"EIDbc8d0275-93ab-4417-9799-b5bc7c9356f6"}]},"parent":{"ref":"EID6eea59f4-0175-1000-230f-d70198327670"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:14:13Z","duration":53,"status":"PASSED"},{"id":"EID6eea5a56-0175-1000-2f8f-ea2904e14728","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5b0b-0175-1000-bf24-7439c0e5c8a7","parent":{"ref":"EID6eea5a56-0175-1000-2f8f-ea2904e14728"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea5b0b-0175-1000-3bd4-23446b4fd5b8","parent":{"ref":"EID6eea5a56-0175-1000-2f8f-ea2904e14728"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea5b0b-0175-1000-1e0c-d909dd8c71ab","parent":{"ref":"EID6eea5a56-0175-1000-2f8f-ea2904e14728"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6eea5b0b-0175-1000-d518-8a0b884c03dd","parent":{"ref":"EID6eea5a56-0175-1000-2f8f-ea2904e14728"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDffb9c62c-8132-4b13-994b-fb8193e9aee0"},{"ref":"EIDed6ce70c-93a1-41b5-b9d6-42dd88876794"},{"ref":"EID9a1f098f-93a2-4d20-be4f-233c08e6680d"}]},"parent":{"ref":"EID6eea59f4-0175-1000-230f-d70198327670"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:14:13Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:14:13Z","duration":279,"status":"PASSED"},{"id":"EID6eea5b0b-0175-1000-6dd7-b2b85a4cf9f3","testStepResults":{"TestStepResult":[{"id":"EID6eea5b13-0175-1000-065b-49627f6abb65","attachments":{"attachment":[{"ref":"EIDb08c5bf5-12c8-4f85-8544-468313b090b2"},{"ref":"EID9841bfee-b4f1-4b3e-b39b-1535883be034"}]},"parent":{"ref":"EID6eea5b0b-0175-1000-6dd7-b2b85a4cf9f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:14:13Z","duration":61,"status":"PASSED"},{"id":"EID6eea5b71-0175-1000-f4e8-e25d4e3ecdf1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5bd4-0175-1000-3762-30a4d40176f1","parent":{"ref":"EID6eea5b71-0175-1000-f4e8-e25d4e3ecdf1"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5bd4-0175-1000-93eb-a4f328b50ba6","parent":{"ref":"EID6eea5b71-0175-1000-f4e8-e25d4e3ecdf1"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5bd5-0175-1000-4d86-7643292912fb","parent":{"ref":"EID6eea5b71-0175-1000-f4e8-e25d4e3ecdf1"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5bd5-0175-1000-367f-2a04c0106547","parent":{"ref":"EID6eea5b71-0175-1000-f4e8-e25d4e3ecdf1"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5bd5-0175-1000-b3e1-8f91d62e2b1a","parent":{"ref":"EID6eea5b71-0175-1000-f4e8-e25d4e3ecdf1"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5e1fb1be-118f-4e97-8221-64c00fa359d3"},{"ref":"EID22d6e88f-64a6-49b5-b267-9955ca0dd634"},{"ref":"EID706491b6-0863-4507-89ce-985f32f8fc28"}]},"parent":{"ref":"EID6eea5b0b-0175-1000-6dd7-b2b85a4cf9f3"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:14:14Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:14:13Z","duration":202,"status":"PASSED"},{"id":"EID6eea5bde-0175-1000-ed89-61a660fa0a1d","testStepResults":{"TestStepResult":[{"id":"EID6eea5bde-0175-1000-2ecf-31e018538784","attachments":{"attachment":[{"ref":"EIDb31a8759-575a-48cb-b4f0-c0b40e767fe5"},{"ref":"EID26906f4b-c26e-4834-8db8-740b115b9f2b"}]},"parent":{"ref":"EID6eea5bde-0175-1000-ed89-61a660fa0a1d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:14:14Z","duration":100,"status":"PASSED"},{"id":"EID6eea5c70-0175-1000-3b14-35a2b0e9b9ac","parent":{"ref":"EID6eea5bde-0175-1000-ed89-61a660fa0a1d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5c70-0175-1000-a165-d0c7b60f5ed4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5ccb-0175-1000-3528-a1fa80576517","parent":{"ref":"EID6eea5c70-0175-1000-a165-d0c7b60f5ed4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5ccb-0175-1000-a3c8-2dc6fb34700e","parent":{"ref":"EID6eea5c70-0175-1000-a165-d0c7b60f5ed4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5ccb-0175-1000-445e-608f641b02c2","parent":{"ref":"EID6eea5c70-0175-1000-a165-d0c7b60f5ed4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5ccb-0175-1000-3c47-cd0e0d0438df","parent":{"ref":"EID6eea5c70-0175-1000-a165-d0c7b60f5ed4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe5cad5d0-0be6-4669-a947-bad5b2f0c333"},{"ref":"EID94273312-785e-40e1-94a0-2786ea0e3047"},{"ref":"EIDde10a744-4c05-451e-918f-9f88ddd5051b"}]},"parent":{"ref":"EID6eea5bde-0175-1000-ed89-61a660fa0a1d"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:14:14Z","duration":21,"status":"PASSED"},{"id":"EID6eea5ccc-0175-1000-4b0e-1c1510837839","attachments":{"attachment":{"ref":"EID21a80654-5728-4532-91ed-61d618697fbb"}},"parent":{"ref":"EID6eea5bde-0175-1000-ed89-61a660fa0a1d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5cdf-0175-1000-9479-63993137cc28","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5d64-0175-1000-0e7f-5e5215d7be50","parent":{"ref":"EID6eea5cdf-0175-1000-9479-63993137cc28"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5d64-0175-1000-cbd9-927f07e10cbd","parent":{"ref":"EID6eea5cdf-0175-1000-9479-63993137cc28"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5d64-0175-1000-5b4a-ad884383a38a","parent":{"ref":"EID6eea5cdf-0175-1000-9479-63993137cc28"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5d64-0175-1000-54b1-838c2dde5069","parent":{"ref":"EID6eea5cdf-0175-1000-9479-63993137cc28"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5d64-0175-1000-d4bb-8d2bbf63d0be","parent":{"ref":"EID6eea5cdf-0175-1000-9479-63993137cc28"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID351c8fed-7d6f-43f3-a2fe-7032cd834d53"},{"ref":"EIDbf68091d-876d-4dd0-9c72-e26da3e117f7"},{"ref":"EID95d16fe9-4c96-4bff-b73d-dbfa19f1edc0"}]},"parent":{"ref":"EID6eea5bde-0175-1000-ed89-61a660fa0a1d"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:14:14Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:14:14Z","duration":390,"status":"PASSED"},{"id":"EID6eea5d64-0175-1000-aad0-3b0bd0b6af35","testStepResults":{"TestStepResult":[{"id":"EID6eea5d64-0175-1000-e385-55dbcfbaf3f7","attachments":{"attachment":[{"ref":"EID4a5344d1-974d-4e6d-9feb-187289a48230"},{"ref":"EIDb865c178-e3df-48ac-811c-ef1201615497"}]},"parent":{"ref":"EID6eea5d64-0175-1000-aad0-3b0bd0b6af35"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:14:14Z","duration":78,"status":"PASSED"},{"id":"EID6eea5deb-0175-1000-d7a6-b2e97d5582e9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5e59-0175-1000-35d9-188e9a94359c","parent":{"ref":"EID6eea5deb-0175-1000-d7a6-b2e97d5582e9"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5e59-0175-1000-99a2-12f7b57fdad3","parent":{"ref":"EID6eea5deb-0175-1000-d7a6-b2e97d5582e9"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5e59-0175-1000-991a-010d42f55bd0","parent":{"ref":"EID6eea5deb-0175-1000-d7a6-b2e97d5582e9"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5e59-0175-1000-3680-9a8f7446e7c6","parent":{"ref":"EID6eea5deb-0175-1000-d7a6-b2e97d5582e9"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID16c8d781-871f-4d05-a15f-830b304e62fb"},{"ref":"EIDd3041c24-26be-462f-ae78-e997459e6068"},{"ref":"EID4ad6632a-8fbb-41de-ab5c-eda00aaeb26a"}]},"parent":{"ref":"EID6eea5d64-0175-1000-aad0-3b0bd0b6af35"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:14:14Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:14:14Z","duration":253,"status":"PASSED"},{"id":"EID6eea5e61-0175-1000-3750-eba20585401b","testStepResults":{"TestStepResult":[{"id":"EID6eea5e61-0175-1000-e713-0f59dc66a465","attachments":{"attachment":[{"ref":"EIDaff91f9a-b793-4665-82f5-55c4668163fc"},{"ref":"EID0064a470-99c4-416b-978c-161a6721df51"}]},"parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:14:14Z","duration":68,"status":"PASSED"},{"id":"EID6eea5eeb-0175-1000-f757-220e59717b49","parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6eea5eeb-0175-1000-5fa5-c56e74b03da1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea5f5c-0175-1000-a1bb-73bee1a86b92","parent":{"ref":"EID6eea5eeb-0175-1000-5fa5-c56e74b03da1"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea5f5c-0175-1000-8869-949dfa93ff7f","parent":{"ref":"EID6eea5eeb-0175-1000-5fa5-c56e74b03da1"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea5f5c-0175-1000-ace4-1d40c42af8fa","parent":{"ref":"EID6eea5eeb-0175-1000-5fa5-c56e74b03da1"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea5f5c-0175-1000-e5e6-4f0d59d6ca1e","parent":{"ref":"EID6eea5eeb-0175-1000-5fa5-c56e74b03da1"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4608bf7e-9b98-4de5-bb12-a237bcc1dd51"},{"ref":"EID8c9c2b6d-6249-4d43-b3c1-84f0d58817bf"},{"ref":"EIDd90ed26c-d39d-4164-8b9c-ce34fedf9ff0"}]},"parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:14:14Z","duration":25,"status":"PASSED"},{"id":"EID6eea5f66-0175-1000-1423-32f50b8bbbfa","attachments":{"attachment":{"ref":"EIDb6c4b73a-1b2a-4a1f-9ef7-bdf2b33f4275"}},"parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea5f75-0175-1000-3005-8d046ebb52f8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea603c-0175-1000-369a-83002fe76a60","parent":{"ref":"EID6eea5f75-0175-1000-3005-8d046ebb52f8"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea603c-0175-1000-efdd-e2060da7b668","parent":{"ref":"EID6eea5f75-0175-1000-3005-8d046ebb52f8"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea603c-0175-1000-7727-228612fcae73","parent":{"ref":"EID6eea5f75-0175-1000-3005-8d046ebb52f8"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID210139de-f7e8-4742-8744-59dba0b6f921"},{"ref":"EID63cc388a-f353-4961-948e-133480d39667"},{"ref":"EIDc2e95fe3-f58e-4dd0-9cfb-d813de8dff83"}]},"parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:14:15Z","duration":78,"status":"PASSED"},{"id":"EID6eea603c-0175-1000-ce53-cf2054d41d6b","attachments":{"attachment":{"ref":"EID4d1bc073-66df-4a63-9091-c41fb64774ca"}},"parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:14:15Z","duration":1,"status":"PASSED"},{"id":"EID6eea6049-0175-1000-b55c-1a184cc7cc5a","attachments":{"attachment":{"ref":"EID50cf04a3-6eec-4ac4-a018-05db95ac6879"}},"parent":{"ref":"EID6eea5e61-0175-1000-3750-eba20585401b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:14:14Z","duration":501,"status":"PASSED"},{"id":"EID6eea6056-0175-1000-3927-068382177baa","testStepResults":{"TestStepResult":[{"id":"EID6eea6056-0175-1000-ec16-e569ed68b9bd","attachments":{"attachment":[{"ref":"EID8730e2a0-8750-4e77-9253-bfb47c647c25"},{"ref":"EIDf63de5ea-8d3e-4aed-8bfc-f476912fdfb5"}]},"parent":{"ref":"EID6eea6056-0175-1000-3927-068382177baa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:14:15Z","duration":98,"status":"PASSED"},{"id":"EID6eea60e7-0175-1000-ae57-d457a4b3a9b7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6189-0175-1000-73af-ba490c608bac","parent":{"ref":"EID6eea60e7-0175-1000-ae57-d457a4b3a9b7"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea6189-0175-1000-f039-c0cb49525f97","parent":{"ref":"EID6eea60e7-0175-1000-ae57-d457a4b3a9b7"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea6189-0175-1000-ef72-cacaf69d5ec0","parent":{"ref":"EID6eea60e7-0175-1000-ae57-d457a4b3a9b7"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea6189-0175-1000-8c45-bf6a3178d380","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea60e7-0175-1000-ae57-d457a4b3a9b7"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID7c416046-ce9b-4e63-8a3d-a82063685a0a"},{"ref":"EID967f48d0-5377-4424-8a5f-a4b0843c5151"},{"ref":"EID0abceb5d-8b04-4c87-8c7d-1698bb51134f"}]},"parent":{"ref":"EID6eea6056-0175-1000-3927-068382177baa"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:14:15Z","duration":20,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:14:15Z","duration":307,"status":"PASSED_MANUAL"},{"id":"EID6eea6189-0175-1000-9f2e-f6c74a9a1d7f","testStepResults":{"TestStepResult":{"id":"EID6eea6189-0175-1000-fd0f-7fafcfd000e3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6237-0175-1000-2979-a0873649c904","parent":{"ref":"EID6eea6189-0175-1000-fd0f-7fafcfd000e3"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea6237-0175-1000-99e6-b2e36bfbdbab","parent":{"ref":"EID6eea6189-0175-1000-fd0f-7fafcfd000e3"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea6237-0175-1000-710e-98bb9bdc27df","parent":{"ref":"EID6eea6189-0175-1000-fd0f-7fafcfd000e3"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea6237-0175-1000-e5e6-5b1ccb9bf3c7","parent":{"ref":"EID6eea6189-0175-1000-fd0f-7fafcfd000e3"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9ba85728-9703-4678-abfd-e4189243b6b1"},{"ref":"EID77f09619-46ed-411b-8d4e-707970dc0b78"},{"ref":"EID25dee3b0-2c20-4320-9f5c-bf4f4c430a7b"}]},"parent":{"ref":"EID6eea6189-0175-1000-9f2e-f6c74a9a1d7f"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:14:15Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:14:15Z","duration":175,"status":"PASSED"},{"id":"EID6eea6238-0175-1000-52ae-55b08ae3ff39","testStepResults":{"TestStepResult":{"id":"EID6eea6238-0175-1000-61c1-77a81eb44ce6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea62d1-0175-1000-604b-e9c309453a3c","parent":{"ref":"EID6eea6238-0175-1000-61c1-77a81eb44ce6"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea62d1-0175-1000-18bd-a28ecc656e81","parent":{"ref":"EID6eea6238-0175-1000-61c1-77a81eb44ce6"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea62d1-0175-1000-a57f-6d100cd3a3b1","parent":{"ref":"EID6eea6238-0175-1000-61c1-77a81eb44ce6"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6eea62d1-0175-1000-df41-7370f5c6f01e","parent":{"ref":"EID6eea6238-0175-1000-61c1-77a81eb44ce6"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:14:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa9ba76d6-f2f3-4969-80e2-86ad0892ebfe"},{"ref":"EID8b18f009-2164-4e3e-b303-697ad55e12af"},{"ref":"EIDabb26276-a48f-4f1b-83a4-b8b782344a12"}]},"parent":{"ref":"EID6eea6238-0175-1000-52ae-55b08ae3ff39"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:14:15Z","duration":31,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:14:15Z","duration":153,"status":"PASSED"},{"id":"EID6eea62d2-0175-1000-ff48-ce6f19f115ea","testStepResults":{"TestStepResult":[{"id":"EID6eea62d2-0175-1000-d965-bb97f82805d1","attachments":{"attachment":[{"ref":"EID60cdfe66-60d1-4b93-801e-f19bd30322e8"},{"ref":"EID2cbed55d-53fb-4d31-a17c-9144eec50b18"},{"ref":"EIDb4c27eb6-8748-49bb-8b61-92db0f2f510b"},{"ref":"EID3706f3f3-bd83-4245-8294-dd24f1ed24af"},{"ref":"EIDa0e370ba-f5f6-4e77-a624-62cac4c5a569"},{"ref":"EID78a54589-8f85-4fdd-8fd9-1a4c62e6ad5b"},{"ref":"EIDb905a9b2-2ac8-4f0e-85a8-c85fce26f16a"},{"ref":"EID138ec0c0-f69e-441a-833f-f49cd4ab0958"},{"ref":"EID782f12a6-76b6-41af-b27a-386867f485b0"},{"ref":"EIDc68dfad5-d311-4e2f-8774-cb6e79999693"},{"ref":"EID1146ab2e-a432-48bf-affc-2ddfbb8891e3"},{"ref":"EIDfa690940-a682-4220-b5a7-62737ad141dd"}]},"parent":{"ref":"EID6eea62d2-0175-1000-ff48-ce6f19f115ea"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:14:15Z","duration":248,"status":"PASSED"},{"id":"EID6eea6517-0175-1000-917a-3f9eb70444e1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea658d-0175-1000-ef55-ef488a2dd106","parent":{"ref":"EID6eea6517-0175-1000-917a-3f9eb70444e1"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea658d-0175-1000-d5e0-b0c1a68f86a1","parent":{"ref":"EID6eea6517-0175-1000-917a-3f9eb70444e1"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea658d-0175-1000-753d-505ce87f797e","parent":{"ref":"EID6eea6517-0175-1000-917a-3f9eb70444e1"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea658d-0175-1000-c7b4-0f0b24413de4","parent":{"ref":"EID6eea6517-0175-1000-917a-3f9eb70444e1"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea658d-0175-1000-7243-ae0fd32c5297","parent":{"ref":"EID6eea6517-0175-1000-917a-3f9eb70444e1"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDee81a288-5d23-4c40-a22a-b01e666e0ca7"},{"ref":"EIDb34810d2-379c-4a67-aa0c-daef1ee0dfe6"},{"ref":"EID642b55fb-08a6-4c04-beb4-d7a371e1e597"}]},"parent":{"ref":"EID6eea62d2-0175-1000-ff48-ce6f19f115ea"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:14:16Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:14:15Z","duration":710,"status":"PASSED"},{"id":"EID6eea6598-0175-1000-e040-3ab59acdcafd","testStepResults":{"TestStepResult":{"id":"EID6eea6598-0175-1000-a6f5-ce184cf890cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea65f1-0175-1000-4352-e837fafd26f8","parent":{"ref":"EID6eea6598-0175-1000-a6f5-ce184cf890cf"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea65f1-0175-1000-14a2-d2f95581538a","parent":{"ref":"EID6eea6598-0175-1000-a6f5-ce184cf890cf"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea65f1-0175-1000-5a09-e0b7f6548cff","parent":{"ref":"EID6eea6598-0175-1000-a6f5-ce184cf890cf"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea65f1-0175-1000-45f9-33976ef10713","parent":{"ref":"EID6eea6598-0175-1000-a6f5-ce184cf890cf"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID713ca4ab-c524-4fc1-9e79-f60ff628c949"},{"ref":"EID34a4d839-5db6-4b7c-9f11-5943298c1c26"},{"ref":"EID204f5926-05f3-43d5-a93e-4671cb0ec3ea"}]},"parent":{"ref":"EID6eea6598-0175-1000-e040-3ab59acdcafd"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:14:16Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:14:16Z","duration":90,"status":"PASSED"},{"id":"EID6eea65f2-0175-1000-a460-55bd7366d5fe","testStepResults":{"TestStepResult":{"id":"EID6eea65f2-0175-1000-bac3-180c240962e0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6683-0175-1000-2491-3c27155c6a8a","parent":{"ref":"EID6eea65f2-0175-1000-bac3-180c240962e0"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6683-0175-1000-764b-2fbaf3d88819","parent":{"ref":"EID6eea65f2-0175-1000-bac3-180c240962e0"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6683-0175-1000-0e4f-e2633dedeefe","parent":{"ref":"EID6eea65f2-0175-1000-bac3-180c240962e0"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6683-0175-1000-f6f0-54a4c9c3045b","parent":{"ref":"EID6eea65f2-0175-1000-bac3-180c240962e0"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6683-0175-1000-6637-35d9871b0de7","parent":{"ref":"EID6eea65f2-0175-1000-bac3-180c240962e0"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6683-0175-1000-8eff-8ffb42e4bcb8","parent":{"ref":"EID6eea65f2-0175-1000-bac3-180c240962e0"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9c63ed1d-9fc9-4757-9d93-240889cdea4f"},{"ref":"EIDc730593d-89cf-4269-9778-ea667cffc751"},{"ref":"EID08eba369-117b-4842-a5ba-9038dd3b2322"}]},"parent":{"ref":"EID6eea65f2-0175-1000-a460-55bd7366d5fe"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:14:16Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:14:16Z","duration":153,"status":"PASSED"},{"id":"EID6eea668b-0175-1000-bee3-6ba8f29904a1","testStepResults":{"TestStepResult":{"id":"EID6eea668b-0175-1000-c851-53f281670502","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6700-0175-1000-f831-00977e8ad641","parent":{"ref":"EID6eea668b-0175-1000-c851-53f281670502"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6700-0175-1000-d69f-feddc38a6749","parent":{"ref":"EID6eea668b-0175-1000-c851-53f281670502"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6700-0175-1000-bd57-44431bcf48b5","parent":{"ref":"EID6eea668b-0175-1000-c851-53f281670502"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6700-0175-1000-1d5a-fb79b306dfa1","parent":{"ref":"EID6eea668b-0175-1000-c851-53f281670502"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6700-0175-1000-d743-e39d384f102a","parent":{"ref":"EID6eea668b-0175-1000-c851-53f281670502"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"},{"id":"EID6eea6700-0175-1000-061b-1283c24d9028","parent":{"ref":"EID6eea668b-0175-1000-c851-53f281670502"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:14:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcbedc394-900d-4dba-affc-7aaa872ce71d"},{"ref":"EID89b06af5-88a3-436c-bb8e-aa067a9dbdc1"},{"ref":"EID3b69d9b7-7488-429a-842d-39e38a711f06"}]},"parent":{"ref":"EID6eea668b-0175-1000-bee3-6ba8f29904a1"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:14:16Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:14:16Z","duration":117,"status":"PASSED"},{"id":"EID6eea6700-0175-1000-5500-2696e177ccad","testStepResults":{"TestStepResult":{"id":"EID6eea6700-0175-1000-3a11-c1908c633146","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6765-0175-1000-133f-d51a86b6be14","parent":{"ref":"EID6eea6700-0175-1000-3a11-c1908c633146"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6765-0175-1000-3c16-ab1e29bac236","parent":{"ref":"EID6eea6700-0175-1000-3a11-c1908c633146"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6765-0175-1000-89c4-f73f5390521f","parent":{"ref":"EID6eea6700-0175-1000-3a11-c1908c633146"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6765-0175-1000-2f93-73e4acec3dc5","parent":{"ref":"EID6eea6700-0175-1000-3a11-c1908c633146"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6dee3499-f3b6-4ca2-b6ae-9e15b14bab6e"},{"ref":"EIDdf245938-5858-40f9-9cfc-72637d3b61cf"},{"ref":"EID64776a13-733c-4471-9788-5389d69ccb85"}]},"parent":{"ref":"EID6eea6700-0175-1000-5500-2696e177ccad"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:14:16Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:14:16Z","duration":144,"status":"PASSED"},{"id":"EID6eea6790-0175-1000-a842-e4b6131ff0d9","testStepResults":{"TestStepResult":[{"id":"EID6eea6790-0175-1000-abbf-a172659b575a","attachments":{"attachment":[{"ref":"EID23b9de71-9fe7-4b3e-aa2b-7cc6e00bbbf9"},{"ref":"EID19b29e6f-1071-4086-90ab-0da60bcc63b6"},{"ref":"EIDb55ac7b2-b929-4f15-b724-697a67d052de"},{"ref":"EID16269cb2-1d22-4ad2-9cb8-eef28e548ec4"}]},"parent":{"ref":"EID6eea6790-0175-1000-a842-e4b6131ff0d9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:14:17Z","duration":160,"status":"PASSED"},{"id":"EID6eea68a0-0175-1000-581e-5789559dab44","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea68f9-0175-1000-07a3-4df44a9e8435","parent":{"ref":"EID6eea68a0-0175-1000-581e-5789559dab44"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:14:17Z","duration":1,"status":"PASSED"},{"id":"EID6eea68fa-0175-1000-440f-7606ca3db034","parent":{"ref":"EID6eea68a0-0175-1000-581e-5789559dab44"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea68fa-0175-1000-db70-c557b6b6d4fb","parent":{"ref":"EID6eea68a0-0175-1000-581e-5789559dab44"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea68fa-0175-1000-5d86-07fa3697ab7b","parent":{"ref":"EID6eea68a0-0175-1000-581e-5789559dab44"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDba5dce0e-488d-4607-99c9-93624047fc5e"},{"ref":"EIDbfe0b150-1b54-4f22-8087-409c5ded1d0f"},{"ref":"EIDdcb882a8-660c-4042-bac1-9b34b46c8935"}]},"parent":{"ref":"EID6eea6790-0175-1000-a842-e4b6131ff0d9"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:14:17Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:14:17Z","duration":362,"status":"PASSED"},{"id":"EID6eea68fa-0175-1000-2432-5f92e92d6371","testStepResults":{"TestStepResult":{"id":"EID6eea68fa-0175-1000-38ff-4b1b57027346","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea69d7-0175-1000-b8cb-2c3ef5b35888","parent":{"ref":"EID6eea68fa-0175-1000-38ff-4b1b57027346"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea69d7-0175-1000-7980-1ac61332a7c6","parent":{"ref":"EID6eea68fa-0175-1000-38ff-4b1b57027346"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea69d7-0175-1000-981e-4368b92dce99","parent":{"ref":"EID6eea68fa-0175-1000-38ff-4b1b57027346"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea69d7-0175-1000-c75d-5ef086312912","parent":{"ref":"EID6eea68fa-0175-1000-38ff-4b1b57027346"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID03b39e3f-3e4a-429a-acc6-af60a3f73911"},{"ref":"EID5185fbe1-58a5-476d-813f-fc2139ca8f30"},{"ref":"EID38e23189-b3dd-4994-a15d-415f4c1aa6fa"}]},"parent":{"ref":"EID6eea68fa-0175-1000-2432-5f92e92d6371"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:14:17Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:14:17Z","duration":221,"status":"PASSED"},{"id":"EID6eea69d7-0175-1000-2119-cfa843e713f0","testStepResults":{"TestStepResult":[{"id":"EID6eea69d7-0175-1000-12a7-f65a3aa8874b","parent":{"ref":"EID6eea69d7-0175-1000-2119-cfa843e713f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea69d7-0175-1000-eba0-2571f933118e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6a40-0175-1000-7530-8ffeead6d100","parent":{"ref":"EID6eea69d7-0175-1000-eba0-2571f933118e"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6a40-0175-1000-be1a-7baa712cda2a","parent":{"ref":"EID6eea69d7-0175-1000-eba0-2571f933118e"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6a40-0175-1000-ee6b-27d2f06363d4","parent":{"ref":"EID6eea69d7-0175-1000-eba0-2571f933118e"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6a40-0175-1000-d426-197c3f0fa579","parent":{"ref":"EID6eea69d7-0175-1000-eba0-2571f933118e"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8e09b1bc-7532-448c-825a-775a4111c347"},{"ref":"EID75d8928a-5537-4310-819a-c937d2dd444a"},{"ref":"EIDdea8f383-814f-4ec3-9a7c-44f321022db4"}]},"parent":{"ref":"EID6eea69d7-0175-1000-2119-cfa843e713f0"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:14:17Z","duration":21,"status":"PASSED"},{"id":"EID6eea6a40-0175-1000-63c1-1aae222ea35e","attachments":{"attachment":{"ref":"EID7ddafdc0-246f-4817-b8fc-5311c728ef2a"}},"parent":{"ref":"EID6eea69d7-0175-1000-2119-cfa843e713f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-28T11:14:17Z","duration":1,"status":"PASSED"},{"id":"EID6eea6a59-0175-1000-4086-0d6cee0dbbaf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6ac0-0175-1000-f55c-05840f2bba50","parent":{"ref":"EID6eea6a59-0175-1000-4086-0d6cee0dbbaf"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6ac0-0175-1000-e490-c1ad63ac1544","parent":{"ref":"EID6eea6a59-0175-1000-4086-0d6cee0dbbaf"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6ac0-0175-1000-7162-e3d8a3b2c9da","parent":{"ref":"EID6eea6a59-0175-1000-4086-0d6cee0dbbaf"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6eea6ac0-0175-1000-12f2-01aef9d1b2fb","parent":{"ref":"EID6eea6a59-0175-1000-4086-0d6cee0dbbaf"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-28T11:14:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDacdf9f9c-9af0-45cc-bf80-ced63d85ac32"},{"ref":"EIDfedd8eba-c77a-465e-99d7-388e2f83e3d7"},{"ref":"EIDf6e7821b-fab1-4e3c-9b82-4757abe9a9f2"}]},"parent":{"ref":"EID6eea69d7-0175-1000-2119-cfa843e713f0"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-28T11:14:17Z","duration":35,"status":"PASSED"},{"id":"EID6eea6ac0-0175-1000-d146-217444bc2b50","attachments":{"attachment":{"ref":"EID5ae5cbd7-0a3d-4644-b672-f48d794005a3"}},"parent":{"ref":"EID6eea69d7-0175-1000-2119-cfa843e713f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-28T11:14:17Z","duration":1,"status":"PASSED"},{"id":"EID6eea6acc-0175-1000-200f-44fae825f21f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6b59-0175-1000-7d4e-9352205ba809","parent":{"ref":"EID6eea6acc-0175-1000-200f-44fae825f21f"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6b59-0175-1000-98e5-53425c49610f","parent":{"ref":"EID6eea6acc-0175-1000-200f-44fae825f21f"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6b59-0175-1000-0d6e-8bdcd6dccb8a","parent":{"ref":"EID6eea6acc-0175-1000-200f-44fae825f21f"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6b59-0175-1000-a713-95b20f28d7fd","parent":{"ref":"EID6eea6acc-0175-1000-200f-44fae825f21f"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca97deec-a4de-473a-83f9-393dbf2dd34d"},{"ref":"EIDfc8d9dcb-e7d1-4f6a-b9b6-35b211990a64"},{"ref":"EID4d6126dd-673c-4fa3-a42a-ddeed1887aa6"}]},"parent":{"ref":"EID6eea69d7-0175-1000-2119-cfa843e713f0"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-28T11:14:17Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea5914-0175-1000-5ce0-e44d38995bf0"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:14:17Z","duration":386,"status":"PASSED"}]},"parent":{"ref":"EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:14:13Z","duration":4677,"status":"PASSED_MANUAL"},{"id":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4","testCaseResults":{"TestCaseResult":[{"id":"EID6eea6b5a-0175-1000-ef3a-a98c6362d9f2","testStepResults":{"TestStepResult":[{"id":"EID6eea6b5a-0175-1000-44a9-e5af2568045a","parent":{"ref":"EID6eea6b5a-0175-1000-ef3a-a98c6362d9f2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6b5a-0175-1000-6b19-07f191b38214","parent":{"ref":"EID6eea6b5a-0175-1000-ef3a-a98c6362d9f2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:14:18Z","duration":24,"status":"PASSED"},{"id":"EID6eea6b5a-0175-1000-966c-62344485de46","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6bb0-0175-1000-ec29-d7050cdb812b","parent":{"ref":"EID6eea6b5a-0175-1000-966c-62344485de46"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6bb1-0175-1000-f432-430a66db043c","parent":{"ref":"EID6eea6b5a-0175-1000-966c-62344485de46"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6bb1-0175-1000-f337-382ecabaef61","parent":{"ref":"EID6eea6b5a-0175-1000-966c-62344485de46"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID52f2d08f-10de-4d7e-8568-2da6b0537a0e"},{"ref":"EID53358522-d5d1-456a-993f-61b06b2b5c52"},{"ref":"EID9a760865-9001-44f1-805f-c782ac53cab8"}]},"parent":{"ref":"EID6eea6b5a-0175-1000-ef3a-a98c6362d9f2"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:14:18Z","duration":20,"status":"PASSED"},{"id":"EID6eea6bb1-0175-1000-9580-ee80c81c8b6f","attachments":{"attachment":{"ref":"EIDe1e55d1e-1879-42ae-96ec-0fb187d7ead5"}},"parent":{"ref":"EID6eea6b5a-0175-1000-ef3a-a98c6362d9f2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6bbc-0175-1000-ce92-a7bc3ca0f649","parent":{"ref":"EID6eea6b5a-0175-1000-ef3a-a98c6362d9f2"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:14:18Z","duration":13,"status":"PASSED"}]},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:14:18Z","duration":112,"status":"PASSED"},{"id":"EID6eea6bca-0175-1000-bd66-ddc86f53bf53","testStepResults":{"TestStepResult":[{"id":"EID6eea6bca-0175-1000-c0bb-41af715d9722","parent":{"ref":"EID6eea6bca-0175-1000-bd66-ddc86f53bf53"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:14:18Z","duration":20,"status":"PASSED"},{"id":"EID6eea6bca-0175-1000-f2de-1fe603671b84","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6c64-0175-1000-a562-ffd2a0b3115b","parent":{"ref":"EID6eea6bca-0175-1000-f2de-1fe603671b84"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6c64-0175-1000-3bdf-97f0ac1e7fe5","parent":{"ref":"EID6eea6bca-0175-1000-f2de-1fe603671b84"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6c64-0175-1000-d041-450f7d98ad5a","parent":{"ref":"EID6eea6bca-0175-1000-f2de-1fe603671b84"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6c64-0175-1000-0aaf-6a7944f4030c","parent":{"ref":"EID6eea6bca-0175-1000-f2de-1fe603671b84"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6c64-0175-1000-f932-49fe6b98ef78","parent":{"ref":"EID6eea6bca-0175-1000-f2de-1fe603671b84"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d0c20bb-d9c5-49e2-bb3a-dfb59f9a28fa"},{"ref":"EID3a600903-8c78-47a1-8b9b-fa069468d4b1"},{"ref":"EID25d0e9d1-1471-4c1e-862d-67ebcab0c03e"}]},"parent":{"ref":"EID6eea6bca-0175-1000-bd66-ddc86f53bf53"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:14:18Z","duration":85,"status":"PASSED"}]},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:14:18Z","duration":155,"status":"PASSED"},{"id":"EID6eea6c65-0175-1000-187e-4e43e03506dd","testStepResults":{"TestStepResult":[{"id":"EID6eea6c65-0175-1000-0908-3ebe9fb17750","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6cc2-0175-1000-5202-b43f8b0d7374","parent":{"ref":"EID6eea6c65-0175-1000-0908-3ebe9fb17750"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6cc2-0175-1000-ab6c-36095ebb0f39","parent":{"ref":"EID6eea6c65-0175-1000-0908-3ebe9fb17750"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6cc2-0175-1000-ad67-fab498513c48","parent":{"ref":"EID6eea6c65-0175-1000-0908-3ebe9fb17750"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb0c5c7ba-d32d-4e3b-baa8-bbc27ce6a6d0"},{"ref":"EIDfcadffc7-2856-4f2b-bfe8-a37a56f37518"},{"ref":"EID0b61cc58-2e39-410f-84fe-670a92dff61c"}]},"parent":{"ref":"EID6eea6c65-0175-1000-187e-4e43e03506dd"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:14:18Z","duration":20,"status":"PASSED"},{"id":"EID6eea6cca-0175-1000-297a-2d80c6c4b010","attachments":{"attachment":{"ref":"EID80f71dad-0c92-40fc-ae35-41e3a93fa57c"}},"parent":{"ref":"EID6eea6c65-0175-1000-187e-4e43e03506dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:14:18Z","duration":1,"status":"PASSED"},{"id":"EID6eea6cd8-0175-1000-1c21-1fb8fe76938c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6d61-0175-1000-4fa4-c74eb6347d3a","parent":{"ref":"EID6eea6cd8-0175-1000-1c21-1fb8fe76938c"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6d61-0175-1000-620f-a6e8bf756fd8","parent":{"ref":"EID6eea6cd8-0175-1000-1c21-1fb8fe76938c"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6d61-0175-1000-e522-88ed8f2dfce8","parent":{"ref":"EID6eea6cd8-0175-1000-1c21-1fb8fe76938c"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6d61-0175-1000-f546-a654f5674808","parent":{"ref":"EID6eea6cd8-0175-1000-1c21-1fb8fe76938c"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6d61-0175-1000-7cef-b34367ed109d","parent":{"ref":"EID6eea6cd8-0175-1000-1c21-1fb8fe76938c"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe72f2974-7b43-4ea6-9cb5-a87c937a56c5"},{"ref":"EIDde720835-7af5-41f8-ac90-707ae3e16a38"},{"ref":"EID1b2ce213-9317-4f26-83c4-ce98b13c3c7c"}]},"parent":{"ref":"EID6eea6c65-0175-1000-187e-4e43e03506dd"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:14:18Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:14:18Z","duration":252,"status":"PASSED"},{"id":"EID6eea6d61-0175-1000-e1bd-2ebc370c2964","testStepResults":{"TestStepResult":[{"id":"EID6eea6d61-0175-1000-758d-07f115b971ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6dc0-0175-1000-31c2-82f832088c01","parent":{"ref":"EID6eea6d61-0175-1000-758d-07f115b971ec"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6dc0-0175-1000-b655-0fead00eb786","parent":{"ref":"EID6eea6d61-0175-1000-758d-07f115b971ec"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6dc0-0175-1000-7239-d2bad8018966","parent":{"ref":"EID6eea6d61-0175-1000-758d-07f115b971ec"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6dc1-0175-1000-d4c6-b74998d12674","parent":{"ref":"EID6eea6d61-0175-1000-758d-07f115b971ec"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID54e80095-f3c0-48aa-8980-0ede6df7d3fd"},{"ref":"EIDc15613b7-e28d-48af-a311-e0e8bf915633"},{"ref":"EIDd29be329-3f69-424c-85b4-9000766567b0"}]},"parent":{"ref":"EID6eea6d61-0175-1000-e1bd-2ebc370c2964"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:14:18Z","duration":20,"status":"PASSED"},{"id":"EID6eea6dc1-0175-1000-67ca-6c7b75f35971","attachments":{"attachment":{"ref":"EID91e1bb8c-36e3-4d6f-92fd-62fe3ca3f685"}},"parent":{"ref":"EID6eea6d61-0175-1000-e1bd-2ebc370c2964"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6dde-0175-1000-92bd-525f5527d3a0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6e0f-0175-1000-fb8c-9aa9cc78397b","parent":{"ref":"EID6eea6dde-0175-1000-92bd-525f5527d3a0"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6e0f-0175-1000-357b-600b8518d999","parent":{"ref":"EID6eea6dde-0175-1000-92bd-525f5527d3a0"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a78b61e-b744-4bb9-a51f-31828e8e8623"},{"ref":"EID709c5b43-3876-480f-a806-6a69cb417e92"}]},"parent":{"ref":"EID6eea6d61-0175-1000-e1bd-2ebc370c2964"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:14:18Z","duration":45,"status":"PASSED"},{"id":"EID6eea6e0f-0175-1000-498a-a02a727421ba","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6ec7-0175-1000-bdee-9d4ec68ca696","parent":{"ref":"EID6eea6e0f-0175-1000-498a-a02a727421ba"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6ec7-0175-1000-c4f0-87ffc3fbece7","parent":{"ref":"EID6eea6e0f-0175-1000-498a-a02a727421ba"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6ec7-0175-1000-11e9-3e1f0729a6bb","parent":{"ref":"EID6eea6e0f-0175-1000-498a-a02a727421ba"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6eea6ec7-0175-1000-bc3c-bc469394d620","parent":{"ref":"EID6eea6e0f-0175-1000-498a-a02a727421ba"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:14:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5aaa17ad-a749-47af-9fd2-aa1f9f80e1ab"},{"ref":"EIDba167495-3916-458f-a307-41e36f02095b"},{"ref":"EIDcf39499d-6365-4262-928b-4ed9d0f59c68"}]},"parent":{"ref":"EID6eea6d61-0175-1000-e1bd-2ebc370c2964"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:14:18Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:14:18Z","duration":358,"status":"PASSED"},{"id":"EID6eea6ec7-0175-1000-4575-5f7b37c9ce9b","testStepResults":{"TestStepResult":{"id":"EID6eea6ec7-0175-1000-866e-98661e53710f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6f25-0175-1000-5825-06bf005fc9fd","parent":{"ref":"EID6eea6ec7-0175-1000-866e-98661e53710f"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea6f25-0175-1000-184f-6a85222f804a","parent":{"ref":"EID6eea6ec7-0175-1000-866e-98661e53710f"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea6f25-0175-1000-6592-4237e439d2e3","parent":{"ref":"EID6eea6ec7-0175-1000-866e-98661e53710f"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5e90c144-5e94-4919-998c-0af4cb74406f"},{"ref":"EIDf6d175f9-677c-4e10-ac9f-75168e02b825"},{"ref":"EID09e3effd-e7b4-41d1-a7ff-8bf8c2ae1f1d"}]},"parent":{"ref":"EID6eea6ec7-0175-1000-4575-5f7b37c9ce9b"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:14:18Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:14:18Z","duration":94,"status":"PASSED"},{"id":"EID6eea6f26-0175-1000-31c5-983bcb544dfc","testStepResults":{"TestStepResult":{"id":"EID6eea6f2f-0175-1000-cf68-3efb48ec74c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea6fb5-0175-1000-35e8-da8cbf8b6ac5","parent":{"ref":"EID6eea6f2f-0175-1000-cf68-3efb48ec74c7"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea6fb5-0175-1000-b387-67f2360fc027","parent":{"ref":"EID6eea6f2f-0175-1000-cf68-3efb48ec74c7"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea6fb5-0175-1000-c089-c5144859f6df","parent":{"ref":"EID6eea6f2f-0175-1000-cf68-3efb48ec74c7"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b080d3e-060e-497c-9c43-a44c6d6332b5"},{"ref":"EID712397ed-4780-43df-b3aa-6ae4e9d2b49d"},{"ref":"EID593d5afc-27fe-4d1f-b52b-fe57c1406757"}]},"parent":{"ref":"EID6eea6f26-0175-1000-31c5-983bcb544dfc"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:14:19Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:14:19Z","duration":143,"status":"PASSED"},{"id":"EID6eea6fb5-0175-1000-cf63-e2377d9db244","testStepResults":{"TestStepResult":{"id":"EID6eea6fb5-0175-1000-484e-0c7c4b46d981","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea705f-0175-1000-13de-faa46468d525","parent":{"ref":"EID6eea6fb5-0175-1000-484e-0c7c4b46d981"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea705f-0175-1000-68a6-4034d6428a87","parent":{"ref":"EID6eea6fb5-0175-1000-484e-0c7c4b46d981"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea705f-0175-1000-c7d1-58aa340e5be2","parent":{"ref":"EID6eea6fb5-0175-1000-484e-0c7c4b46d981"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea705f-0175-1000-91f8-eb62da8f5252","parent":{"ref":"EID6eea6fb5-0175-1000-484e-0c7c4b46d981"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea705f-0175-1000-6485-0a613c373f1e","parent":{"ref":"EID6eea6fb5-0175-1000-484e-0c7c4b46d981"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID29007f52-04ff-4dfc-8c69-940120e1f710"},{"ref":"EID75c1018b-975d-411c-a55f-4a3b561a8513"},{"ref":"EIDe7918102-3f42-4fc0-85f7-5dd2c8e9e246"}]},"parent":{"ref":"EID6eea6fb5-0175-1000-cf63-e2377d9db244"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:14:19Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:14:19Z","duration":170,"status":"PASSED"},{"id":"EID6eea705f-0175-1000-d3aa-5118bd1323ec","testStepResults":{"TestStepResult":{"id":"EID6eea705f-0175-1000-e3bb-bde154301dd4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea70b9-0175-1000-aa67-37c585ea7570","parent":{"ref":"EID6eea705f-0175-1000-e3bb-bde154301dd4"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea70b9-0175-1000-23ce-bbce9017e657","parent":{"ref":"EID6eea705f-0175-1000-e3bb-bde154301dd4"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea70b9-0175-1000-588c-77ef34a5baa8","parent":{"ref":"EID6eea705f-0175-1000-e3bb-bde154301dd4"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcb16c7a5-c5a9-44f4-a432-cad7afe217b7"},{"ref":"EID32996ce0-70aa-4fb4-ad2a-ef20dd63c991"},{"ref":"EIDb3614d11-81bd-41fb-b469-5a9cd3309edb"}]},"parent":{"ref":"EID6eea705f-0175-1000-d3aa-5118bd1323ec"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:14:19Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:14:19Z","duration":90,"status":"PASSED"},{"id":"EID6eea70b9-0175-1000-493b-773982618b93","testStepResults":{"TestStepResult":{"id":"EID6eea70b9-0175-1000-65ec-421e791165f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7110-0175-1000-a6c8-c6a77b654a98","parent":{"ref":"EID6eea70b9-0175-1000-65ec-421e791165f7"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7110-0175-1000-c2cd-501a54029379","parent":{"ref":"EID6eea70b9-0175-1000-65ec-421e791165f7"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7110-0175-1000-139e-1a69f9824459","parent":{"ref":"EID6eea70b9-0175-1000-65ec-421e791165f7"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf5da114b-894e-412e-89bb-4aac50e24f84"},{"ref":"EID47b35d58-7cc9-47ea-8576-e9bab142587d"},{"ref":"EIDd21070f9-0513-4427-9afa-ba903272c66d"}]},"parent":{"ref":"EID6eea70b9-0175-1000-493b-773982618b93"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:14:19Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:14:19Z","duration":87,"status":"PASSED"},{"id":"EID6eea7110-0175-1000-6f0f-7556dea0c268","testStepResults":{"TestStepResult":{"id":"EID6eea7110-0175-1000-a267-44371d196fb0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7196-0175-1000-e524-42af3b4740c1","parent":{"ref":"EID6eea7110-0175-1000-a267-44371d196fb0"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7196-0175-1000-2b34-a3f7f0b727a4","parent":{"ref":"EID6eea7110-0175-1000-a267-44371d196fb0"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7196-0175-1000-4841-b151f79f2d27","parent":{"ref":"EID6eea7110-0175-1000-a267-44371d196fb0"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7196-0175-1000-e470-cddfaf50d9ee","parent":{"ref":"EID6eea7110-0175-1000-a267-44371d196fb0"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7702666b-e19c-4bf6-a12d-479bbb74b26e"},{"ref":"EID4772c026-6fc0-4822-945d-ad0bf3373e4f"},{"ref":"EIDe44e7b8b-f9bc-4f22-b80e-fccdc6066213"}]},"parent":{"ref":"EID6eea7110-0175-1000-6f0f-7556dea0c268"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:14:19Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:14:19Z","duration":135,"status":"PASSED"},{"id":"EID6eea7197-0175-1000-1120-08fa863d3306","testStepResults":{"TestStepResult":{"id":"EID6eea7197-0175-1000-8b41-fdbeacd099b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea71eb-0175-1000-bbf3-7563ed1c64fa","parent":{"ref":"EID6eea7197-0175-1000-8b41-fdbeacd099b9"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea71eb-0175-1000-1a3e-eb96e8809aaa","parent":{"ref":"EID6eea7197-0175-1000-8b41-fdbeacd099b9"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea71eb-0175-1000-9064-fefbf801d972","parent":{"ref":"EID6eea7197-0175-1000-8b41-fdbeacd099b9"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea71eb-0175-1000-5bc3-d56fa984d81f","parent":{"ref":"EID6eea7197-0175-1000-8b41-fdbeacd099b9"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID551ea63f-1c73-4eb9-b9b7-4fd6d7798dd6"},{"ref":"EID5f012ccd-3e00-471e-bc37-82e7cff9337a"},{"ref":"EID458e99c0-b354-4b42-9a52-57d9b45e535a"}]},"parent":{"ref":"EID6eea7197-0175-1000-1120-08fa863d3306"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:14:19Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:14:19Z","duration":84,"status":"PASSED"},{"id":"EID6eea71eb-0175-1000-b855-dad5b06aed90","testStepResults":{"TestStepResult":[{"id":"EID6eea71eb-0175-1000-6cad-d26863b16cba","parent":{"ref":"EID6eea71eb-0175-1000-b855-dad5b06aed90"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea71eb-0175-1000-6773-45e33a625253","parent":{"ref":"EID6eea71eb-0175-1000-b855-dad5b06aed90"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:14:19Z","duration":40,"status":"PASSED"},{"id":"EID6eea71eb-0175-1000-820f-c30cdaf05e20","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea724a-0175-1000-3350-5f628cb647f8","parent":{"ref":"EID6eea71eb-0175-1000-820f-c30cdaf05e20"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea724a-0175-1000-89d5-72ee6551e0fd","parent":{"ref":"EID6eea71eb-0175-1000-820f-c30cdaf05e20"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea724a-0175-1000-fd1e-b6987dccab9c","parent":{"ref":"EID6eea71eb-0175-1000-820f-c30cdaf05e20"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea724a-0175-1000-f07e-bf6ee40e594b","parent":{"ref":"EID6eea71eb-0175-1000-820f-c30cdaf05e20"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb9a96f5-ff16-4f5b-ab18-f8f57ad5accc"},{"ref":"EIDe1ee9bee-5c77-43c3-9d96-32584e72f451"},{"ref":"EID158744cf-04a1-4666-a8b8-b142b0d8ccb8"}]},"parent":{"ref":"EID6eea71eb-0175-1000-b855-dad5b06aed90"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:14:19Z","duration":26,"status":"PASSED"},{"id":"EID6eea724a-0175-1000-fa75-7fbce2f7bb26","attachments":{"attachment":{"ref":"EID8aeb36af-5548-4d4b-a099-afe1e248cc8e"}},"parent":{"ref":"EID6eea71eb-0175-1000-b855-dad5b06aed90"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea72c5-0175-1000-bd22-a434c0f8b363","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-0aa0-eac2431b2df5","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-4200-2206e78bac71","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-e1c0-d47958779ca3","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-6f7b-6e8989aa5861","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-e8b3-a303e1130bb3","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-5d23-d05c1ee98818","parent":{"ref":"EID6eea7257-0175-1000-6e65-d7dcb2719ad4"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID191a12de-2f43-41cb-87d8-be597368a129"},{"ref":"EIDffdfbe4c-b303-47c1-a263-95380caacad9"},{"ref":"EID197c5d5f-e787-422d-8655-17c02a7d5e60"}]},"parent":{"ref":"EID6eea71eb-0175-1000-b855-dad5b06aed90"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:14:19Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:14:19Z","duration":218,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-212b-031c33a5a455","testStepResults":{"TestStepResult":[{"id":"EID6eea72c5-0175-1000-c96f-e497e22f9a75","parent":{"ref":"EID6eea72c5-0175-1000-212b-031c33a5a455"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea72c5-0175-1000-2253-ea8925be91e1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7348-0175-1000-4939-c346c54039b8","parent":{"ref":"EID6eea72c5-0175-1000-2253-ea8925be91e1"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7348-0175-1000-a7ae-13b3bafa97d6","parent":{"ref":"EID6eea72c5-0175-1000-2253-ea8925be91e1"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7348-0175-1000-b074-7715817c0b21","parent":{"ref":"EID6eea72c5-0175-1000-2253-ea8925be91e1"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7348-0175-1000-0da7-1e78adff841e","parent":{"ref":"EID6eea72c5-0175-1000-2253-ea8925be91e1"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID61742db9-776f-4e21-858b-97a1700691cd"},{"ref":"EIDcf4f688d-1e68-40d2-9ad0-7d1c7de0163d"},{"ref":"EIDeecb36cb-9452-48eb-a4a3-aa617c7c2b90"}]},"parent":{"ref":"EID6eea72c5-0175-1000-212b-031c33a5a455"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:14:19Z","duration":43,"status":"PASSED"},{"id":"EID6eea7348-0175-1000-9c94-bc4942f934d7","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eea7358-0175-1000-1d42-16b0d376945f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea73db-0175-1000-5559-7a6e0e0a2f51","parent":{"ref":"EID6eea7358-0175-1000-1d42-16b0d376945f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea73db-0175-1000-1f1c-79e1b04e1780","parent":{"ref":"EID6eea7358-0175-1000-1d42-16b0d376945f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea73db-0175-1000-e979-f5fff9c9af3c","parent":{"ref":"EID6eea7358-0175-1000-1d42-16b0d376945f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf59775ae-8f0f-40c4-bfc2-05e12306976a"},{"ref":"EID7f4c0e00-3a3a-4041-94ff-fd30df2cf7c0"},{"ref":"EIDb7ea59d2-b88f-4d6f-9376-5d10c3799a3c"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:20Z","duration":40,"status":"PASSED"},{"id":"EID6eea73dd-0175-1000-6452-c86156658856","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea743e-0175-1000-8b66-be203e1152c8","parent":{"ref":"EID6eea73dd-0175-1000-6452-c86156658856"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea743e-0175-1000-aec7-aa7d2a6c00ec","parent":{"ref":"EID6eea73dd-0175-1000-6452-c86156658856"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea743e-0175-1000-a1a4-c43fffe18f98","parent":{"ref":"EID6eea73dd-0175-1000-6452-c86156658856"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3fc22664-2b37-448e-b7f7-0b5f6157f24e"},{"ref":"EIDf0c0b15c-7e98-4bef-a812-2c503ce38337"},{"ref":"EIDe0623378-5964-48b8-b45f-6b48b2245e1a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:20Z","duration":38,"status":"PASSED"},{"id":"EID6eea743f-0175-1000-8598-09a385d8e8b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7508-0175-1000-2f58-4e928ace7934","parent":{"ref":"EID6eea743f-0175-1000-8598-09a385d8e8b5"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7508-0175-1000-d107-a5ed1d1d9207","parent":{"ref":"EID6eea743f-0175-1000-8598-09a385d8e8b5"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7508-0175-1000-3991-e2990d64746e","parent":{"ref":"EID6eea743f-0175-1000-8598-09a385d8e8b5"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb85e6b1f-4ce1-4c99-98e9-4d60242c1179"},{"ref":"EID71adb5a2-4a2a-4a13-a53a-ce3cd930172e"},{"ref":"EID54a17922-9556-4163-8afd-95e1efeece6e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:20Z","duration":149,"status":"PASSED"}]},"parent":{"ref":"EID6eea72c5-0175-1000-212b-031c33a5a455"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:14:20Z","duration":448,"status":"PASSED"},{"id":"EID6eea7509-0175-1000-5986-6a4218460196","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7560-0175-1000-c252-3af01e03de0b","parent":{"ref":"EID6eea7509-0175-1000-5986-6a4218460196"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7560-0175-1000-0d73-fd51064f8ece","parent":{"ref":"EID6eea7509-0175-1000-5986-6a4218460196"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7560-0175-1000-f905-b0574e640d5d","parent":{"ref":"EID6eea7509-0175-1000-5986-6a4218460196"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7560-0175-1000-9b36-0d5bdb7e9d0c","parent":{"ref":"EID6eea7509-0175-1000-5986-6a4218460196"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4a392370-050f-4c92-8837-f627a12fb5f1"},{"ref":"EIDe2818b33-d387-4e4b-b92a-8c0a0e5e632a"},{"ref":"EID66352b31-63a1-4174-bbac-27333038f5dd"}]},"parent":{"ref":"EID6eea72c5-0175-1000-212b-031c33a5a455"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:14:20Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:14:19Z","duration":667,"status":"PASSED"},{"id":"EID6eea7560-0175-1000-f93b-bbc20db8897e","testStepResults":{"TestStepResult":{"id":"EID6eea7561-0175-1000-9de5-fd5e57a31b97","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea75e9-0175-1000-595b-4259610ca016","parent":{"ref":"EID6eea7561-0175-1000-9de5-fd5e57a31b97"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea75e9-0175-1000-0596-e4aaa8adf331","parent":{"ref":"EID6eea7561-0175-1000-9de5-fd5e57a31b97"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea75e9-0175-1000-adb9-9e617fc8f6e7","parent":{"ref":"EID6eea7561-0175-1000-9de5-fd5e57a31b97"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea75e9-0175-1000-4cf4-f344c92235e4","parent":{"ref":"EID6eea7561-0175-1000-9de5-fd5e57a31b97"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd6c5178d-c59b-480e-a085-cbab3f3c3be1"},{"ref":"EID05829814-c090-4cb9-800c-4183b946a8fb"},{"ref":"EID8540d51e-c795-4586-91f0-0c151cd78524"}]},"parent":{"ref":"EID6eea7560-0175-1000-f93b-bbc20db8897e"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:14:20Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea6b59-0175-1000-5293-7e5e124fb3e4"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:14:20Z","duration":137,"status":"PASSED"}]},"parent":{"ref":"EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:14:18Z","duration":2704,"status":"PASSED"},{"id":"EID6eea75e9-0175-1000-7066-0dabb57dcb31","testCaseResults":{"TestCaseResult":[{"id":"EID6eea75e9-0175-1000-7986-476e18030701","testStepResults":{"TestStepResult":[{"id":"EID6eea75e9-0175-1000-cb99-1351cf074358","parent":{"ref":"EID6eea75e9-0175-1000-7986-476e18030701"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":171,"status":"PASSED"},{"id":"EID6eea75e9-0175-1000-b0ab-087e75697f65","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7638-0175-1000-d74b-c0a11872b6c4","parent":{"ref":"EID6eea75e9-0175-1000-b0ab-087e75697f65"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7638-0175-1000-4f03-daf59fde11fe","parent":{"ref":"EID6eea75e9-0175-1000-b0ab-087e75697f65"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7639-0175-1000-ca46-1950a6161008","parent":{"ref":"EID6eea75e9-0175-1000-b0ab-087e75697f65"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc012d72e-98e3-4618-941c-0921771b99e0"},{"ref":"EID987ba9b3-5b76-4125-9342-7acf22d36085"},{"ref":"EID8962128f-efdb-437f-a09d-8d6b72855ffe"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7986-476e18030701"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:14:20Z","duration":20,"status":"PASSED"},{"id":"EID6eea7639-0175-1000-bac3-01d43645348d","attachments":{"attachment":{"ref":"EID41216437-8d60-47d3-a96f-8f18e0ea1e7f"}},"parent":{"ref":"EID6eea75e9-0175-1000-7986-476e18030701"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:14:20Z","duration":93,"status":"PASSED"},{"id":"EID6eea7646-0175-1000-f833-06fc76b8ad45","testStepResults":{"TestStepResult":[{"id":"EID6eea7646-0175-1000-3cdd-c127c8e750ad","parent":{"ref":"EID6eea7646-0175-1000-f833-06fc76b8ad45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":171,"status":"PASSED"},{"id":"EID6eea7646-0175-1000-dc3b-8fcbf0bf62d0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea76f6-0175-1000-7e58-d5e736184113","parent":{"ref":"EID6eea7646-0175-1000-dc3b-8fcbf0bf62d0"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea76f6-0175-1000-7992-447537438412","parent":{"ref":"EID6eea7646-0175-1000-dc3b-8fcbf0bf62d0"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea76f6-0175-1000-5f44-16fe1c82df16","parent":{"ref":"EID6eea7646-0175-1000-dc3b-8fcbf0bf62d0"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea76f6-0175-1000-d473-1965e01716af","parent":{"ref":"EID6eea7646-0175-1000-dc3b-8fcbf0bf62d0"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa25896d9-5962-4087-b7a3-1acdca750cd9"},{"ref":"EID62ecd4e4-728f-4ed4-9534-7ea5aef5b2ed"},{"ref":"EIDbab73c58-1c6b-43ff-90d3-88ba330c38d0"}]},"parent":{"ref":"EID6eea7646-0175-1000-f833-06fc76b8ad45"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:14:20Z","duration":101,"status":"PASSED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:14:20Z","duration":176,"status":"PASSED"},{"id":"EID6eea76f7-0175-1000-99a6-93aa2a616471","testStepResults":{"TestStepResult":[{"id":"EID6eea76f7-0175-1000-6dab-1f3a1f3693ea","parent":{"ref":"EID6eea76f7-0175-1000-99a6-93aa2a616471"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":171,"status":"PASSED"},{"id":"EID6eea76f7-0175-1000-74dd-c3063633a548","parent":{"ref":"EID6eea76f7-0175-1000-99a6-93aa2a616471"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea76f7-0175-1000-73fe-ce73994adc48","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea77ba-0175-1000-fb07-98e557106668","parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ba-0175-1000-b0fc-da6bb3e44172","parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ba-0175-1000-0338-93e120bf53d3","parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ba-0175-1000-2d36-bf828141ca5f","parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ba-0175-1000-a5bc-18b2fe9d5b7a","parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ba-0175-1000-b1b7-809ccd0615b2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"FAILED"},{"id":"EID6eea77bb-0175-1000-94ae-aec4b025704c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6eea76f7-0175-1000-73fe-ce73994adc48"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5468fb62-c908-4108-bf8b-49d3bcb74cf8"},{"ref":"EID8bbe26f9-80cf-4fa0-9462-15af84f5eaf1"},{"ref":"EID0dab45fe-d204-4fee-8f0a-be1a7fcd62a8"}]},"parent":{"ref":"EID6eea76f7-0175-1000-99a6-93aa2a616471"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:14:21Z","duration":97,"status":"FAILED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:14:21Z","duration":204,"status":"FAILED"},{"id":"EID6eea77c3-0175-1000-ed24-47d0796d7e60","testStepResults":{"TestStepResult":[{"id":"EID6eea77c3-0175-1000-7026-f204af13f96f","parent":{"ref":"EID6eea77c3-0175-1000-ed24-47d0796d7e60"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":171,"status":"PASSED"},{"id":"EID6eea77c3-0175-1000-5179-de584faf6695","parent":{"ref":"EID6eea77c3-0175-1000-ed24-47d0796d7e60"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7885-0175-1000-2715-2fcdcc6eccd8","parent":{"ref":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7885-0175-1000-727f-d61df084fbd1","parent":{"ref":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7885-0175-1000-b1e4-4c98d8bc8f6c","parent":{"ref":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7885-0175-1000-53f8-cf6323ffed71","parent":{"ref":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7885-0175-1000-3180-9fa3fb7001f9","parent":{"ref":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7885-0175-1000-0233-bf16358f986f","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6eea77c3-0175-1000-ab1b-4dfbd9bb71cc"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc001ea18-06c0-4cac-a0ef-261dce0f9f7f"},{"ref":"EID752510fa-f7ae-400c-bbca-07ffd477b553"},{"ref":"EID0fd12b7b-c0a0-444b-ab82-a17d76f7ea22"}]},"parent":{"ref":"EID6eea77c3-0175-1000-ed24-47d0796d7e60"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:14:21Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:14:21Z","duration":197,"status":"FAILED"},{"id":"EID6eea7888-0175-1000-83ca-4b5173c0b96c","testStepResults":{"TestStepResult":[{"id":"EID6eea7888-0175-1000-83c2-12ec27f6d2dc","parent":{"ref":"EID6eea7888-0175-1000-83ca-4b5173c0b96c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":171,"status":"PASSED"},{"id":"EID6eea7888-0175-1000-fea7-e1ac1756b21b","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDa42d17f7-4fdb-4fbc-8e0b-2c0914ab3575"},{"ref":"EIDb4536193-65d2-4c7d-8ec4-b771cdd67173"},{"ref":"EIDedf134f6-7627-475b-a35e-6c618f7ff7e8"},{"ref":"EIDe61707f0-a791-498b-87ea-559dd04a2a95"},{"ref":"EID4e96b986-1a2d-425e-868f-9a8f05951aa2"},{"ref":"EIDe067ac74-8d59-4b0e-b99b-70ad79f5fc28"},{"ref":"EID18295351-fd72-4995-bdf9-492a51d4269e"},{"ref":"EID98f037e7-d313-42af-86e5-a76fa4971fd8"},{"ref":"EIDce769f7d-b1bb-429b-9ff8-dbb1307bb715"},{"ref":"EID0fb4ba2e-27e6-4fb1-bd44-64030e0694dd"},{"ref":"EIDed9e9884-2022-46b6-8297-d65e18eaf1af"},{"ref":"EID0283594d-ee67-47d1-8768-c0725feb5d07"},{"ref":"EID33e129e1-37b1-40ed-b098-e81aeeb5b87f"},{"ref":"EIDd3e446e2-8714-48db-954e-d6c1eb68c757"},{"ref":"EIDd41499a5-2b03-484b-a466-dc77ac96f106"}]},"parent":{"ref":"EID6eea7888-0175-1000-83ca-4b5173c0b96c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":502,"status":"SKIPPED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:14:21Z","duration":857,"status":"SKIPPED"},{"id":"EID6eea7be1-0175-1000-a36d-b65692f503de","testStepResults":{"TestStepResult":[{"id":"EID6eea7be1-0175-1000-e00c-ebe459b4342b","parent":{"ref":"EID6eea7be1-0175-1000-a36d-b65692f503de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":172,"status":"PASSED"},{"id":"EID6eea7be2-0175-1000-7fb1-291bc620b8b2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7c9d-0175-1000-5e9c-f4f5d32f1a35","parent":{"ref":"EID6eea7be2-0175-1000-7fb1-291bc620b8b2"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7c9d-0175-1000-4f81-eb22af6805f3","parent":{"ref":"EID6eea7be2-0175-1000-7fb1-291bc620b8b2"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7c9d-0175-1000-c868-0baa18e55e27","parent":{"ref":"EID6eea7be2-0175-1000-7fb1-291bc620b8b2"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7c9d-0175-1000-a635-518d215f391b","parent":{"ref":"EID6eea7be2-0175-1000-7fb1-291bc620b8b2"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbac06a90-0f28-4fe9-bb55-d620201c5fe6"},{"ref":"EID314671f5-2e60-4e4e-ac8e-e1418fb62b8d"},{"ref":"EID97db3c9a-7e66-497c-810e-c297b2b89d83"}]},"parent":{"ref":"EID6eea7be1-0175-1000-a36d-b65692f503de"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:14:22Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:14:22Z","duration":188,"status":"PASSED"},{"id":"EID6eea7c9d-0175-1000-4398-efc307731068","testStepResults":{"TestStepResult":[{"id":"EID6eea7c9d-0175-1000-cc35-190a910a9e4a","parent":{"ref":"EID6eea7c9d-0175-1000-4398-efc307731068"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":171,"status":"PASSED"},{"id":"EID6eea7c9d-0175-1000-2dbc-5e7175ee1d3f","parent":{"ref":"EID6eea7c9d-0175-1000-4398-efc307731068"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7c9e-0175-1000-d7ba-496caa585e46","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7d3c-0175-1000-f4cc-3209f00e8475","parent":{"ref":"EID6eea7c9e-0175-1000-d7ba-496caa585e46"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7d3c-0175-1000-951a-3e796a4bb8c3","parent":{"ref":"EID6eea7c9e-0175-1000-d7ba-496caa585e46"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7d3c-0175-1000-c0a0-48f8cbafe738","parent":{"ref":"EID6eea7c9e-0175-1000-d7ba-496caa585e46"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7d3c-0175-1000-9a9a-e9fd862b1ee3","parent":{"ref":"EID6eea7c9e-0175-1000-d7ba-496caa585e46"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfecbbb38-5310-4f37-9819-71c7c4af4596"},{"ref":"EID635dd3e8-bb61-4aaf-bcf2-9652f436db73"},{"ref":"EID936dccf7-4f48-4eeb-b6d7-cb8e1060c22a"}]},"parent":{"ref":"EID6eea7c9d-0175-1000-4398-efc307731068"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:14:22Z","duration":89,"status":"PASSED"},{"id":"EID6eea7d3c-0175-1000-b712-67f609439041","attachments":{"attachment":{"ref":"EID986c3ebb-df41-453f-95b5-5bf13fb85d5d"}},"parent":{"ref":"EID6eea7c9d-0175-1000-4398-efc307731068"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7d48-0175-1000-0580-a3284c16f1ff","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7d5a-0175-1000-e041-8b76ae985a39","parent":{"ref":"EID6eea7d48-0175-1000-0580-a3284c16f1ff"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7d5a-0175-1000-d659-17146386eaa7","parent":{"ref":"EID6eea7d48-0175-1000-0580-a3284c16f1ff"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7d5a-0175-1000-3634-5c6511d01858","parent":{"ref":"EID6eea7d48-0175-1000-0580-a3284c16f1ff"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b4c870e-831a-4655-ae2b-8bd7bdfc6cde"},{"ref":"EID95fa54a8-a16b-49c8-b124-bc48ed697a30"}]},"parent":{"ref":"EID6eea7c9d-0175-1000-4398-efc307731068"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eea75e9-0175-1000-7066-0dabb57dcb31"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:14:22Z","duration":189,"status":"PASSED"}]},"parent":{"ref":"EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:14:20Z","duration":1905,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID8d01062f-b08c-4763-8e44-33d57d975df3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID38ddde6e-7888-4b0b-9f47-183c510ec3ee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID38ddde6e-7888-4b0b-9f47-183c510ec3ee"}},{"type":"ServiceResponse","id":"EIDb34810d2-379c-4a67-aa0c-daef1ee0dfe6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb34810d2-379c-4a67-aa0c-daef1ee0dfe6"}},{"type":"Message","id":"EIDed9e9884-2022-46b6-8297-d65e18eaf1af","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDed9e9884-2022-46b6-8297-d65e18eaf1af"}},{"type":"ServiceResponse","id":"EID987ba9b3-5b76-4125-9342-7acf22d36085","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID987ba9b3-5b76-4125-9342-7acf22d36085"}},{"type":"ServiceEndpoint","id":"EID3fc22664-2b37-448e-b7f7-0b5f6157f24e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID713ca4ab-c524-4fc1-9e79-f60ff628c949","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDe5cad5d0-0be6-4669-a947-bad5b2f0c333","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID16269cb2-1d22-4ad2-9cb8-eef28e548ec4","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID16269cb2-1d22-4ad2-9cb8-eef28e548ec4"}},{"type":"ServiceResponse","id":"EIDf0c0b15c-7e98-4bef-a812-2c503ce38337","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDf0c0b15c-7e98-4bef-a812-2c503ce38337"}},{"type":"GetParameter","id":"EIDd21070f9-0513-4427-9afa-ba903272c66d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDb865c178-e3df-48ac-811c-ef1201615497","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb865c178-e3df-48ac-811c-ef1201615497"}},{"type":"ServiceEndpoint","id":"EID54e80095-f3c0-48aa-8980-0ede6df7d3fd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDf63de5ea-8d3e-4aed-8bfc-f476912fdfb5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDf63de5ea-8d3e-4aed-8bfc-f476912fdfb5"}},{"type":"ServiceResponse","id":"EID22d6e88f-64a6-49b5-b267-9955ca0dd634","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID22d6e88f-64a6-49b5-b267-9955ca0dd634"}},{"type":"Message","id":"EID19b29e6f-1071-4086-90ab-0da60bcc63b6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID19b29e6f-1071-4086-90ab-0da60bcc63b6"}},{"type":"ServiceEndpoint","id":"EID03b39e3f-3e4a-429a-acc6-af60a3f73911","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID158744cf-04a1-4666-a8b8-b142b0d8ccb8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID8540d51e-c795-4586-91f0-0c151cd78524","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDe1e55d1e-1879-42ae-96ec-0fb187d7ead5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDe1e55d1e-1879-42ae-96ec-0fb187d7ead5"}},{"type":"ServiceResponse","id":"EIDbfe0b150-1b54-4f22-8087-409c5ded1d0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDbfe0b150-1b54-4f22-8087-409c5ded1d0f"}},{"type":"GetParameter","id":"EIDd29be329-3f69-424c-85b4-9000766567b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EIDf6d175f9-677c-4e10-ac9f-75168e02b825","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDf6d175f9-677c-4e10-ac9f-75168e02b825"}},{"type":"GetParameter","id":"EID97db3c9a-7e66-497c-810e-c297b2b89d83","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID8730e2a0-8750-4e77-9253-bfb47c647c25","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID8730e2a0-8750-4e77-9253-bfb47c647c25"}},{"type":"ServiceResponse","id":"EID05829814-c090-4cb9-800c-4183b946a8fb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID05829814-c090-4cb9-800c-4183b946a8fb"}},{"type":"GetParameter","id":"EID38e23189-b3dd-4994-a15d-415f4c1aa6fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID8e09b1bc-7532-448c-825a-775a4111c347","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID210139de-f7e8-4742-8744-59dba0b6f921","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDdcb882a8-660c-4042-bac1-9b34b46c8935","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID54a17922-9556-4163-8afd-95e1efeece6e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID45df123f-67ed-4815-a2bd-46f5fbabb044","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID8b18f009-2164-4e3e-b303-697ad55e12af","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID8b18f009-2164-4e3e-b303-697ad55e12af"}},{"type":"Message","id":"EID23b9de71-9fe7-4b3e-aa2b-7cc6e00bbbf9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID23b9de71-9fe7-4b3e-aa2b-7cc6e00bbbf9"}},{"type":"GetParameter","id":"EIDe0623378-5964-48b8-b45f-6b48b2245e1a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID712397ed-4780-43df-b3aa-6ae4e9d2b49d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID712397ed-4780-43df-b3aa-6ae4e9d2b49d"}},{"type":"ServiceEndpoint","id":"EIDee81a288-5d23-4c40-a22a-b01e666e0ca7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa42d17f7-4fdb-4fbc-8e0b-2c0914ab3575","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDa42d17f7-4fdb-4fbc-8e0b-2c0914ab3575"}},{"type":"Message","id":"EID21a80654-5728-4532-91ed-61d618697fbb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID21a80654-5728-4532-91ed-61d618697fbb"}},{"type":"ServiceEndpoint","id":"EID5b080d3e-060e-497c-9c43-a44c6d6332b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EIDe7918102-3f42-4fc0-85f7-5dd2c8e9e246","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID94273312-785e-40e1-94a0-2786ea0e3047","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID94273312-785e-40e1-94a0-2786ea0e3047"}},{"type":"GetParameter","id":"EID3b69d9b7-7488-429a-842d-39e38a711f06","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID47b35d58-7cc9-47ea-8576-e9bab142587d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID47b35d58-7cc9-47ea-8576-e9bab142587d"}},{"type":"GetParameter","id":"EID64776a13-733c-4471-9788-5389d69ccb85","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5aaa17ad-a749-47af-9fd2-aa1f9f80e1ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID42eb0575-d217-46e9-902f-0dba8f97a83d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID42eb0575-d217-46e9-902f-0dba8f97a83d"}},{"type":"GetParameter","id":"EID706491b6-0863-4507-89ce-985f32f8fc28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDffb9c62c-8132-4b13-994b-fb8193e9aee0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDedf134f6-7627-475b-a35e-6c618f7ff7e8","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDedf134f6-7627-475b-a35e-6c618f7ff7e8"}},{"type":"Message","id":"EIDaff91f9a-b793-4665-82f5-55c4668163fc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDaff91f9a-b793-4665-82f5-55c4668163fc"}},{"type":"Message","id":"EID782f12a6-76b6-41af-b27a-386867f485b0","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID782f12a6-76b6-41af-b27a-386867f485b0"}},{"type":"Message","id":"EIDb4c27eb6-8748-49bb-8b61-92db0f2f510b","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb4c27eb6-8748-49bb-8b61-92db0f2f510b"}},{"type":"Message","id":"EID4e96b986-1a2d-425e-868f-9a8f05951aa2","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID4e96b986-1a2d-425e-868f-9a8f05951aa2"}},{"type":"GetParameter","id":"EID09e3effd-e7b4-41d1-a7ff-8bf8c2ae1f1d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID33e129e1-37b1-40ed-b098-e81aeeb5b87f","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID33e129e1-37b1-40ed-b098-e81aeeb5b87f"}},{"type":"ServiceResponse","id":"EIDffdfbe4c-b303-47c1-a263-95380caacad9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDffdfbe4c-b303-47c1-a263-95380caacad9"}},{"type":"ServiceEndpoint","id":"EID191a12de-2f43-41cb-87d8-be597368a129","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID98f037e7-d313-42af-86e5-a76fa4971fd8","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID98f037e7-d313-42af-86e5-a76fa4971fd8"}},{"type":"GetParameter","id":"EIDf6e7821b-fab1-4e3c-9b82-4757abe9a9f2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"GetParameter","id":"EID08eba369-117b-4842-a5ba-9038dd3b2322","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID0fd12b7b-c0a0-444b-ab82-a17d76f7ea22","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbd7ce5cf-16cb-414a-b2fb-f6b30d769843","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID642b55fb-08a6-4c04-beb4-d7a371e1e597","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID7864087b-ce0a-4eff-902a-ba2945a02eb6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4ad6632a-8fbb-41de-ab5c-eda00aaeb26a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDd3041c24-26be-462f-ae78-e997459e6068","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDd3041c24-26be-462f-ae78-e997459e6068"}},{"type":"Message","id":"EIDe61707f0-a791-498b-87ea-559dd04a2a95","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDe61707f0-a791-498b-87ea-559dd04a2a95"}},{"type":"GetParameter","id":"EID95fa54a8-a16b-49c8-b124-bc48ed697a30","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID5e90c144-5e94-4919-998c-0af4cb74406f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID8aeb36af-5548-4d4b-a099-afe1e248cc8e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID8aeb36af-5548-4d4b-a099-afe1e248cc8e"}},{"type":"Message","id":"EID0fb4ba2e-27e6-4fb1-bd44-64030e0694dd","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID0fb4ba2e-27e6-4fb1-bd44-64030e0694dd"}},{"type":"ServiceResponse","id":"EID635dd3e8-bb61-4aaf-bcf2-9652f436db73","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID635dd3e8-bb61-4aaf-bcf2-9652f436db73"}},{"type":"Message","id":"EID9841bfee-b4f1-4b3e-b39b-1535883be034","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID9841bfee-b4f1-4b3e-b39b-1535883be034"}},{"type":"ServiceEndpoint","id":"EID7c416046-ce9b-4e63-8a3d-a82063685a0a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID75c1018b-975d-411c-a55f-4a3b561a8513","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID75c1018b-975d-411c-a55f-4a3b561a8513"}},{"type":"ServiceResponse","id":"EID7f4c0e00-3a3a-4041-94ff-fd30df2cf7c0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID7f4c0e00-3a3a-4041-94ff-fd30df2cf7c0"}},{"type":"ServiceEndpoint","id":"EIDc001ea18-06c0-4cac-a0ef-261dce0f9f7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDce769f7d-b1bb-429b-9ff8-dbb1307bb715","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDce769f7d-b1bb-429b-9ff8-dbb1307bb715"}},{"type":"GetParameter","id":"EID0b61cc58-2e39-410f-84fe-670a92dff61c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EIDc730593d-89cf-4269-9778-ea667cffc751","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDc730593d-89cf-4269-9778-ea667cffc751"}},{"type":"ServiceResponse","id":"EIDde720835-7af5-41f8-ac90-707ae3e16a38","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDde720835-7af5-41f8-ac90-707ae3e16a38"}},{"type":"ServiceEndpoint","id":"EID7702666b-e19c-4bf6-a12d-479bbb74b26e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EIDcb16c7a5-c5a9-44f4-a432-cad7afe217b7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID138ec0c0-f69e-441a-833f-f49cd4ab0958","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID138ec0c0-f69e-441a-833f-f49cd4ab0958"}},{"type":"GetParameter","id":"EIDb7ea59d2-b88f-4d6f-9376-5d10c3799a3c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID204f5926-05f3-43d5-a93e-4671cb0ec3ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID593d5afc-27fe-4d1f-b52b-fe57c1406757","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EID9c63ed1d-9fc9-4757-9d93-240889cdea4f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID6dee3499-f3b6-4ca2-b6ae-9e15b14bab6e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDfcadffc7-2856-4f2b-bfe8-a37a56f37518","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDfcadffc7-2856-4f2b-bfe8-a37a56f37518"}},{"type":"ServiceResponse","id":"EID3a600903-8c78-47a1-8b9b-fa069468d4b1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID3a600903-8c78-47a1-8b9b-fa069468d4b1"}},{"type":"Message","id":"EIDb55ac7b2-b929-4f15-b724-697a67d052de","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb55ac7b2-b929-4f15-b724-697a67d052de"}},{"type":"GetParameter","id":"EID25d0e9d1-1471-4c1e-862d-67ebcab0c03e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID0064a470-99c4-416b-978c-161a6721df51","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID0064a470-99c4-416b-978c-161a6721df51"}},{"type":"Message","id":"EIDb6c4b73a-1b2a-4a1f-9ef7-bdf2b33f4275","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb6c4b73a-1b2a-4a1f-9ef7-bdf2b33f4275"}},{"type":"GetParameter","id":"EID66352b31-63a1-4174-bbac-27333038f5dd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EID4d6126dd-673c-4fa3-a42a-ddeed1887aa6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDacdf9f9c-9af0-45cc-bf80-ced63d85ac32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"GetParameter","id":"EIDb3614d11-81bd-41fb-b469-5a9cd3309edb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EID16c8d781-871f-4d05-a15f-830b304e62fb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDdb9a96f5-ff16-4f5b-ab18-f8f57ad5accc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID458e99c0-b354-4b42-9a52-57d9b45e535a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EIDd6c5178d-c59b-480e-a085-cbab3f3c3be1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID26906f4b-c26e-4834-8db8-740b115b9f2b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID26906f4b-c26e-4834-8db8-740b115b9f2b"}},{"type":"GetParameter","id":"EID1b2ce213-9317-4f26-83c4-ce98b13c3c7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EIDf5da114b-894e-412e-89bb-4aac50e24f84","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EIDfc8d9dcb-e7d1-4f6a-b9b6-35b211990a64","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDfc8d9dcb-e7d1-4f6a-b9b6-35b211990a64"}},{"type":"ServiceEndpoint","id":"EIDc3502f8c-c1e9-40b6-8493-b536ea59b2b8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID63cc388a-f353-4961-948e-133480d39667","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID63cc388a-f353-4961-948e-133480d39667"}},{"type":"GetParameter","id":"EID9a1f098f-93a2-4d20-be4f-233c08e6680d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID62ecd4e4-728f-4ed4-9534-7ea5aef5b2ed","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID62ecd4e4-728f-4ed4-9534-7ea5aef5b2ed"}},{"type":"Message","id":"EID0283594d-ee67-47d1-8768-c0725feb5d07","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID0283594d-ee67-47d1-8768-c0725feb5d07"}},{"type":"ServiceResponse","id":"EID5185fbe1-58a5-476d-813f-fc2139ca8f30","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID5185fbe1-58a5-476d-813f-fc2139ca8f30"}},{"type":"ServiceEndpoint","id":"EIDb85e6b1f-4ce1-4c99-98e9-4d60242c1179","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID41216437-8d60-47d3-a96f-8f18e0ea1e7f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID41216437-8d60-47d3-a96f-8f18e0ea1e7f"}},{"type":"GetParameter","id":"EIDeecb36cb-9452-48eb-a4a3-aa617c7c2b90","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID752510fa-f7ae-400c-bbca-07ffd477b553","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID752510fa-f7ae-400c-bbca-07ffd477b553"}},{"type":"GetParameter","id":"EIDbab73c58-1c6b-43ff-90d3-88ba330c38d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID314671f5-2e60-4e4e-ac8e-e1418fb62b8d","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID314671f5-2e60-4e4e-ac8e-e1418fb62b8d"}},{"type":"Message","id":"EIDb31a8759-575a-48cb-b4f0-c0b40e767fe5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb31a8759-575a-48cb-b4f0-c0b40e767fe5"}},{"type":"GetParameter","id":"EIDd90ed26c-d39d-4164-8b9c-ce34fedf9ff0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID9d0c20bb-d9c5-49e2-bb3a-dfb59f9a28fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDbc8d0275-93ab-4417-9799-b5bc7c9356f6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDbc8d0275-93ab-4417-9799-b5bc7c9356f6"}},{"type":"Message","id":"EID50cf04a3-6eec-4ac4-a018-05db95ac6879","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID50cf04a3-6eec-4ac4-a018-05db95ac6879"}},{"type":"Message","id":"EID80f71dad-0c92-40fc-ae35-41e3a93fa57c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID80f71dad-0c92-40fc-ae35-41e3a93fa57c"}},{"type":"GetParameter","id":"EID936dccf7-4f48-4eeb-b6d7-cb8e1060c22a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID53358522-d5d1-456a-993f-61b06b2b5c52","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID53358522-d5d1-456a-993f-61b06b2b5c52"}},{"type":"GetParameter","id":"EID25dee3b0-2c20-4320-9f5c-bf4f4c430a7b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID351c8fed-7d6f-43f3-a2fe-7032cd834d53","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID0dab45fe-d204-4fee-8f0a-be1a7fcd62a8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4a392370-050f-4c92-8837-f627a12fb5f1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDb81cddf8-3daa-4725-9f1c-8513396f4d7a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb81cddf8-3daa-4725-9f1c-8513396f4d7a"}},{"type":"Message","id":"EID4d1bc073-66df-4a63-9091-c41fb64774ca","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID4d1bc073-66df-4a63-9091-c41fb64774ca"}},{"type":"ServiceEndpoint","id":"EID1a78b61e-b744-4bb9-a51f-31828e8e8623","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9kb3dubG9hZHMvSEhfTkxfTlVUUzIuZ3BrZy56aXA="},{"type":"Message","id":"EIDb08c5bf5-12c8-4f85-8544-468313b090b2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb08c5bf5-12c8-4f85-8544-468313b090b2"}},{"type":"ServiceEndpoint","id":"EIDa9ba76d6-f2f3-4969-80e2-86ad0892ebfe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID4608bf7e-9b98-4de5-bb12-a237bcc1dd51","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDcbedc394-900d-4dba-affc-7aaa872ce71d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID78a54589-8f85-4fdd-8fd9-1a4c62e6ad5b","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID78a54589-8f85-4fdd-8fd9-1a4c62e6ad5b"}},{"type":"ServiceEndpoint","id":"EIDfecbbb38-5310-4f37-9819-71c7c4af4596","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDba167495-3916-458f-a307-41e36f02095b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDba167495-3916-458f-a307-41e36f02095b"}},{"type":"ServiceEndpoint","id":"EID551ea63f-1c73-4eb9-b9b7-4fd6d7798dd6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID91e1bb8c-36e3-4d6f-92fd-62fe3ca3f685","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID91e1bb8c-36e3-4d6f-92fd-62fe3ca3f685"}},{"type":"Message","id":"EID986c3ebb-df41-453f-95b5-5bf13fb85d5d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID986c3ebb-df41-453f-95b5-5bf13fb85d5d"}},{"type":"GetParameter","id":"EID95d16fe9-4c96-4bff-b73d-dbfa19f1edc0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe1ee9bee-5c77-43c3-9d96-32584e72f451","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDe1ee9bee-5c77-43c3-9d96-32584e72f451"}},{"type":"ServiceResponse","id":"EIDbf68091d-876d-4dd0-9c72-e26da3e117f7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDbf68091d-876d-4dd0-9c72-e26da3e117f7"}},{"type":"GetParameter","id":"EID197c5d5f-e787-422d-8655-17c02a7d5e60","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID8bbe26f9-80cf-4fa0-9462-15af84f5eaf1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID8bbe26f9-80cf-4fa0-9462-15af84f5eaf1"}},{"type":"ServiceResponse","id":"EID71adb5a2-4a2a-4a13-a53a-ce3cd930172e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID71adb5a2-4a2a-4a13-a53a-ce3cd930172e"}},{"type":"ServiceEndpoint","id":"EIDe72f2974-7b43-4ea6-9cb5-a87c937a56c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID34a4d839-5db6-4b7c-9f11-5943298c1c26","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID34a4d839-5db6-4b7c-9f11-5943298c1c26"}},{"type":"ServiceResponse","id":"EID77f09619-46ed-411b-8d4e-707970dc0b78","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID77f09619-46ed-411b-8d4e-707970dc0b78"}},{"type":"ServiceResponse","id":"EID89b06af5-88a3-436c-bb8e-aa067a9dbdc1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID89b06af5-88a3-436c-bb8e-aa067a9dbdc1"}},{"type":"Message","id":"EID1146ab2e-a432-48bf-affc-2ddfbb8891e3","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID1146ab2e-a432-48bf-affc-2ddfbb8891e3"}},{"type":"ServiceResponse","id":"EID4772c026-6fc0-4822-945d-ad0bf3373e4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID4772c026-6fc0-4822-945d-ad0bf3373e4f"}},{"type":"ServiceResponse","id":"EID5f012ccd-3e00-471e-bc37-82e7cff9337a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID5f012ccd-3e00-471e-bc37-82e7cff9337a"}},{"type":"GetParameter","id":"EIDe44e7b8b-f9bc-4f22-b80e-fccdc6066213","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EIDba5dce0e-488d-4607-99c9-93624047fc5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDcf4f688d-1e68-40d2-9ad0-7d1c7de0163d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDcf4f688d-1e68-40d2-9ad0-7d1c7de0163d"}},{"type":"ServiceEndpoint","id":"EIDf59775ae-8f0f-40c4-bfc2-05e12306976a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDdea8f383-814f-4ec3-9a7c-44f321022db4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDabb26276-a48f-4f1b-83a4-b8b782344a12","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDca97deec-a4de-473a-83f9-393dbf2dd34d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID709c5b43-3876-480f-a806-6a69cb417e92","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9kb3dubG9hZHMvSEhfTkxfTlVUUzIuZ3BrZy56aXA="},{"type":"GetParameter","id":"EIDcf39499d-6365-4262-928b-4ed9d0f59c68","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDd3e446e2-8714-48db-954e-d6c1eb68c757","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDd3e446e2-8714-48db-954e-d6c1eb68c757"}},{"type":"ServiceEndpoint","id":"EIDc012d72e-98e3-4618-941c-0921771b99e0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDed6ce70c-93a1-41b5-b9d6-42dd88876794","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDed6ce70c-93a1-41b5-b9d6-42dd88876794"}},{"type":"ServiceResponse","id":"EIDdf245938-5858-40f9-9cfc-72637d3b61cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDdf245938-5858-40f9-9cfc-72637d3b61cf"}},{"type":"GetParameter","id":"EID8962128f-efdb-437f-a09d-8d6b72855ffe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID18295351-fd72-4995-bdf9-492a51d4269e","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID18295351-fd72-4995-bdf9-492a51d4269e"}},{"type":"ServiceEndpoint","id":"EIDa25896d9-5962-4087-b7a3-1acdca750cd9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDe067ac74-8d59-4b0e-b99b-70ad79f5fc28","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDe067ac74-8d59-4b0e-b99b-70ad79f5fc28"}},{"type":"ServiceResponse","id":"EIDc15613b7-e28d-48af-a311-e0e8bf915633","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDc15613b7-e28d-48af-a311-e0e8bf915633"}},{"type":"GetParameter","id":"EIDde10a744-4c05-451e-918f-9f88ddd5051b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa0e370ba-f5f6-4e77-a624-62cac4c5a569","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDa0e370ba-f5f6-4e77-a624-62cac4c5a569"}},{"type":"ServiceResponse","id":"EID967f48d0-5377-4424-8a5f-a4b0843c5151","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID967f48d0-5377-4424-8a5f-a4b0843c5151"}},{"type":"ServiceEndpoint","id":"EIDb0c5c7ba-d32d-4e3b-baa8-bbc27ce6a6d0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDc68dfad5-d311-4e2f-8774-cb6e79999693","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDc68dfad5-d311-4e2f-8774-cb6e79999693"}},{"type":"GetParameter","id":"EID0abceb5d-8b04-4c87-8c7d-1698bb51134f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDfa690940-a682-4220-b5a7-62737ad141dd","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDfa690940-a682-4220-b5a7-62737ad141dd"}},{"type":"GetParameter","id":"EID9a760865-9001-44f1-805f-c782ac53cab8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDea668053-41a4-4e39-a78e-4ea653f39373","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID29007f52-04ff-4dfc-8c69-940120e1f710","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID32996ce0-70aa-4fb4-ad2a-ef20dd63c991","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID32996ce0-70aa-4fb4-ad2a-ef20dd63c991"}},{"type":"ServiceEndpoint","id":"EID9ba85728-9703-4678-abfd-e4189243b6b1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID61742db9-776f-4e21-858b-97a1700691cd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID8c9c2b6d-6249-4d43-b3c1-84f0d58817bf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID8c9c2b6d-6249-4d43-b3c1-84f0d58817bf"}},{"type":"Message","id":"EIDb4536193-65d2-4c7d-8ec4-b771cdd67173","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb4536193-65d2-4c7d-8ec4-b771cdd67173"}},{"type":"ServiceEndpoint","id":"EID8b4c870e-831a-4655-ae2b-8bd7bdfc6cde","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDd41499a5-2b03-484b-a466-dc77ac96f106","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDd41499a5-2b03-484b-a466-dc77ac96f106"}},{"type":"Message","id":"EID3706f3f3-bd83-4245-8294-dd24f1ed24af","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID3706f3f3-bd83-4245-8294-dd24f1ed24af"}},{"type":"ServiceResponse","id":"EID75d8928a-5537-4310-819a-c937d2dd444a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID75d8928a-5537-4310-819a-c937d2dd444a"}},{"type":"ServiceEndpoint","id":"EIDbac06a90-0f28-4fe9-bb55-d620201c5fe6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDb905a9b2-2ac8-4f0e-85a8-c85fce26f16a","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDb905a9b2-2ac8-4f0e-85a8-c85fce26f16a"}},{"type":"ServiceResponse","id":"EIDe2818b33-d387-4e4b-b92a-8c0a0e5e632a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDe2818b33-d387-4e4b-b92a-8c0a0e5e632a"}},{"type":"ServiceResponse","id":"EIDaca482d5-b4aa-489b-8630-b2d351b1ffd6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDaca482d5-b4aa-489b-8630-b2d351b1ffd6"}},{"type":"Message","id":"EID5ae5cbd7-0a3d-4644-b672-f48d794005a3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID5ae5cbd7-0a3d-4644-b672-f48d794005a3"}},{"type":"Message","id":"EID7ddafdc0-246f-4817-b8fc-5311c728ef2a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID7ddafdc0-246f-4817-b8fc-5311c728ef2a"}},{"type":"ServiceEndpoint","id":"EID52f2d08f-10de-4d7e-8568-2da6b0537a0e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDfedd8eba-c77a-465e-99d7-388e2f83e3d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EIDfedd8eba-c77a-465e-99d7-388e2f83e3d7"}},{"type":"LogFile","id":"EID56143384-30cc-4363-8e5e-2dfaed00ae5f","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID56143384-30cc-4363-8e5e-2dfaed00ae5f"}},{"type":"Message","id":"EID2cbed55d-53fb-4d31-a17c-9144eec50b18","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID2cbed55d-53fb-4d31-a17c-9144eec50b18"}},{"type":"ServiceEndpoint","id":"EID5468fb62-c908-4108-bf8b-49d3bcb74cf8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5e1fb1be-118f-4e97-8221-64c00fa359d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID4a5344d1-974d-4e6d-9feb-187289a48230","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID4a5344d1-974d-4e6d-9feb-187289a48230"}},{"type":"GetParameter","id":"EIDc2e95fe3-f58e-4dd0-9cfb-d813de8dff83","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID60cdfe66-60d1-4b93-801e-f19bd30322e8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID51ba7d3a-3f4d-46c3-8ee4-bab8cdf61c9a/Attachments/EID60cdfe66-60d1-4b93-801e-f19bd30322e8"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:14:13Z","duration":9673,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
11:14:32.755 [print] EID80987e45-91b1-4a1e-ae6a-f743ba213f39
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:32.755 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:14:32.755 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:32.755 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:32.755 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/80987e45-91b1-4a1e-ae6a-f743ba213f39.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:14:32.756 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/80987e45-91b1-4a1e-ae6a-f743ba213f39.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:32.756 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID80987e45-91b1-4a1e-ae6a-f743ba213f39/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.017
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.004
11:14:32.779 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:14:32.780 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.002
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.674
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:18.001 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.674
11:12:18.001 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities"}}}

11:12:19.675 response time in milliseconds: 1566.61
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883539503","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:12:19.675 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.419
* print "testing url:" + metadata.url 0.000
11:09:03.134 [print] testing url:https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.418
11:09:03.134 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:03.553 response time in milliseconds: 418.05
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:03 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.419
Scenario test download header
Steps
Given url metadata.url 0.003
When method HEAD 0.414
11:09:03.574 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:03.986 response time in milliseconds: 411.81
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:03 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:09:03.989 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:17.337
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:36.486 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.787
11:09:36.487 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}

11:10:07.272 response time in milliseconds: 30021.48
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:06 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:10:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e43cc173-1805-44cf-94f4-98c35f178b80.json","testRuns":{"TestRun":{"id":"EIDe43cc173-1805-44cf-94f4-98c35f178b80","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:09:56.676Z","testTasks":{"TestTask":{"id":"EID51ef3ef6-fefa-4542-8299-ed844bb38801","parent":{"ref":"EIDe43cc173-1805-44cf-94f4-98c35f178b80"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0815b67f-b552-4897-8c3f-ce9a07e7f524"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0815b67f-b552-4897-8c3f-ce9a07e7f524","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:09:37.526Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:09:38.898Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:10:07.275 [print] EIDe43cc173-1805-44cf-94f4-98c35f178b80
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:07.275 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:10:07.275 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:07.275 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e43cc173-1805-44cf-94f4-98c35f178b80.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.023
11:10:07.298 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:10:07.299 [print] statuspath TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80
* print 'progresspath ', progresspath 0.000
11:10:07.299 [print] progresspath  TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
Given path progresspath 0.000
When method GET 0.529
11:10:07.305 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:07.828 response time in milliseconds: 522.56
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:10:07 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)","28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:56 - Preparing 1 Test Task:","28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)","28.10.2020 11:09:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:56 -  with parameters: ","28.10.2020 11:09:56 - etf.testcases = *","28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:56 - Setting state to CREATED","28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z","28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:05 - Project Properties: ","28.10.2020 11:10:05 - etf.testcases - * ","28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:10:05 - username -  ","28.10.2020 11:10:05 - authUser -  ","28.10.2020 11:10:05 - authMethod - basic ","28.10.2020 11:10:05 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:10:07.829 [print] {
  "val": "25",
  "max": "26",
  "log": [
    "28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)",
    "28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:09:56 - Preparing 1 Test Task:",
    "28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)",
    "28.10.2020 11:09:56 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:09:56 -  with parameters: ",
    "28.10.2020 11:09:56 - etf.testcases = *",
    "28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:09:56 - Setting state to CREATED",
    "28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z",
    "28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:10:05 - Project Properties: ",
    "28.10.2020 11:10:05 - etf.testcases - * ",
    "28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ",
    "28.10.2020 11:10:05 - username -  ",
    "28.10.2020 11:10:05 - authUser -  ",
    "28.10.2020 11:10:05 - authMethod - basic ",
    "28.10.2020 11:10:05 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 29.691
11:10:07.830 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:08.346 response time in milliseconds: 515.47
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:10:08 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)","28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:56 - Preparing 1 Test Task:","28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)","28.10.2020 11:09:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:56 -  with parameters: ","28.10.2020 11:09:56 - etf.testcases = *","28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:56 - Setting state to CREATED","28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z","28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:05 - Project Properties: ","28.10.2020 11:10:05 - etf.testcases - * ","28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:10:05 - username -  ","28.10.2020 11:10:05 - authUser -  ","28.10.2020 11:10:05 - authMethod - basic ","28.10.2020 11:10:05 - TestRunTask initialized"]}

11:10:08.353 retry condition not satisfied: response.val == response.max
11:10:08.353 sleeping before retry #1
11:10:13.354 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:13.879 response time in milliseconds: 524.29
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:10:13 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)","28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:56 - Preparing 1 Test Task:","28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)","28.10.2020 11:09:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:56 -  with parameters: ","28.10.2020 11:09:56 - etf.testcases = *","28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:56 - Setting state to CREATED","28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z","28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:05 - Project Properties: ","28.10.2020 11:10:05 - etf.testcases - * ","28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:10:05 - username -  ","28.10.2020 11:10:05 - authUser -  ","28.10.2020 11:10:05 - authMethod - basic ","28.10.2020 11:10:05 - TestRunTask initialized"]}

11:10:13.879 retry condition not satisfied: response.val == response.max
11:10:13.879 sleeping before retry #2
11:10:18.880 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:19.409 response time in milliseconds: 525.38
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:10:19 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"119","max":"120","log":["28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)","28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:56 - Preparing 1 Test Task:","28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)","28.10.2020 11:09:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:56 -  with parameters: ","28.10.2020 11:09:56 - etf.testcases = *","28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:56 - Setting state to CREATED","28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z","28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:05 - Project Properties: ","28.10.2020 11:10:05 - etf.testcases - * ","28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:10:05 - username -  ","28.10.2020 11:10:05 - authUser -  ","28.10.2020 11:10:05 - authMethod - basic ","28.10.2020 11:10:05 - TestRunTask initialized","28.10.2020 11:10:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:19.409 retry condition not satisfied: response.val == response.max
11:10:19.409 sleeping before retry #3
11:10:24.410 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:24.921 response time in milliseconds: 510.75
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:10:24 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)","28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:56 - Preparing 1 Test Task:","28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)","28.10.2020 11:09:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:56 -  with parameters: ","28.10.2020 11:09:56 - etf.testcases = *","28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:56 - Setting state to CREATED","28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z","28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:05 - Project Properties: ","28.10.2020 11:10:05 - etf.testcases - * ","28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:10:05 - username -  ","28.10.2020 11:10:05 - authUser -  ","28.10.2020 11:10:05 - authMethod - basic ","28.10.2020 11:10:05 - TestRunTask initialized","28.10.2020 11:10:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:10:24.922 retry condition not satisfied: response.val == response.max
11:10:24.922 sleeping before retry #4
11:10:29.923 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:30.511 response time in milliseconds: 582.50
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:10:30 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:09:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:09:56 UTC 2020)","28.10.2020 11:09:56 - Resolving Executable Test Suite dependencies","28.10.2020 11:09:56 - Preparing 1 Test Task:","28.10.2020 11:09:56 -  TestTask 1 (51ef3ef6-fefa-4542-8299-ed844bb38801)","28.10.2020 11:09:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:09:56 -  with parameters: ","28.10.2020 11:09:56 - etf.testcases = *","28.10.2020 11:09:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:09:56 - Setting state to CREATED","28.10.2020 11:09:56 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:03 - Starting TestRun.e43cc173-1805-44cf-94f4-98c35f178b80 at 2020-10-28T11:10:05Z","28.10.2020 11:10:05 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:05 - Project Properties: ","28.10.2020 11:10:05 - etf.testcases - * ","28.10.2020 11:10:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","28.10.2020 11:10:05 - username -  ","28.10.2020 11:10:05 - authUser -  ","28.10.2020 11:10:05 - authMethod - basic ","28.10.2020 11:10:05 - TestRunTask initialized","28.10.2020 11:10:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:10:25 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:25 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:25 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:10:30.512 retry condition not satisfied: response.val == response.max
11:10:30.512 sleeping before retry #5
11:10:35.513 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:37.520 response time in milliseconds: 2007.13
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:10:37 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:10:37.521 retry condition satisfied
* print response 0.000
11:10:37.521 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 16.272
11:10:37.522 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:53.790 response time in milliseconds: 15207.96
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Cache-Control: public, max-age=120
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:10:52 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Last-Modified: Wed, 28 Oct 2020 11:10:37 GMT
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e43cc173-1805-44cf-94f4-98c35f178b80.json","testRuns":{"TestRun":{"id":"EIDe43cc173-1805-44cf-94f4-98c35f178b80","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:09:56.676Z","testTasks":{"TestTask":{"id":"EID51ef3ef6-fefa-4542-8299-ed844bb38801","parent":{"ref":"EIDe43cc173-1805-44cf-94f4-98c35f178b80"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0815b67f-b552-4897-8c3f-ce9a07e7f524"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID84ce8428-9126-44cb-b018-55529a525833"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0815b67f-b552-4897-8c3f-ce9a07e7f524","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:09:37.526Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:09:38.898Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID84ce8428-9126-44cb-b018-55529a525833","testObject":{"ref":"EID0815b67f-b552-4897-8c3f-ce9a07e7f524"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee68f1e-0175-1000-fe31-7cf3fbd7387d","testCaseResults":{"TestCaseResult":[{"id":"EID6ee68f1e-0175-1000-5fd4-a3cd200ff90b","testStepResults":{"TestStepResult":[{"id":"EID6ee68f22-0175-1000-8432-19185d12b767","parent":{"ref":"EID6ee68f1e-0175-1000-5fd4-a3cd200ff90b"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:10:05Z","duration":20,"status":"PASSED"},{"id":"EID6ee68f37-0175-1000-8315-372795219364","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee69028-0175-1000-4b77-05e241d9c854","parent":{"ref":"EID6ee68f37-0175-1000-8315-372795219364"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee69028-0175-1000-33a3-d63b71a34c2f","parent":{"ref":"EID6ee68f37-0175-1000-8315-372795219364"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee69028-0175-1000-6007-1fd6a20ca315","parent":{"ref":"EID6ee68f37-0175-1000-8315-372795219364"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee69028-0175-1000-e19d-9e92a673a54c","parent":{"ref":"EID6ee68f37-0175-1000-8315-372795219364"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9893c7c7-86e2-4bae-a089-2e43d8df162c"},{"ref":"EIDc3f257cb-e3be-4452-acfc-44bc02dcff7f"},{"ref":"EID833a71ab-f9e3-4831-9716-ded456f3ae9e"}]},"parent":{"ref":"EID6ee68f1e-0175-1000-5fd4-a3cd200ff90b"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:10:05Z","duration":80,"status":"PASSED"}]},"parent":{"ref":"EID6ee68f1e-0175-1000-fe31-7cf3fbd7387d"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:10:05Z","duration":267,"status":"PASSED"},{"id":"EID6ee69029-0175-1000-9ff6-96ed4016c631","testStepResults":{"TestStepResult":{"id":"EID6ee69029-0175-1000-9551-53b1ba6c54ac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee69123-0175-1000-8a6a-2c5c8e4cc22c","parent":{"ref":"EID6ee69029-0175-1000-9551-53b1ba6c54ac"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee69123-0175-1000-377e-0300914b4b37","parent":{"ref":"EID6ee69029-0175-1000-9551-53b1ba6c54ac"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee69123-0175-1000-5f2f-f9bd4444f50c","parent":{"ref":"EID6ee69029-0175-1000-9551-53b1ba6c54ac"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84fcb18d-3748-416e-a9a7-9a774f874718"},{"ref":"EIDf94bd930-eae1-43a2-bf13-a9a3f5dcae6b"},{"ref":"EID6d608345-66bb-4de2-8dff-e63d9c5962f3"}]},"parent":{"ref":"EID6ee69029-0175-1000-9ff6-96ed4016c631"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:10:05Z","duration":128,"status":"PASSED"}},"parent":{"ref":"EID6ee68f1e-0175-1000-fe31-7cf3fbd7387d"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:10:05Z","duration":250,"status":"PASSED"}]},"parent":{"ref":"EID84ce8428-9126-44cb-b018-55529a525833"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:10:05Z","duration":517,"status":"PASSED"},{"id":"EID6ee69123-0175-1000-3643-730545eac5f0","testCaseResults":{"TestCaseResult":[{"id":"EID6ee69123-0175-1000-6d35-154cce01fa18","testStepResults":{"TestStepResult":[{"id":"EID6ee69123-0175-1000-fb4d-d1d12486cd55","parent":{"ref":"EID6ee69123-0175-1000-6d35-154cce01fa18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:10:05Z","duration":128,"status":"PASSED"},{"id":"EID6ee69124-0175-1000-3ac0-a78fbeedd1e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee691e5-0175-1000-e269-56bb74d0c70b","parent":{"ref":"EID6ee69124-0175-1000-3ac0-a78fbeedd1e2"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee691e5-0175-1000-9fd2-461e65110688","parent":{"ref":"EID6ee69124-0175-1000-3ac0-a78fbeedd1e2"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee691e5-0175-1000-d941-cb526c77fdba","parent":{"ref":"EID6ee69124-0175-1000-3ac0-a78fbeedd1e2"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee691e5-0175-1000-b28a-a7b7dde15036","parent":{"ref":"EID6ee69124-0175-1000-3ac0-a78fbeedd1e2"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee691e5-0175-1000-04dd-2f8f4bd84336","parent":{"ref":"EID6ee69124-0175-1000-3ac0-a78fbeedd1e2"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:10:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b65c77d-f142-4088-95d4-1389cd49de3b"},{"ref":"EIDf44247af-8d9e-444c-96d2-c8e5258f9578"},{"ref":"EID1c1905cd-0402-4942-8ac8-a294fead2373"}]},"parent":{"ref":"EID6ee69123-0175-1000-6d35-154cce01fa18"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:10:05Z","duration":85,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:10:05Z","duration":202,"status":"PASSED"},{"id":"EID6ee691ed-0175-1000-9463-059cc9b77dee","testStepResults":{"TestStepResult":[{"id":"EID6ee691ed-0175-1000-a69f-ed48adee10de","attachments":{"attachment":[{"ref":"EID5d4e271f-56b3-4c0e-8193-aab1e2d52959"},{"ref":"EID73eef5ee-f1e4-415c-9a98-3a341d563272"}]},"parent":{"ref":"EID6ee691ed-0175-1000-9463-059cc9b77dee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:10:05Z","duration":223,"status":"PASSED"},{"id":"EID6ee692f6-0175-1000-6668-be1b15b4a68b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6949e-0175-1000-a49c-4eee7cc1ca49","parent":{"ref":"EID6ee692f6-0175-1000-6668-be1b15b4a68b"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee6949e-0175-1000-5ff8-0c67b9dae602","parent":{"ref":"EID6ee692f6-0175-1000-6668-be1b15b4a68b"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee6949e-0175-1000-26d6-2d6eaa72061e","parent":{"ref":"EID6ee692f6-0175-1000-6668-be1b15b4a68b"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee6949e-0175-1000-bfc9-e9b1aa9e2aeb","parent":{"ref":"EID6ee692f6-0175-1000-6668-be1b15b4a68b"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:10:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID74c2f54d-f7ef-44f7-8739-925ae04bec09"},{"ref":"EID46f94c1c-2062-4413-995e-5c7dbbd64f24"},{"ref":"EID52fb5cb5-bc79-41f8-aba3-326aa9b7ec1a"}]},"parent":{"ref":"EID6ee691ed-0175-1000-9463-059cc9b77dee"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:10:06Z","duration":289,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:10:05Z","duration":689,"status":"PASSED"},{"id":"EID6ee6949e-0175-1000-783f-097bcf1f0142","testStepResults":{"TestStepResult":[{"id":"EID6ee6949e-0175-1000-efd6-6b734e75d83f","attachments":{"attachment":[{"ref":"EIDa2c7b011-4e39-4c50-9bd9-efb7136ea874"},{"ref":"EID60d93d58-373b-4b97-a444-64ef10e2e3a8"}]},"parent":{"ref":"EID6ee6949e-0175-1000-783f-097bcf1f0142"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:10:06Z","duration":421,"status":"PASSED"},{"id":"EID6ee69665-0175-1000-05be-03f08b77a039","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee697a2-0175-1000-2ace-330a41403f63","parent":{"ref":"EID6ee69665-0175-1000-05be-03f08b77a039"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee697a2-0175-1000-e2da-698f20caa2c5","parent":{"ref":"EID6ee69665-0175-1000-05be-03f08b77a039"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee697a2-0175-1000-8302-c2870cd53665","parent":{"ref":"EID6ee69665-0175-1000-05be-03f08b77a039"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee697a2-0175-1000-91d6-c5ef0884edd3","parent":{"ref":"EID6ee69665-0175-1000-05be-03f08b77a039"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee697a2-0175-1000-afbe-cac640354e84","parent":{"ref":"EID6ee69665-0175-1000-05be-03f08b77a039"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID213ee1b5-9bd6-42a8-af4c-a2f4b294426d"},{"ref":"EIDbf3c8a43-cf3d-4c01-95a5-7e9af93b3433"},{"ref":"EIDd0e407a6-304e-457a-9ab9-b5ba16d98a5c"}]},"parent":{"ref":"EID6ee6949e-0175-1000-783f-097bcf1f0142"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:10:06Z","duration":228,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:10:06Z","duration":772,"status":"PASSED"},{"id":"EID6ee697a2-0175-1000-0775-b1b190300f97","testStepResults":{"TestStepResult":[{"id":"EID6ee697a2-0175-1000-2c8c-c6be39976ef5","attachments":{"attachment":[{"ref":"EIDe09038ec-a321-49b4-8c42-499cfdc25f74"},{"ref":"EID8d7dd114-a64e-49e2-af3b-2ef6cadeb207"}]},"parent":{"ref":"EID6ee697a2-0175-1000-0775-b1b190300f97"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:10:07Z","duration":95,"status":"PASSED"},{"id":"EID6ee69836-0175-1000-9080-cffd1a9261f5","parent":{"ref":"EID6ee697a2-0175-1000-0775-b1b190300f97"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee69837-0175-1000-3efb-781a536ed7e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6992b-0175-1000-a3bd-af23c4c46f22","parent":{"ref":"EID6ee69837-0175-1000-3efb-781a536ed7e4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee6992b-0175-1000-7855-19097d9fd1b8","parent":{"ref":"EID6ee69837-0175-1000-3efb-781a536ed7e4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee6992b-0175-1000-fd83-80a3d5257c8b","parent":{"ref":"EID6ee69837-0175-1000-3efb-781a536ed7e4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee6992b-0175-1000-6ab7-5751b2b98c9b","parent":{"ref":"EID6ee69837-0175-1000-3efb-781a536ed7e4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:10:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID40af82f5-4f08-4096-89e1-a3f54d9bf1de"},{"ref":"EIDb1cbfd29-83b3-4eeb-b7e7-7fd173768c70"},{"ref":"EID75d1ec4e-59f1-47c8-b401-db558f80b675"}]},"parent":{"ref":"EID6ee697a2-0175-1000-0775-b1b190300f97"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:10:07Z","duration":77,"status":"PASSED"},{"id":"EID6ee6992b-0175-1000-0ddf-dc56b4535ff5","attachments":{"attachment":{"ref":"EIDae2dd7d9-2943-457b-8722-8dbc4bc9ec3e"}},"parent":{"ref":"EID6ee697a2-0175-1000-0775-b1b190300f97"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:10:07Z","duration":1,"status":"PASSED"},{"id":"EID6ee69939-0175-1000-0947-6caa016ff439","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee69ab3-0175-1000-a668-02e1cbe802e5","parent":{"ref":"EID6ee69939-0175-1000-0947-6caa016ff439"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69ab3-0175-1000-9b1e-e848e4f87bc7","parent":{"ref":"EID6ee69939-0175-1000-0947-6caa016ff439"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69ab3-0175-1000-84b7-5370b6013841","parent":{"ref":"EID6ee69939-0175-1000-0947-6caa016ff439"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69ab3-0175-1000-2d42-fdba7f992646","parent":{"ref":"EID6ee69939-0175-1000-0947-6caa016ff439"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69ab3-0175-1000-5972-e8a5c1bdc836","parent":{"ref":"EID6ee69939-0175-1000-0947-6caa016ff439"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa90356fa-4254-4e8f-af40-c9ad930c2cd5"},{"ref":"EID576286be-f12d-46b3-85b3-23c4537e4660"},{"ref":"EID736c5623-95d8-4ec2-bbb6-ffc5de88e131"}]},"parent":{"ref":"EID6ee697a2-0175-1000-0775-b1b190300f97"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:10:07Z","duration":209,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:10:07Z","duration":786,"status":"PASSED"},{"id":"EID6ee69ab4-0175-1000-02c1-6cf199e94f08","testStepResults":{"TestStepResult":[{"id":"EID6ee69ab4-0175-1000-fcb5-90ce2e24d65c","attachments":{"attachment":[{"ref":"EID6ac4a694-e50c-4806-8ec6-ef0aa44c6de8"},{"ref":"EID58b62b18-5c94-4bec-9428-ad6597ef979a"}]},"parent":{"ref":"EID6ee69ab4-0175-1000-02c1-6cf199e94f08"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:10:08Z","duration":163,"status":"PASSED"},{"id":"EID6ee69ba0-0175-1000-f02b-57a47337f673","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee69c53-0175-1000-cf46-95553c9b0618","parent":{"ref":"EID6ee69ba0-0175-1000-f02b-57a47337f673"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69c53-0175-1000-ba57-97d2dc839704","parent":{"ref":"EID6ee69ba0-0175-1000-f02b-57a47337f673"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69c53-0175-1000-b731-057aa05b0142","parent":{"ref":"EID6ee69ba0-0175-1000-f02b-57a47337f673"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee69c53-0175-1000-2cdb-6ba873abc696","parent":{"ref":"EID6ee69ba0-0175-1000-f02b-57a47337f673"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:10:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID351962d7-a366-4011-b87c-69692c6364f0"},{"ref":"EID3c399219-5cea-4bce-9f22-782876123a17"},{"ref":"EIDbfe2b751-47f3-43a7-8d79-bb1d023ba36b"}]},"parent":{"ref":"EID6ee69ab4-0175-1000-02c1-6cf199e94f08"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:10:08Z","duration":97,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:10:08Z","duration":415,"status":"PASSED"},{"id":"EID6ee69c54-0175-1000-8d78-7847ff9d4507","testStepResults":{"TestStepResult":[{"id":"EID6ee69c54-0175-1000-7441-8a85504527e4","attachments":{"attachment":[{"ref":"EIDe64ea7f0-12de-4b0d-86ce-729c05049b6f"},{"ref":"EID2c3a673b-89be-483b-8c53-fd907905abe6"}]},"parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:10:08Z","duration":574,"status":"PASSED"},{"id":"EID6ee69eba-0175-1000-3d03-79bd7f75590f","parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee69eba-0175-1000-77f4-f75902fc704c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee69fa2-0175-1000-bfa3-174b5b28d4e1","parent":{"ref":"EID6ee69eba-0175-1000-77f4-f75902fc704c"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee69fa2-0175-1000-2956-243663fd85d5","parent":{"ref":"EID6ee69eba-0175-1000-77f4-f75902fc704c"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee69fa2-0175-1000-c8a2-3f88a526d786","parent":{"ref":"EID6ee69eba-0175-1000-77f4-f75902fc704c"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee69fa2-0175-1000-85c6-3b1f909ff973","parent":{"ref":"EID6ee69eba-0175-1000-77f4-f75902fc704c"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID70cb840f-8857-4801-b115-e1cd52b7daad"},{"ref":"EIDb9a7a734-1e61-4b76-9e49-237aa7b162d0"},{"ref":"EID4f914f34-b1bf-4ce1-af56-88def27ed2dd"}]},"parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:10:09Z","duration":107,"status":"PASSED"},{"id":"EID6ee69fa2-0175-1000-6bbe-e91fb90cd56c","attachments":{"attachment":{"ref":"EIDfaca066f-b896-4041-a338-b7e5aa2f7d51"}},"parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:10:09Z","duration":2,"status":"PASSED"},{"id":"EID6ee69fb3-0175-1000-f9dd-a02664ea6189","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6a095-0175-1000-c71a-3508f58fe08d","parent":{"ref":"EID6ee69fb3-0175-1000-f9dd-a02664ea6189"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a095-0175-1000-d9c0-00b6369258ae","parent":{"ref":"EID6ee69fb3-0175-1000-f9dd-a02664ea6189"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a095-0175-1000-75cb-fff9c8efced0","parent":{"ref":"EID6ee69fb3-0175-1000-f9dd-a02664ea6189"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:10:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID707d52cb-b00b-4253-ac80-b7db750f9207"},{"ref":"EID1b852fe3-36e9-4300-9a8d-348265a385fe"},{"ref":"EIDee932b24-aaad-4e89-b9cf-32905e20e2cc"}]},"parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:10:09Z","duration":163,"status":"PASSED"},{"id":"EID6ee6a095-0175-1000-3ed1-842d253724b3","attachments":{"attachment":{"ref":"EIDb4131f45-8fc9-419c-94f6-8fd07029246c"}},"parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:10:09Z","duration":1,"status":"PASSED"},{"id":"EID6ee6a0da-0175-1000-da99-971d550be2af","attachments":{"attachment":{"ref":"EID374ccb8a-abe5-4835-bc50-0098c06bf9e9"}},"parent":{"ref":"EID6ee69c54-0175-1000-8d78-7847ff9d4507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:10:09Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:10:08Z","duration":1188,"status":"PASSED"},{"id":"EID6ee6a0f8-0175-1000-2335-f1adc2f149e5","testStepResults":{"TestStepResult":[{"id":"EID6ee6a100-0175-1000-9e16-84033786da19","attachments":{"attachment":[{"ref":"EID180a1288-2e15-4941-b500-2a1fa544c2ba"},{"ref":"EID57f0cfda-b400-4570-9c3f-56f5ade3a172"}]},"parent":{"ref":"EID6ee6a0f8-0175-1000-2335-f1adc2f149e5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:10:09Z","duration":240,"status":"PASSED"},{"id":"EID6ee6a23c-0175-1000-70bb-df3479318e8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6a4ee-0175-1000-b471-a3d6c0e28799","parent":{"ref":"EID6ee6a23c-0175-1000-70bb-df3479318e8f"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a4ee-0175-1000-a863-3de8f48e32c2","parent":{"ref":"EID6ee6a23c-0175-1000-70bb-df3479318e8f"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a4ee-0175-1000-049f-fdd5e95959b6","parent":{"ref":"EID6ee6a23c-0175-1000-70bb-df3479318e8f"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a4ee-0175-1000-1acf-d7b726c56057","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee6a23c-0175-1000-70bb-df3479318e8f"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID82702551-6e06-482e-a9af-a4a67ab71b3a"},{"ref":"EID9ba20920-c075-4c3b-b31a-812dbde63cf9"},{"ref":"EIDe176245a-0e6e-4ecc-8b0d-bede5588aed4"}]},"parent":{"ref":"EID6ee6a0f8-0175-1000-2335-f1adc2f149e5"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:10:09Z","duration":522,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:10:09Z","duration":1022,"status":"PASSED_MANUAL"},{"id":"EID6ee6a4f6-0175-1000-2fba-0cfe0dbe749d","testStepResults":{"TestStepResult":{"id":"EID6ee6a4f6-0175-1000-85ed-921f6d281734","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6a577-0175-1000-c377-7105481341fd","parent":{"ref":"EID6ee6a4f6-0175-1000-85ed-921f6d281734"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a577-0175-1000-8a15-8a4a031119cf","parent":{"ref":"EID6ee6a4f6-0175-1000-85ed-921f6d281734"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a577-0175-1000-5100-3a8b890b9b32","parent":{"ref":"EID6ee6a4f6-0175-1000-85ed-921f6d281734"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a577-0175-1000-5660-5e5cc03f9df0","parent":{"ref":"EID6ee6a4f6-0175-1000-85ed-921f6d281734"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:10:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1f1f872d-f5c6-4270-b485-81664d4125a1"},{"ref":"EID4e5a4784-33ee-4916-8d41-11811211c8a8"},{"ref":"EID36da9143-36af-40eb-b801-a5b6d83aaca1"}]},"parent":{"ref":"EID6ee6a4f6-0175-1000-2fba-0cfe0dbe749d"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:10:10Z","duration":37,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:10:10Z","duration":130,"status":"PASSED"},{"id":"EID6ee6a578-0175-1000-e10a-46944fa7f1a5","testStepResults":{"TestStepResult":{"id":"EID6ee6a578-0175-1000-49c3-3810e225c5ba","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6a65b-0175-1000-32ac-5d307c9f1971","parent":{"ref":"EID6ee6a578-0175-1000-49c3-3810e225c5ba"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a65b-0175-1000-0a5a-6c8131b724eb","parent":{"ref":"EID6ee6a578-0175-1000-49c3-3810e225c5ba"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a65b-0175-1000-32b8-077baec79a4a","parent":{"ref":"EID6ee6a578-0175-1000-49c3-3810e225c5ba"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a65b-0175-1000-c71d-c545ad43d662","parent":{"ref":"EID6ee6a578-0175-1000-49c3-3810e225c5ba"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfe4848ff-707f-42f5-9d6f-2af6fffc296c"},{"ref":"EIDea687426-3c1d-4d00-9139-fa472f7ce2c6"},{"ref":"EIDd04ec425-71b5-4122-8779-56dc901b6267"}]},"parent":{"ref":"EID6ee6a578-0175-1000-e10a-46944fa7f1a5"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:10:10Z","duration":93,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:10:10Z","duration":228,"status":"PASSED"},{"id":"EID6ee6a65c-0175-1000-7106-50cd5e4aaa9a","testStepResults":{"TestStepResult":[{"id":"EID6ee6a664-0175-1000-5767-c6c02bb0e5e1","attachments":{"attachment":[{"ref":"EIDad9d0df8-88e1-4c2a-bee0-b6b3b19a3dbd"},{"ref":"EID48e67dcb-70ab-4fa4-8f1f-42ee913e2bbd"},{"ref":"EID7fc494e8-66ca-4b81-9708-a27c683579d7"},{"ref":"EID0305a9db-0543-46ae-b93a-019f88dfabc9"},{"ref":"EID095d764d-0a81-4b10-9bde-17dcf1742547"},{"ref":"EID9985bdea-9ede-466b-a306-28f8fc88651e"},{"ref":"EID809112ad-c4c6-42a7-864e-279a5eb57314"},{"ref":"EIDff4ce69a-df2e-487d-ae88-8f59b6d26e30"},{"ref":"EID96410e12-24f8-4958-b532-381c3f7db4ef"},{"ref":"EIDb06dfaf1-5087-4ab1-b7f6-7eaddcea892c"},{"ref":"EID9be49223-6629-4ceb-83b1-59f0d0aa5a81"},{"ref":"EID2eb742e0-ddd7-4074-b5c3-00228bcadbc7"}]},"parent":{"ref":"EID6ee6a65c-0175-1000-7106-50cd5e4aaa9a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:10:11Z","duration":423,"status":"PASSED"},{"id":"EID6ee6a8b7-0175-1000-c732-e7297c6938ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6a963-0175-1000-a87a-87b66c271214","parent":{"ref":"EID6ee6a8b7-0175-1000-c732-e7297c6938ec"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a963-0175-1000-5c04-4ef9473da78d","parent":{"ref":"EID6ee6a8b7-0175-1000-c732-e7297c6938ec"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a963-0175-1000-28c1-ee212f5d2ad2","parent":{"ref":"EID6ee6a8b7-0175-1000-c732-e7297c6938ec"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a963-0175-1000-1777-1dfcba6b1e70","parent":{"ref":"EID6ee6a8b7-0175-1000-c732-e7297c6938ec"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6a963-0175-1000-7c3c-65444e338fa1","parent":{"ref":"EID6ee6a8b7-0175-1000-c732-e7297c6938ec"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID18ef28c9-d517-4d51-b6f4-2b9451b81c46"},{"ref":"EIDee9380d4-b8a8-45ad-8a20-28e805ab4f63"},{"ref":"EID7439f2cd-ec95-4f2a-9db8-49735f39390f"}]},"parent":{"ref":"EID6ee6a65c-0175-1000-7106-50cd5e4aaa9a"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:10:11Z","duration":44,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:10:11Z","duration":776,"status":"PASSED"},{"id":"EID6ee6a964-0175-1000-104d-717f29559752","testStepResults":{"TestStepResult":{"id":"EID6ee6a964-0175-1000-ea70-610008aa927f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6aa10-0175-1000-8c63-13cb1b8c081e","parent":{"ref":"EID6ee6a964-0175-1000-ea70-610008aa927f"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6aa11-0175-1000-65e6-4264c895c2df","parent":{"ref":"EID6ee6a964-0175-1000-ea70-610008aa927f"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6aa11-0175-1000-9c1a-04dd1ac04f91","parent":{"ref":"EID6ee6a964-0175-1000-ea70-610008aa927f"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee6aa11-0175-1000-5c83-718c590a64f1","parent":{"ref":"EID6ee6a964-0175-1000-ea70-610008aa927f"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:10:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa35d3f47-b22a-4870-980b-5e7de5b31c11"},{"ref":"EIDd1dcfe81-18d0-409e-89d1-7f737216bcb7"},{"ref":"EIDbf61b063-2fdd-4e66-8d8f-58986992f1c7"}]},"parent":{"ref":"EID6ee6a964-0175-1000-104d-717f29559752"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:10:11Z","duration":54,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:10:11Z","duration":173,"status":"PASSED"},{"id":"EID6ee6aa11-0175-1000-de3a-5a5c493ec821","testStepResults":{"TestStepResult":{"id":"EID6ee6aa11-0175-1000-589c-c0a2aea79926","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6abb3-0175-1000-7fdb-aac6fa91a51a","parent":{"ref":"EID6ee6aa11-0175-1000-589c-c0a2aea79926"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6abb3-0175-1000-d963-6c4821baf7f3","parent":{"ref":"EID6ee6aa11-0175-1000-589c-c0a2aea79926"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6abb3-0175-1000-729d-77ed341a7e0a","parent":{"ref":"EID6ee6aa11-0175-1000-589c-c0a2aea79926"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6abb3-0175-1000-3fb1-4d1ac22ca5d4","parent":{"ref":"EID6ee6aa11-0175-1000-589c-c0a2aea79926"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6abb3-0175-1000-2dd7-4ca1a32eac5f","parent":{"ref":"EID6ee6aa11-0175-1000-589c-c0a2aea79926"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6abb3-0175-1000-9f6e-0e8dd24a2393","parent":{"ref":"EID6ee6aa11-0175-1000-589c-c0a2aea79926"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf2f9d3dc-c275-456c-9fcb-e56b4ec06fda"},{"ref":"EIDea294a03-fafb-49b3-ab0e-8061e45afb72"},{"ref":"EID0af33f4f-4e6d-4607-8f8f-3780a3b31b10"}]},"parent":{"ref":"EID6ee6aa11-0175-1000-de3a-5a5c493ec821"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:10:11Z","duration":114,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:10:11Z","duration":418,"status":"PASSED"},{"id":"EID6ee6abb3-0175-1000-24c0-81aecfe95f4e","testStepResults":{"TestStepResult":{"id":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6ad05-0175-1000-a71a-de09d9b089f5","parent":{"ref":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ad05-0175-1000-bb5c-4d068441c6a5","parent":{"ref":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ad05-0175-1000-d2ea-8645fa980fc3","parent":{"ref":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ad05-0175-1000-56ad-c612dfc968ec","parent":{"ref":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ad05-0175-1000-f778-ef4c2ba0d317","parent":{"ref":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ad05-0175-1000-a62a-6a3479305b40","parent":{"ref":"EID6ee6abb3-0175-1000-2f10-7efd99375ec9"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:10:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDebc56fd1-f7ca-4d75-a332-c91c98f939cb"},{"ref":"EIDf898286b-a9a2-4d49-b3fa-491ff3e1d139"},{"ref":"EID6832ab57-071d-4914-ad44-bb96c0920687"}]},"parent":{"ref":"EID6ee6abb3-0175-1000-24c0-81aecfe95f4e"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:10:12Z","duration":198,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:10:12Z","duration":345,"status":"PASSED"},{"id":"EID6ee6ad0c-0175-1000-a387-c84b33878a27","testStepResults":{"TestStepResult":{"id":"EID6ee6ad0c-0175-1000-fd46-6932eb80f4a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6ae0b-0175-1000-1d74-0febf6b17e23","parent":{"ref":"EID6ee6ad0c-0175-1000-fd46-6932eb80f4a4"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ae0b-0175-1000-867c-5ce8a47f9b3e","parent":{"ref":"EID6ee6ad0c-0175-1000-fd46-6932eb80f4a4"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ae0b-0175-1000-3358-c8ca37039899","parent":{"ref":"EID6ee6ad0c-0175-1000-fd46-6932eb80f4a4"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ae0b-0175-1000-3815-d4cc4fe52a5f","parent":{"ref":"EID6ee6ad0c-0175-1000-fd46-6932eb80f4a4"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID065c2bd3-d31c-466e-976a-3e0931a38e41"},{"ref":"EID3383db0d-cf4a-452e-95ec-d964be7ca773"},{"ref":"EID8dbb2937-57fd-4844-ad8b-098593bab28e"}]},"parent":{"ref":"EID6ee6ad0c-0175-1000-a387-c84b33878a27"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:10:12Z","duration":139,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:10:12Z","duration":256,"status":"PASSED"},{"id":"EID6ee6ae0c-0175-1000-de44-0120e852631a","testStepResults":{"TestStepResult":[{"id":"EID6ee6ae0c-0175-1000-4ab8-86cc06cb34c0","attachments":{"attachment":[{"ref":"EID63b36290-a1f3-4be3-a738-89d7c71fcef3"},{"ref":"EID71cd4980-af8c-4e7c-b58b-eb8499fa195e"},{"ref":"EIDde27bee5-0390-4b81-9c04-1044b81ca66d"},{"ref":"EID5ed2e313-71a7-4fb1-bdae-989b219c58a4"}]},"parent":{"ref":"EID6ee6ae0c-0175-1000-de44-0120e852631a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:10:13Z","duration":395,"status":"PASSED"},{"id":"EID6ee6b001-0175-1000-c588-21c487dfdd1e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b4d1-0175-1000-6e55-395ea223a70e","parent":{"ref":"EID6ee6b001-0175-1000-c588-21c487dfdd1e"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4d1-0175-1000-215e-b8545d464c24","parent":{"ref":"EID6ee6b001-0175-1000-c588-21c487dfdd1e"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4d1-0175-1000-7e52-bad9e4a98ea9","parent":{"ref":"EID6ee6b001-0175-1000-c588-21c487dfdd1e"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4d1-0175-1000-1db1-30ae6f7d6a1d","parent":{"ref":"EID6ee6b001-0175-1000-c588-21c487dfdd1e"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdc61a8fb-0700-4d69-90b8-e91b04f1ec98"},{"ref":"EID2d5b85ef-3f04-4bb8-a7c8-5a8fd7a1b233"},{"ref":"EIDbd35649d-0759-4020-9ec5-40c22b537ad9"}]},"parent":{"ref":"EID6ee6ae0c-0175-1000-de44-0120e852631a"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:10:13Z","duration":1091,"status":"PASSED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:10:13Z","duration":1747,"status":"PASSED"},{"id":"EID6ee6b4e4-0175-1000-f8a0-7a02e35108a7","testStepResults":{"TestStepResult":{"id":"EID6ee6b4e4-0175-1000-b22f-31a52b99960a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b5d7-0175-1000-d201-93e36f189d1e","parent":{"ref":"EID6ee6b4e4-0175-1000-b22f-31a52b99960a"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b5d7-0175-1000-e321-90f102baeae3","parent":{"ref":"EID6ee6b4e4-0175-1000-b22f-31a52b99960a"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b5d7-0175-1000-559a-6adf187e8aa2","parent":{"ref":"EID6ee6b4e4-0175-1000-b22f-31a52b99960a"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b5d7-0175-1000-b1e4-12658b9c60bb","parent":{"ref":"EID6ee6b4e4-0175-1000-b22f-31a52b99960a"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID661b2a5a-68df-4c03-8043-e499482c2157"},{"ref":"EIDe2fbd3ff-4ba4-443e-956c-ddfbc0b6a2b9"},{"ref":"EID5c3a015b-219f-4434-abe8-400b2df0b807"}]},"parent":{"ref":"EID6ee6b4e4-0175-1000-f8a0-7a02e35108a7"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:10:14Z","duration":126,"status":"PASSED"}},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:10:14Z","duration":244,"status":"PASSED"},{"id":"EID6ee6b5d8-0175-1000-cbd8-1b094800c60c","testStepResults":{"TestStepResult":[{"id":"EID6ee6b5d8-0175-1000-4bdf-666848915c20","parent":{"ref":"EID6ee6b5d8-0175-1000-cbd8-1b094800c60c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b5e3-0175-1000-7e6a-5fb37036b27d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b830-0175-1000-9680-1b9e06c24fc7","parent":{"ref":"EID6ee6b5e3-0175-1000-7e6a-5fb37036b27d"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:10:15Z","duration":1,"status":"PASSED"},{"id":"EID6ee6b831-0175-1000-f97d-be45697fd5a2","parent":{"ref":"EID6ee6b5e3-0175-1000-7e6a-5fb37036b27d"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b831-0175-1000-553e-77e4b55f5469","parent":{"ref":"EID6ee6b5e3-0175-1000-7e6a-5fb37036b27d"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b831-0175-1000-deed-0a4ff5330c38","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee6b5e3-0175-1000-7e6a-5fb37036b27d"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID65d64253-041c-43e2-99d7-7514dc0c9af4"},{"ref":"EIDabe13f3e-478c-44cc-ba4d-fe69ffe07861"},{"ref":"EID65822b91-0738-40fb-9e88-21a9f55ffa04"}]},"parent":{"ref":"EID6ee6b5d8-0175-1000-cbd8-1b094800c60c"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:10:15Z","duration":473,"status":"FAILED"}]},"parent":{"ref":"EID6ee69123-0175-1000-3643-730545eac5f0"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:10:15Z","duration":601,"status":"FAILED"}]},"parent":{"ref":"EID84ce8428-9126-44cb-b018-55529a525833"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:10:05Z","duration":9998,"status":"FAILED"},{"id":"EID6ee6b831-0175-1000-4f96-6c868d89dae7","testCaseResults":{"TestCaseResult":[{"id":"EID6ee6b831-0175-1000-4bfe-96e25aee02d2","testStepResults":{"TestStepResult":[{"id":"EID6ee6b831-0175-1000-ff0e-19abcc24dcb4","parent":{"ref":"EID6ee6b831-0175-1000-4bfe-96e25aee02d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b831-0175-1000-56b2-a91b365cf6da","parent":{"ref":"EID6ee6b831-0175-1000-4bfe-96e25aee02d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":126,"status":"PASSED"},{"id":"EID6ee6b831-0175-1000-0c5c-951017cd2e73","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6ba8f-0175-1000-f9ee-00004acf03d5","parent":{"ref":"EID6ee6b831-0175-1000-0c5c-951017cd2e73"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ba8f-0175-1000-d5a9-e7f4dd31d8de","parent":{"ref":"EID6ee6b831-0175-1000-0c5c-951017cd2e73"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ba8f-0175-1000-7124-858f7c6b80ea","parent":{"ref":"EID6ee6b831-0175-1000-0c5c-951017cd2e73"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3cd58f34-3553-4675-9670-4016a5173669"},{"ref":"EID7e50ffd6-e614-42b7-ad69-dae0e62a632e"},{"ref":"EIDd252be28-a0c3-4492-82db-4ec62b98519b"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4bfe-96e25aee02d2"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:10:15Z","duration":493,"status":"PASSED"},{"id":"EID6ee6ba8f-0175-1000-29fc-785b7d1e9bea","attachments":{"attachment":{"ref":"EID2a77e0b7-8bf2-45fb-9efc-5165c29ef17e"}},"parent":{"ref":"EID6ee6b831-0175-1000-4bfe-96e25aee02d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6baa6-0175-1000-61d5-7d11992132a4","parent":{"ref":"EID6ee6b831-0175-1000-4bfe-96e25aee02d2"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:10:16Z","duration":68,"status":"PASSED"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:10:15Z","duration":698,"status":"PASSED"},{"id":"EID6ee6baeb-0175-1000-9677-516d88090028","testStepResults":{"TestStepResult":[{"id":"EID6ee6baeb-0175-1000-b46b-c2b81db054f6","parent":{"ref":"EID6ee6baeb-0175-1000-9677-516d88090028"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:10:16Z","duration":128,"status":"PASSED"},{"id":"EID6ee6baeb-0175-1000-044f-ff3f85129a6e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6be9b-0175-1000-ec29-f05f99bcc17f","parent":{"ref":"EID6ee6baeb-0175-1000-044f-ff3f85129a6e"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6be9b-0175-1000-e199-f1b7dc7965b6","parent":{"ref":"EID6ee6baeb-0175-1000-044f-ff3f85129a6e"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6be9b-0175-1000-7ff3-7bb840e5b610","parent":{"ref":"EID6ee6baeb-0175-1000-044f-ff3f85129a6e"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6be9b-0175-1000-be70-9ac889995745","parent":{"ref":"EID6ee6baeb-0175-1000-044f-ff3f85129a6e"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6be9b-0175-1000-d941-2185dab4ff6a","parent":{"ref":"EID6ee6baeb-0175-1000-044f-ff3f85129a6e"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfae3468e-834b-403e-b889-5e19b31d3f56"},{"ref":"EID4309a94c-28c3-4ef8-8daa-3a7c79b1b42b"},{"ref":"EID52be83b3-b30d-4e6e-9d00-5bab795922bc"}]},"parent":{"ref":"EID6ee6baeb-0175-1000-9677-516d88090028"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:10:16Z","duration":788,"status":"PASSED"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:10:16Z","duration":944,"status":"PASSED"},{"id":"EID6ee6be9c-0175-1000-bae8-bbe5b530910f","testStepResults":{"TestStepResult":[{"id":"EID6ee6be9c-0175-1000-74a0-3244e80f8c4b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6bfd4-0175-1000-9bc4-96b467c9d659","parent":{"ref":"EID6ee6be9c-0175-1000-74a0-3244e80f8c4b"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bfd4-0175-1000-3d01-93f306edacab","parent":{"ref":"EID6ee6be9c-0175-1000-74a0-3244e80f8c4b"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bfd4-0175-1000-136d-f5012c4726a0","parent":{"ref":"EID6ee6be9c-0175-1000-74a0-3244e80f8c4b"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2ddf5ef3-1a02-4ae9-bcc7-779c6e5985d7"},{"ref":"EIDa7abfa0c-b740-4899-9788-a449a87ab34b"},{"ref":"EIDea5f5912-8fd6-4a99-b7ac-927825252bc9"}]},"parent":{"ref":"EID6ee6be9c-0175-1000-bae8-bbe5b530910f"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:10:17Z","duration":257,"status":"PASSED"},{"id":"EID6ee6bfe3-0175-1000-ca16-8d296cc18142","attachments":{"attachment":{"ref":"EIDfe43e01d-a2f8-4a27-9065-a05cf699b5fb"}},"parent":{"ref":"EID6ee6be9c-0175-1000-bae8-bbe5b530910f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:10:17Z","duration":1,"status":"PASSED"},{"id":"EID6ee6bfed-0175-1000-2d74-3bf3e5c0a2b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c111-0175-1000-2746-ad6a91565f4e","parent":{"ref":"EID6ee6bfed-0175-1000-2d74-3bf3e5c0a2b9"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c111-0175-1000-b3fb-fe85d88a2039","parent":{"ref":"EID6ee6bfed-0175-1000-2d74-3bf3e5c0a2b9"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c111-0175-1000-45ab-66c0af5c2c92","parent":{"ref":"EID6ee6bfed-0175-1000-2d74-3bf3e5c0a2b9"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c111-0175-1000-6b70-c33026740f16","parent":{"ref":"EID6ee6bfed-0175-1000-2d74-3bf3e5c0a2b9"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c111-0175-1000-1d33-2c85b17df7a1","parent":{"ref":"EID6ee6bfed-0175-1000-2d74-3bf3e5c0a2b9"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe8495686-b8ad-42d5-a8bf-ffa288659428"},{"ref":"EID16e4ff9f-c830-443d-a2cd-30ae477809ca"},{"ref":"EID74b679dc-78b3-449c-9717-7ecb12853ea7"}]},"parent":{"ref":"EID6ee6be9c-0175-1000-bae8-bbe5b530910f"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:10:17Z","duration":198,"status":"PASSED"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:10:17Z","duration":629,"status":"PASSED"},{"id":"EID6ee6c111-0175-1000-a8a0-f0e4d882958e","testStepResults":{"TestStepResult":[{"id":"EID6ee6c111-0175-1000-c0d7-2b7f1b13505c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c1ff-0175-1000-cb77-17433ea00647","parent":{"ref":"EID6ee6c111-0175-1000-c0d7-2b7f1b13505c"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c1ff-0175-1000-94eb-ef2ede7024b8","parent":{"ref":"EID6ee6c111-0175-1000-c0d7-2b7f1b13505c"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c1ff-0175-1000-bc03-06038e7e14b7","parent":{"ref":"EID6ee6c111-0175-1000-c0d7-2b7f1b13505c"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c1ff-0175-1000-4e46-886848cf25c4","parent":{"ref":"EID6ee6c111-0175-1000-c0d7-2b7f1b13505c"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b7224c3-e3a4-4ee0-b381-2e920ea158a5"},{"ref":"EID955df65b-a997-4419-811d-68c4ba404138"},{"ref":"EIDb6bc5d5a-f11c-433c-bcfb-699b945302d3"}]},"parent":{"ref":"EID6ee6c111-0175-1000-a8a0-f0e4d882958e"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:10:17Z","duration":118,"status":"PASSED"},{"id":"EID6ee6c1ff-0175-1000-8bb8-67b9802b6bc5","attachments":{"attachment":{"ref":"EID38f8b290-13b6-4e1c-83c6-a94da6d52906"}},"parent":{"ref":"EID6ee6c111-0175-1000-a8a0-f0e4d882958e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:10:18Z","duration":1,"status":"PASSED"},{"id":"EID6ee6c216-0175-1000-1a75-0924e10ef8ea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c24e-0175-1000-a8ef-d3bb57198ab0","parent":{"ref":"EID6ee6c216-0175-1000-1a75-0924e10ef8ea"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c24e-0175-1000-15e2-69977b3ab974","parent":{"ref":"EID6ee6c216-0175-1000-1a75-0924e10ef8ea"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID152590e2-a179-4a39-9720-125761cc7db4"},{"ref":"EIDcf3851b0-b965-45e2-a1d2-adf62a6f8ed9"}]},"parent":{"ref":"EID6ee6c111-0175-1000-a8a0-f0e4d882958e"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:10:18Z","duration":52,"status":"PASSED"},{"id":"EID6ee6c24f-0175-1000-b212-8b589ba90c30","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c445-0175-1000-21ab-2a7ccb5a8e52","parent":{"ref":"EID6ee6c24f-0175-1000-b212-8b589ba90c30"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c445-0175-1000-67a8-56567210bbda","parent":{"ref":"EID6ee6c24f-0175-1000-b212-8b589ba90c30"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c445-0175-1000-f169-48b866915819","parent":{"ref":"EID6ee6c24f-0175-1000-b212-8b589ba90c30"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c445-0175-1000-b402-329649d61dc8","parent":{"ref":"EID6ee6c24f-0175-1000-b212-8b589ba90c30"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDead0e8a8-1387-4800-bb54-5b9f1f88368f"},{"ref":"EIDc2c56e6f-80dd-4b1f-b6b1-a79797f379ad"},{"ref":"EID7c26e304-8706-41ba-af1c-a722d2859a6d"}]},"parent":{"ref":"EID6ee6c111-0175-1000-a8a0-f0e4d882958e"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:10:18Z","duration":431,"status":"PASSED"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:10:17Z","duration":820,"status":"PASSED"},{"id":"EID6ee6c445-0175-1000-4e93-561d9e58bb4f","testStepResults":{"TestStepResult":{"id":"EID6ee6c445-0175-1000-63b3-cb15cb544c78","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c668-0175-1000-ac73-cb8db6fd0ae5","parent":{"ref":"EID6ee6c445-0175-1000-63b3-cb15cb544c78"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c668-0175-1000-56b8-ea1bc93850f4","parent":{"ref":"EID6ee6c445-0175-1000-63b3-cb15cb544c78"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c668-0175-1000-2a7a-e8432c8ed704","parent":{"ref":"EID6ee6c445-0175-1000-63b3-cb15cb544c78"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b035185-b116-44a9-8ede-c7c4a2472a79"},{"ref":"EIDc2893d47-f2aa-42ef-95a1-dca6f00707ca"},{"ref":"EID02f6ec97-5d23-4845-bdec-0a99be954121"}]},"parent":{"ref":"EID6ee6c445-0175-1000-4e93-561d9e58bb4f"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:10:18Z","duration":417,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:10:18Z","duration":547,"status":"PASSED"},{"id":"EID6ee6c668-0175-1000-7643-5ab050a85933","testStepResults":{"TestStepResult":{"id":"EID6ee6c669-0175-1000-8bfe-b26c9098240c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c918-0175-1000-1a00-ed4a1e3d70bf","parent":{"ref":"EID6ee6c669-0175-1000-8bfe-b26c9098240c"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c918-0175-1000-d1a1-ecfcd33f8dd9","parent":{"ref":"EID6ee6c669-0175-1000-8bfe-b26c9098240c"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c918-0175-1000-3870-93cc064d9f97","parent":{"ref":"EID6ee6c669-0175-1000-8bfe-b26c9098240c"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48462b89-2038-4bd2-8b2f-21153421f2b3"},{"ref":"EIDd9ea8ee2-2811-4b76-a124-a4ad3acb58d2"},{"ref":"EIDe7966c01-a3e8-4b3e-88e7-d51cc9dfa0de"}]},"parent":{"ref":"EID6ee6c668-0175-1000-7643-5ab050a85933"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:10:19Z","duration":536,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:10:19Z","duration":689,"status":"PASSED"},{"id":"EID6ee6c919-0175-1000-6ad4-16bfd463db47","testStepResults":{"TestStepResult":{"id":"EID6ee6c919-0175-1000-6bd8-c8b1ae7e9356","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cad8-0175-1000-2269-c6aef8dec5f8","parent":{"ref":"EID6ee6c919-0175-1000-6bd8-c8b1ae7e9356"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cad8-0175-1000-9fe0-b5871b773693","parent":{"ref":"EID6ee6c919-0175-1000-6bd8-c8b1ae7e9356"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cad8-0175-1000-496d-f9844dc5fa54","parent":{"ref":"EID6ee6c919-0175-1000-6bd8-c8b1ae7e9356"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cad8-0175-1000-f5f0-cc998208da8b","parent":{"ref":"EID6ee6c919-0175-1000-6bd8-c8b1ae7e9356"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cad8-0175-1000-5c42-248fdb6d93d0","parent":{"ref":"EID6ee6c919-0175-1000-6bd8-c8b1ae7e9356"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID22bc960f-ff23-482d-aaae-78a9d955e9e0"},{"ref":"EID6b3a0b0e-ed19-49ff-8d60-1272d11df3df"},{"ref":"EID4ea9f305-fad4-40ca-a497-4dc43c5ea14d"}]},"parent":{"ref":"EID6ee6c919-0175-1000-6ad4-16bfd463db47"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:10:19Z","duration":363,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:10:19Z","duration":447,"status":"PASSED"},{"id":"EID6ee6cad9-0175-1000-df96-c9f1d58ed6fd","testStepResults":{"TestStepResult":{"id":"EID6ee6cad9-0175-1000-a92c-21cb0c5f9973","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cce3-0175-1000-9174-4f7e2fcdc455","parent":{"ref":"EID6ee6cad9-0175-1000-a92c-21cb0c5f9973"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cce3-0175-1000-e9ce-492c1db03e96","parent":{"ref":"EID6ee6cad9-0175-1000-a92c-21cb0c5f9973"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cce3-0175-1000-35fe-90904789b40c","parent":{"ref":"EID6ee6cad9-0175-1000-a92c-21cb0c5f9973"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbabc499e-cfaf-406e-8e35-67e1eadfd58b"},{"ref":"EID05ff34a5-fedd-4ae8-a0dd-f1ee5b7c4e95"},{"ref":"EID9802a990-c384-426d-977d-3782c204020f"}]},"parent":{"ref":"EID6ee6cad9-0175-1000-df96-c9f1d58ed6fd"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:10:20Z","duration":438,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:10:20Z","duration":522,"status":"PASSED"},{"id":"EID6ee6cce3-0175-1000-6bf7-4b3b164eebeb","testStepResults":{"TestStepResult":{"id":"EID6ee6cce3-0175-1000-d0c8-c08c3c9d0b4e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cfd2-0175-1000-46fc-a0e3ae7054bf","parent":{"ref":"EID6ee6cce3-0175-1000-d0c8-c08c3c9d0b4e"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cfd2-0175-1000-a87a-38dc70cfe3dc","parent":{"ref":"EID6ee6cce3-0175-1000-d0c8-c08c3c9d0b4e"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cfd2-0175-1000-3aab-a48d4f2e1c83","parent":{"ref":"EID6ee6cce3-0175-1000-d0c8-c08c3c9d0b4e"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID74756766-4af8-4c77-818d-e9eed0306311"},{"ref":"EIDd065dada-4e92-4e9b-81ed-b22945ffd0d5"},{"ref":"EID839f6c59-f0c5-42b8-9c01-de90d398822c"}]},"parent":{"ref":"EID6ee6cce3-0175-1000-6bf7-4b3b164eebeb"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:10:20Z","duration":679,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:10:20Z","duration":751,"status":"PASSED"},{"id":"EID6ee6cfd2-0175-1000-9a2c-8a267e4a1733","testStepResults":{"TestStepResult":{"id":"EID6ee6cfd2-0175-1000-910a-a869193cd088","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d256-0175-1000-abfc-ecc08d7857ee","parent":{"ref":"EID6ee6cfd2-0175-1000-910a-a869193cd088"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d256-0175-1000-a5e4-9e0de8613a09","parent":{"ref":"EID6ee6cfd2-0175-1000-910a-a869193cd088"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d256-0175-1000-015f-c463e6defd68","parent":{"ref":"EID6ee6cfd2-0175-1000-910a-a869193cd088"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d256-0175-1000-53af-23450c5a4c6e","parent":{"ref":"EID6ee6cfd2-0175-1000-910a-a869193cd088"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID43143398-2aca-4a23-a164-6005ef0a9eaa"},{"ref":"EIDbb24461f-9ec5-49dc-929e-059171334658"},{"ref":"EID037e309b-a720-4d4e-a8ba-f3070f304a4f"}]},"parent":{"ref":"EID6ee6cfd2-0175-1000-9a2c-8a267e4a1733"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:10:21Z","duration":537,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:10:21Z","duration":644,"status":"PASSED"},{"id":"EID6ee6d257-0175-1000-617c-2b2017db65a5","testStepResults":{"TestStepResult":{"id":"EID6ee6d257-0175-1000-4e04-081fef8533cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d4a8-0175-1000-69c0-b78ef5ff1171","parent":{"ref":"EID6ee6d257-0175-1000-4e04-081fef8533cf"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d4a8-0175-1000-93e4-a251e3d547b6","parent":{"ref":"EID6ee6d257-0175-1000-4e04-081fef8533cf"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d4a8-0175-1000-5c41-f24d39bddec9","parent":{"ref":"EID6ee6d257-0175-1000-4e04-081fef8533cf"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d4a8-0175-1000-608e-81b99811e628","parent":{"ref":"EID6ee6d257-0175-1000-4e04-081fef8533cf"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f8f1dab-69fb-4d32-8d42-4dc2d5a38ef2"},{"ref":"EID6b57570c-3061-49b2-b6e6-e83869302df9"},{"ref":"EID63e3fb95-163f-4dc8-921d-ddebddfcf2ac"}]},"parent":{"ref":"EID6ee6d257-0175-1000-617c-2b2017db65a5"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:10:22Z","duration":490,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:10:22Z","duration":593,"status":"PASSED"},{"id":"EID6ee6d4a8-0175-1000-fd86-2ea6f0db057a","testStepResults":{"TestStepResult":[{"id":"EID6ee6d4a8-0175-1000-ee0e-5a4055e87ae6","parent":{"ref":"EID6ee6d4a8-0175-1000-fd86-2ea6f0db057a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d4a8-0175-1000-df69-ba923196ba08","parent":{"ref":"EID6ee6d4a8-0175-1000-fd86-2ea6f0db057a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:10:22Z","duration":214,"status":"PASSED"},{"id":"EID6ee6d4a9-0175-1000-a237-36e3ad8136f0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d662-0175-1000-b201-99deeb589ad1","parent":{"ref":"EID6ee6d4a9-0175-1000-a237-36e3ad8136f0"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d662-0175-1000-da71-4a13f1293c4a","parent":{"ref":"EID6ee6d4a9-0175-1000-a237-36e3ad8136f0"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d662-0175-1000-1f12-40ab7eb14b70","parent":{"ref":"EID6ee6d4a9-0175-1000-a237-36e3ad8136f0"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d662-0175-1000-0e34-ef3d338d4201","parent":{"ref":"EID6ee6d4a9-0175-1000-a237-36e3ad8136f0"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID45ab62dd-c927-455e-b33e-5f810afd50bc"},{"ref":"EID3cb16565-a21f-4c78-bbca-81d87e25ef92"},{"ref":"EID53874062-3bc1-4e04-ae14-3403689685bd"}]},"parent":{"ref":"EID6ee6d4a8-0175-1000-fd86-2ea6f0db057a"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:10:22Z","duration":295,"status":"PASSED"},{"id":"EID6ee6d662-0175-1000-6413-011a9f4fe266","attachments":{"attachment":{"ref":"EID40737cc5-752b-4135-9292-69baa70d2583"}},"parent":{"ref":"EID6ee6d4a8-0175-1000-fd86-2ea6f0db057a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":1,"status":"PASSED"},{"id":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d768-0175-1000-590e-20497d2e0cf7","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d768-0175-1000-ccba-6c749a5795bf","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d768-0175-1000-1338-c67909000d51","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d769-0175-1000-0c94-d81b5292a2ac","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d769-0175-1000-881d-3e8f7923f6f3","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d769-0175-1000-e3ac-18d3148b7f8d","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d769-0175-1000-e4e5-38c4c21dcd4c","parent":{"ref":"EID6ee6d68f-0175-1000-d03b-b1a2f92bf470"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd80817b-234b-48a6-9aa1-bb48fa7a6e9a"},{"ref":"EID98acf24a-debe-402b-aa1d-2fccd3339866"},{"ref":"EID0797ffe5-5e2e-4c5e-a113-c22ea899405a"}]},"parent":{"ref":"EID6ee6d4a8-0175-1000-fd86-2ea6f0db057a"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:10:23Z","duration":117,"status":"PASSED"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:10:22Z","duration":705,"status":"PASSED"},{"id":"EID6ee6d769-0175-1000-386f-227a9bb77195","testStepResults":{"TestStepResult":[{"id":"EID6ee6d771-0175-1000-0bf9-0498266468a2","parent":{"ref":"EID6ee6d769-0175-1000-386f-227a9bb77195"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d771-0175-1000-8ded-05ae8dcd6856","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d7fa-0175-1000-6503-f6031f1d4535","parent":{"ref":"EID6ee6d771-0175-1000-8ded-05ae8dcd6856"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d7fa-0175-1000-0516-7a1643655b86","parent":{"ref":"EID6ee6d771-0175-1000-8ded-05ae8dcd6856"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d7fa-0175-1000-dfbd-69eed8a3a0a4","parent":{"ref":"EID6ee6d771-0175-1000-8ded-05ae8dcd6856"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d7fa-0175-1000-96dd-39f978094105","parent":{"ref":"EID6ee6d771-0175-1000-8ded-05ae8dcd6856"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb15b7e6-f2a9-4661-b8dc-c8e1d1795996"},{"ref":"EID34b03c70-2545-41d5-9a8a-c39a31f262c1"},{"ref":"EID51aa7d31-b648-494e-b611-a73abb09e45f"}]},"parent":{"ref":"EID6ee6d769-0175-1000-386f-227a9bb77195"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:10:23Z","duration":48,"status":"PASSED"},{"id":"EID6ee6d7fa-0175-1000-6bd9-1de92499898e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee6d80d-0175-1000-b5ee-a771901bf473","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d8be-0175-1000-f514-d73dd74ae716","parent":{"ref":"EID6ee6d80d-0175-1000-b5ee-a771901bf473"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d8be-0175-1000-ab1b-8f1807facbcd","parent":{"ref":"EID6ee6d80d-0175-1000-b5ee-a771901bf473"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d8be-0175-1000-83b5-d95e1b202b20","parent":{"ref":"EID6ee6d80d-0175-1000-b5ee-a771901bf473"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID543844ab-8dc4-47a0-aae6-eb6f5be53f86"},{"ref":"EID3f972745-67e9-42fa-a1fb-91cd3b8471be"},{"ref":"EID36a37abc-3108-4c44-9981-89af6f44ff91"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:10:23Z","duration":41,"status":"PASSED"},{"id":"EID6ee6d8c0-0175-1000-619b-209da55cdee2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d918-0175-1000-aeaa-003155542238","parent":{"ref":"EID6ee6d8c0-0175-1000-619b-209da55cdee2"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d918-0175-1000-4cbe-171cb0f73298","parent":{"ref":"EID6ee6d8c0-0175-1000-619b-209da55cdee2"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d918-0175-1000-be0c-2cb7c82edd84","parent":{"ref":"EID6ee6d8c0-0175-1000-619b-209da55cdee2"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDce4c37e7-3822-4bbc-a9bd-8ed132bf175c"},{"ref":"EID6776131f-ea0c-466e-9547-ab1f072f93d7"},{"ref":"EID3ab294db-313b-44c3-93c1-5b959dd9a088"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:10:23Z","duration":42,"status":"PASSED"},{"id":"EID6ee6d91a-0175-1000-dfd1-95d370c21427","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d973-0175-1000-3069-c8cc5d4ddf8e","parent":{"ref":"EID6ee6d91a-0175-1000-dfd1-95d370c21427"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d973-0175-1000-b68b-f05a9d17ec39","parent":{"ref":"EID6ee6d91a-0175-1000-dfd1-95d370c21427"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d973-0175-1000-7b84-47f09c94f189","parent":{"ref":"EID6ee6d91a-0175-1000-dfd1-95d370c21427"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a5822b8-afb3-4228-b54f-581bde25a5f8"},{"ref":"EID3fe6521c-71aa-4db7-98a3-9c1f72d40c9b"},{"ref":"EID5bfbbec0-5567-4883-b202-a0103081cc6f"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:10:24Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6ee6d769-0175-1000-386f-227a9bb77195"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:10:23Z","duration":377,"status":"PASSED"},{"id":"EID6ee6d974-0175-1000-1cb5-03156b50df1e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d9f8-0175-1000-df78-cf14ce07c57c","parent":{"ref":"EID6ee6d974-0175-1000-1cb5-03156b50df1e"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d9f8-0175-1000-70e3-50b12671ff0c","parent":{"ref":"EID6ee6d974-0175-1000-1cb5-03156b50df1e"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d9f8-0175-1000-2ca4-546184fbb0fd","parent":{"ref":"EID6ee6d974-0175-1000-1cb5-03156b50df1e"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d9f8-0175-1000-7148-22f0a842c3c0","parent":{"ref":"EID6ee6d974-0175-1000-1cb5-03156b50df1e"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID34d7c68e-e42c-4966-94b8-4822011c3440"},{"ref":"EID1194ebd5-7f11-42ec-8723-e3fc5865d31c"},{"ref":"EID22c2248b-7fab-4099-9ffb-743c376aae02"}]},"parent":{"ref":"EID6ee6d769-0175-1000-386f-227a9bb77195"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:10:24Z","duration":74,"status":"PASSED"}]},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:10:23Z","duration":655,"status":"PASSED"},{"id":"EID6ee6d9f8-0175-1000-2cec-a7fe5c607e12","testStepResults":{"TestStepResult":{"id":"EID6ee6d9f8-0175-1000-ff1b-676bb54428e1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6dbde-0175-1000-33b1-940bf8c374cc","parent":{"ref":"EID6ee6d9f8-0175-1000-ff1b-676bb54428e1"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dbde-0175-1000-09bf-d6fd3e26ee14","parent":{"ref":"EID6ee6d9f8-0175-1000-ff1b-676bb54428e1"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dbde-0175-1000-fac8-f693d7891a33","parent":{"ref":"EID6ee6d9f8-0175-1000-ff1b-676bb54428e1"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dbde-0175-1000-3385-5cd58d9d727d","parent":{"ref":"EID6ee6d9f8-0175-1000-ff1b-676bb54428e1"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2dbe6780-101b-486d-907f-7171f4b16eb1"},{"ref":"EID1e455ca1-b3ad-48b6-860a-4784a452c310"},{"ref":"EIDb966f19e-7384-4703-a676-4c09579dca67"}]},"parent":{"ref":"EID6ee6d9f8-0175-1000-2cec-a7fe5c607e12"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:10:24Z","duration":343,"status":"PASSED"}},"parent":{"ref":"EID6ee6b831-0175-1000-4f96-6c868d89dae7"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:10:24Z","duration":486,"status":"PASSED"}]},"parent":{"ref":"EID84ce8428-9126-44cb-b018-55529a525833"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:10:15Z","duration":9133,"status":"PASSED"},{"id":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee6dbde-0175-1000-ea42-5ada4a714484","testStepResults":{"TestStepResult":[{"id":"EID6ee6dbde-0175-1000-e4ec-953295b74b10","parent":{"ref":"EID6ee6dbde-0175-1000-ea42-5ada4a714484"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:10:24Z","duration":848,"status":"PASSED"},{"id":"EID6ee6dbde-0175-1000-b44c-5f2a6cfb69db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6dcbd-0175-1000-a5f5-69f3be6296e8","parent":{"ref":"EID6ee6dbde-0175-1000-b44c-5f2a6cfb69db"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dcbd-0175-1000-99ce-1f006b8aa3c0","parent":{"ref":"EID6ee6dbde-0175-1000-b44c-5f2a6cfb69db"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dcbd-0175-1000-8374-512a8cb86bbb","parent":{"ref":"EID6ee6dbde-0175-1000-b44c-5f2a6cfb69db"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:10:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID122b0094-f119-45a8-bf08-60e04b5a60bd"},{"ref":"EID4d6b6af1-58cc-4605-82e2-9cd0b1fd3e0e"},{"ref":"EID4c4c7689-9404-4916-9f2c-f3d755a3d85f"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-ea42-5ada4a714484"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:10:24Z","duration":60,"status":"PASSED"},{"id":"EID6ee6dcbd-0175-1000-b401-cabc7833337f","attachments":{"attachment":{"ref":"EIDd4e0951e-6430-4e12-ba02-9eadff70a8e2"}},"parent":{"ref":"EID6ee6dbde-0175-1000-ea42-5ada4a714484"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:10:24Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:10:24Z","duration":234,"status":"PASSED"},{"id":"EID6ee6dcc8-0175-1000-02a2-6d72d376197c","testStepResults":{"TestStepResult":[{"id":"EID6ee6dcc8-0175-1000-14b4-0f3bd837e33b","parent":{"ref":"EID6ee6dcc8-0175-1000-02a2-6d72d376197c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:10:24Z","duration":848,"status":"PASSED"},{"id":"EID6ee6dcc8-0175-1000-15a2-d541a15f59ad","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6dd74-0175-1000-09e5-587049f456ec","parent":{"ref":"EID6ee6dcc8-0175-1000-15a2-d541a15f59ad"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dd74-0175-1000-2cc0-a9a56703b201","parent":{"ref":"EID6ee6dcc8-0175-1000-15a2-d541a15f59ad"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dd74-0175-1000-b0a4-292b862ce9ab","parent":{"ref":"EID6ee6dcc8-0175-1000-15a2-d541a15f59ad"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dd74-0175-1000-f8eb-642ee8a4dd43","parent":{"ref":"EID6ee6dcc8-0175-1000-15a2-d541a15f59ad"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3e7c2a54-32b6-4644-aeea-033865529669"},{"ref":"EID824a40db-9318-48fb-9997-8fb6b568b9f6"},{"ref":"EID6e58957e-9898-4409-a60a-a24f2b4478d1"}]},"parent":{"ref":"EID6ee6dcc8-0175-1000-02a2-6d72d376197c"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:10:24Z","duration":81,"status":"PASSED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:10:24Z","duration":172,"status":"PASSED"},{"id":"EID6ee6dd75-0175-1000-6094-9c3f1d289b2d","testStepResults":{"TestStepResult":[{"id":"EID6ee6dd75-0175-1000-48d5-902dd2a05e76","parent":{"ref":"EID6ee6dd75-0175-1000-6094-9c3f1d289b2d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:10:25Z","duration":848,"status":"PASSED"},{"id":"EID6ee6dd75-0175-1000-9446-62c4f33dd18c","parent":{"ref":"EID6ee6dd75-0175-1000-6094-9c3f1d289b2d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6de28-0175-1000-02bb-d3b92bc2f34d","parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6de28-0175-1000-5b89-e864b7dc527b","parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6de28-0175-1000-e999-e0ce60e01d9e","parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6de28-0175-1000-e24e-b4351aa0c03d","parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6de28-0175-1000-66a2-047e1acf7adf","parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6de28-0175-1000-6f53-51d2a2ae87d7","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"FAILED"},{"id":"EID6ee6de28-0175-1000-df94-7d61d5edfd63","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee6dd75-0175-1000-1fa9-631fc83ca23c"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1af75ff9-77cc-4727-b9bd-2c37c4f845aa"},{"ref":"EIDe8465118-50d1-4ae0-9a97-86ec8527c0dd"},{"ref":"EID05f89de5-3b9d-438a-9201-d08bc3e6e490"}]},"parent":{"ref":"EID6ee6dd75-0175-1000-6094-9c3f1d289b2d"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:10:25Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:10:25Z","duration":179,"status":"FAILED"},{"id":"EID6ee6de28-0175-1000-5512-e10238d5d34d","testStepResults":{"TestStepResult":[{"id":"EID6ee6de28-0175-1000-1aaa-6ac3d4d68277","parent":{"ref":"EID6ee6de28-0175-1000-5512-e10238d5d34d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:10:25Z","duration":848,"status":"PASSED"},{"id":"EID6ee6de29-0175-1000-13db-96b82a91def4","parent":{"ref":"EID6ee6de28-0175-1000-5512-e10238d5d34d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6dedf-0175-1000-c36d-15111269a459","parent":{"ref":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dedf-0175-1000-1e25-37d483e4ac2e","parent":{"ref":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dedf-0175-1000-630f-ce8580f5cf61","parent":{"ref":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dedf-0175-1000-41b7-5c4158dea0e7","parent":{"ref":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dedf-0175-1000-11e2-e85e4a6e61b1","parent":{"ref":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee6dedf-0175-1000-0309-a08d74ca1822","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee6de29-0175-1000-e4bc-9e7206dda1a2"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:10:25Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5a6b9107-7ee5-4320-ae22-aac22585fdcd"},{"ref":"EIDe54223b1-f517-4f72-bc81-e2d18cb8d4b8"},{"ref":"EID17ccff50-3a42-4d14-9e7a-4be015399179"}]},"parent":{"ref":"EID6ee6de28-0175-1000-5512-e10238d5d34d"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:10:25Z","duration":78,"status":"FAILED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:10:25Z","duration":183,"status":"FAILED"},{"id":"EID6ee6dedf-0175-1000-8b01-5063cde4a84f","testStepResults":{"TestStepResult":[{"id":"EID6ee6dedf-0175-1000-6004-f7e5908f6c00","parent":{"ref":"EID6ee6dedf-0175-1000-8b01-5063cde4a84f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:10:25Z","duration":848,"status":"PASSED"},{"id":"EID6ee6dedf-0175-1000-8df5-f9d8a6746789","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID92ea83d7-474e-4055-aa19-f5023cc4de7d"},{"ref":"EIDed62694a-e641-4f1c-a045-06e942888d11"},{"ref":"EIDeea20723-a722-41ec-99a8-ca79832d75f9"},{"ref":"EIDc21d41eb-0be0-4eb3-b586-5722e83cff98"},{"ref":"EID45ca8406-790e-490b-aad4-9f11aa4ff949"},{"ref":"EID02676e5a-2b02-4742-89f7-c482907ae599"},{"ref":"EID6c1d891e-7a95-49f2-8f4f-af1f137d29c2"},{"ref":"EIDd2a942bb-c629-4302-a105-bec4b6b575c8"},{"ref":"EID9ccb2216-3b80-4c7e-8067-db163114a3da"},{"ref":"EIDe3bf0f22-e50f-4865-b954-096532c740e1"},{"ref":"EID87934528-ee3b-4b92-9848-802b47e72d44"},{"ref":"EID309097e7-0a77-4c1d-a608-718f19c524be"},{"ref":"EID6052bdea-fafc-49af-8556-aad67e06c8cc"},{"ref":"EID8021f406-8851-4bb8-928c-a8a8ee4b7d9d"},{"ref":"EID8523678a-c281-4ba1-88cd-6accc404172f"}]},"parent":{"ref":"EID6ee6dedf-0175-1000-8b01-5063cde4a84f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:10:25Z","duration":932,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:10:25Z","duration":1218,"status":"SKIPPED"},{"id":"EID6ee6e3a1-0175-1000-6e73-3bdf8d62a0f3","testStepResults":{"TestStepResult":[{"id":"EID6ee6e3a1-0175-1000-d702-75ac36016115","parent":{"ref":"EID6ee6e3a1-0175-1000-6e73-3bdf8d62a0f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:10:26Z","duration":848,"status":"PASSED"},{"id":"EID6ee6e3a1-0175-1000-9665-a1cd613cd281","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6e556-0175-1000-233a-59e7fac49879","parent":{"ref":"EID6ee6e3a1-0175-1000-9665-a1cd613cd281"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e556-0175-1000-aefc-b151a7f92848","parent":{"ref":"EID6ee6e3a1-0175-1000-9665-a1cd613cd281"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e556-0175-1000-55a9-2c6ce73ef9ad","parent":{"ref":"EID6ee6e3a1-0175-1000-9665-a1cd613cd281"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e556-0175-1000-49a0-9035fddd9741","parent":{"ref":"EID6ee6e3a1-0175-1000-9665-a1cd613cd281"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67e74151-1a2c-4753-9735-0302f28ff62c"},{"ref":"EID1541a3d0-1a16-462a-89cc-5a60208baec4"},{"ref":"EID8521cedf-a0ee-4b07-94ab-6a115d785b94"}]},"parent":{"ref":"EID6ee6e3a1-0175-1000-6e73-3bdf8d62a0f3"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:10:26Z","duration":87,"status":"PASSED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:10:26Z","duration":438,"status":"PASSED"},{"id":"EID6ee6e557-0175-1000-03df-c4e2255d45fe","testStepResults":{"TestStepResult":[{"id":"EID6ee6e557-0175-1000-2951-b77c9617f348","parent":{"ref":"EID6ee6e557-0175-1000-03df-c4e2255d45fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:10:27Z","duration":848,"status":"PASSED"},{"id":"EID6ee6e557-0175-1000-84a1-59e913f36b34","parent":{"ref":"EID6ee6e557-0175-1000-03df-c4e2255d45fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:10:27Z","duration":16,"status":"PASSED"},{"id":"EID6ee6e567-0175-1000-8da7-65b5013c14db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6e624-0175-1000-9237-ad949773a8f6","parent":{"ref":"EID6ee6e567-0175-1000-8da7-65b5013c14db"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e624-0175-1000-4c92-628ec5581721","parent":{"ref":"EID6ee6e567-0175-1000-8da7-65b5013c14db"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e624-0175-1000-de79-0d185628286d","parent":{"ref":"EID6ee6e567-0175-1000-8da7-65b5013c14db"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e624-0175-1000-384f-e7b07efff22e","parent":{"ref":"EID6ee6e567-0175-1000-8da7-65b5013c14db"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID90a3c08a-dad8-4379-95bf-b5676f27839a"},{"ref":"EID805305d8-52f4-49df-b592-f4f6a6d75de0"},{"ref":"EID49d0526e-0550-46ab-95d1-b22882bd90a6"}]},"parent":{"ref":"EID6ee6e557-0175-1000-03df-c4e2255d45fe"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:10:27Z","duration":101,"status":"PASSED"},{"id":"EID6ee6e624-0175-1000-c002-17c0637bea28","attachments":{"attachment":{"ref":"EIDb954331f-9686-4ce6-b382-41a188b069ea"}},"parent":{"ref":"EID6ee6e557-0175-1000-03df-c4e2255d45fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e62f-0175-1000-9961-c2c88101f585","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6e633-0175-1000-c1d0-81238f4a2e3f","parent":{"ref":"EID6ee6e62f-0175-1000-9961-c2c88101f585"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e633-0175-1000-841e-04e3d389e6de","parent":{"ref":"EID6ee6e62f-0175-1000-9961-c2c88101f585"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee6e633-0175-1000-278b-4299c3f9baba","parent":{"ref":"EID6ee6e62f-0175-1000-9961-c2c88101f585"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDba4d435c-8198-407a-84f5-671ff71de398"},{"ref":"EIDc24692ea-dc0c-414c-9807-948b19aba4e8"}]},"parent":{"ref":"EID6ee6e557-0175-1000-03df-c4e2255d45fe"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:10:27Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee6dbde-0175-1000-85c1-d0bb6e13616a"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:10:27Z","duration":220,"status":"PASSED"}]},"parent":{"ref":"EID84ce8428-9126-44cb-b018-55529a525833"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:10:24Z","duration":2645,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID6b3a0b0e-ed19-49ff-8d60-1272d11df3df","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID6b3a0b0e-ed19-49ff-8d60-1272d11df3df"}},{"type":"ServiceEndpoint","id":"EIDa35d3f47-b22a-4870-980b-5e7de5b31c11","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbd80817b-234b-48a6-9aa1-bb48fa7a6e9a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID809112ad-c4c6-42a7-864e-279a5eb57314","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID809112ad-c4c6-42a7-864e-279a5eb57314"}},{"type":"GetParameter","id":"EID5bfbbec0-5567-4883-b202-a0103081cc6f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID213ee1b5-9bd6-42a8-af4c-a2f4b294426d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3383db0d-cf4a-452e-95ec-d964be7ca773","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID3383db0d-cf4a-452e-95ec-d964be7ca773"}},{"type":"GetParameter","id":"EID833a71ab-f9e3-4831-9716-ded456f3ae9e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1e455ca1-b3ad-48b6-860a-4784a452c310","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID1e455ca1-b3ad-48b6-860a-4784a452c310"}},{"type":"GetParameter","id":"EIDbd35649d-0759-4020-9ec5-40c22b537ad9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDee9380d4-b8a8-45ad-8a20-28e805ab4f63","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDee9380d4-b8a8-45ad-8a20-28e805ab4f63"}},{"type":"Message","id":"EID87934528-ee3b-4b92-9848-802b47e72d44","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID87934528-ee3b-4b92-9848-802b47e72d44"}},{"type":"ServiceResponse","id":"EIDd9ea8ee2-2811-4b76-a124-a4ad3acb58d2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDd9ea8ee2-2811-4b76-a124-a4ad3acb58d2"}},{"type":"GetParameter","id":"EID65822b91-0738-40fb-9e88-21a9f55ffa04","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa2c7b011-4e39-4c50-9bd9-efb7136ea874","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDa2c7b011-4e39-4c50-9bd9-efb7136ea874"}},{"type":"ServiceEndpoint","id":"EIDe8495686-b8ad-42d5-a8bf-ffa288659428","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDf94bd930-eae1-43a2-bf13-a9a3f5dcae6b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDf94bd930-eae1-43a2-bf13-a9a3f5dcae6b"}},{"type":"ServiceResponse","id":"EIDe2fbd3ff-4ba4-443e-956c-ddfbc0b6a2b9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDe2fbd3ff-4ba4-443e-956c-ddfbc0b6a2b9"}},{"type":"ServiceEndpoint","id":"EID82702551-6e06-482e-a9af-a4a67ab71b3a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID22c2248b-7fab-4099-9ffb-743c376aae02","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDc3f257cb-e3be-4452-acfc-44bc02dcff7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDc3f257cb-e3be-4452-acfc-44bc02dcff7f"}},{"type":"ServiceResponse","id":"EID7e50ffd6-e614-42b7-ad69-dae0e62a632e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID7e50ffd6-e614-42b7-ad69-dae0e62a632e"}},{"type":"ServiceResponse","id":"EID05ff34a5-fedd-4ae8-a0dd-f1ee5b7c4e95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID05ff34a5-fedd-4ae8-a0dd-f1ee5b7c4e95"}},{"type":"ServiceEndpoint","id":"EID67e74151-1a2c-4753-9735-0302f28ff62c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID6d608345-66bb-4de2-8dff-e63d9c5962f3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe7966c01-a3e8-4b3e-88e7-d51cc9dfa0de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID037e309b-a720-4d4e-a8ba-f3070f304a4f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID824a40db-9318-48fb-9997-8fb6b568b9f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID824a40db-9318-48fb-9997-8fb6b568b9f6"}},{"type":"ServiceEndpoint","id":"EIDa90356fa-4254-4e8f-af40-c9ad930c2cd5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3e7c2a54-32b6-4644-aeea-033865529669","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID40737cc5-752b-4135-9292-69baa70d2583","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID40737cc5-752b-4135-9292-69baa70d2583"}},{"type":"ServiceResponse","id":"EIDe54223b1-f517-4f72-bc81-e2d18cb8d4b8","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDe54223b1-f517-4f72-bc81-e2d18cb8d4b8"}},{"type":"Message","id":"EID5d4e271f-56b3-4c0e-8193-aab1e2d52959","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID5d4e271f-56b3-4c0e-8193-aab1e2d52959"}},{"type":"GetParameter","id":"EIDe176245a-0e6e-4ecc-8b0d-bede5588aed4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID60d93d58-373b-4b97-a444-64ef10e2e3a8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID60d93d58-373b-4b97-a444-64ef10e2e3a8"}},{"type":"Message","id":"EIDde27bee5-0390-4b81-9c04-1044b81ca66d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDde27bee5-0390-4b81-9c04-1044b81ca66d"}},{"type":"ServiceEndpoint","id":"EIDbabc499e-cfaf-406e-8e35-67e1eadfd58b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDb1cbfd29-83b3-4eeb-b7e7-7fd173768c70","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDb1cbfd29-83b3-4eeb-b7e7-7fd173768c70"}},{"type":"ServiceEndpoint","id":"EID5a6b9107-7ee5-4320-ae22-aac22585fdcd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID74b679dc-78b3-449c-9717-7ecb12853ea7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDed62694a-e641-4f1c-a045-06e942888d11","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDed62694a-e641-4f1c-a045-06e942888d11"}},{"type":"Message","id":"EID63b36290-a1f3-4be3-a738-89d7c71fcef3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID63b36290-a1f3-4be3-a738-89d7c71fcef3"}},{"type":"ServiceEndpoint","id":"EID70cb840f-8857-4801-b115-e1cd52b7daad","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID48462b89-2038-4bd2-8b2f-21153421f2b3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID8521cedf-a0ee-4b07-94ab-6a115d785b94","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID6832ab57-071d-4914-ad44-bb96c0920687","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID16e4ff9f-c830-443d-a2cd-30ae477809ca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID16e4ff9f-c830-443d-a2cd-30ae477809ca"}},{"type":"Message","id":"EIDc21d41eb-0be0-4eb3-b586-5722e83cff98","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDc21d41eb-0be0-4eb3-b586-5722e83cff98"}},{"type":"Message","id":"EIDb4131f45-8fc9-419c-94f6-8fd07029246c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDb4131f45-8fc9-419c-94f6-8fd07029246c"}},{"type":"ServiceEndpoint","id":"EID84fcb18d-3748-416e-a9a7-9a774f874718","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd1dcfe81-18d0-409e-89d1-7f737216bcb7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDd1dcfe81-18d0-409e-89d1-7f737216bcb7"}},{"type":"GetParameter","id":"EID49d0526e-0550-46ab-95d1-b22882bd90a6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID736c5623-95d8-4ec2-bbb6-ffc5de88e131","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4d6b6af1-58cc-4605-82e2-9cd0b1fd3e0e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID4d6b6af1-58cc-4605-82e2-9cd0b1fd3e0e"}},{"type":"ServiceResponse","id":"EID576286be-f12d-46b3-85b3-23c4537e4660","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID576286be-f12d-46b3-85b3-23c4537e4660"}},{"type":"ServiceEndpoint","id":"EID5b7224c3-e3a4-4ee0-b381-2e920ea158a5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID34b03c70-2545-41d5-9a8a-c39a31f262c1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID34b03c70-2545-41d5-9a8a-c39a31f262c1"}},{"type":"GetParameter","id":"EID52be83b3-b30d-4e6e-9d00-5bab795922bc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDe09038ec-a321-49b4-8c42-499cfdc25f74","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDe09038ec-a321-49b4-8c42-499cfdc25f74"}},{"type":"GetParameter","id":"EIDd0e407a6-304e-457a-9ab9-b5ba16d98a5c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4e5a4784-33ee-4916-8d41-11811211c8a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID4e5a4784-33ee-4916-8d41-11811211c8a8"}},{"type":"Message","id":"EIDd2a942bb-c629-4302-a105-bec4b6b575c8","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDd2a942bb-c629-4302-a105-bec4b6b575c8"}},{"type":"ServiceEndpoint","id":"EID40af82f5-4f08-4096-89e1-a3f54d9bf1de","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID51aa7d31-b648-494e-b611-a73abb09e45f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID22bc960f-ff23-482d-aaae-78a9d955e9e0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID3cd58f34-3553-4675-9670-4016a5173669","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID2a77e0b7-8bf2-45fb-9efc-5165c29ef17e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID2a77e0b7-8bf2-45fb-9efc-5165c29ef17e"}},{"type":"ServiceResponse","id":"EID3cb16565-a21f-4c78-bbca-81d87e25ef92","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID3cb16565-a21f-4c78-bbca-81d87e25ef92"}},{"type":"GetParameter","id":"EID7439f2cd-ec95-4f2a-9db8-49735f39390f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbfe2b751-47f3-43a7-8d79-bb1d023ba36b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID8d7dd114-a64e-49e2-af3b-2ef6cadeb207","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID8d7dd114-a64e-49e2-af3b-2ef6cadeb207"}},{"type":"Message","id":"EID58b62b18-5c94-4bec-9428-ad6597ef979a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID58b62b18-5c94-4bec-9428-ad6597ef979a"}},{"type":"ServiceEndpoint","id":"EID2dbe6780-101b-486d-907f-7171f4b16eb1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID707d52cb-b00b-4253-ac80-b7db750f9207","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID73eef5ee-f1e4-415c-9a98-3a341d563272","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID73eef5ee-f1e4-415c-9a98-3a341d563272"}},{"type":"GetParameter","id":"EIDb966f19e-7384-4703-a676-4c09579dca67","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID75d1ec4e-59f1-47c8-b401-db558f80b675","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID52fb5cb5-bc79-41f8-aba3-326aa9b7ec1a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDfaca066f-b896-4041-a338-b7e5aa2f7d51","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDfaca066f-b896-4041-a338-b7e5aa2f7d51"}},{"type":"ServiceEndpoint","id":"EID152590e2-a179-4a39-9720-125761cc7db4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"ServiceResponse","id":"EID6776131f-ea0c-466e-9547-ab1f072f93d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID6776131f-ea0c-466e-9547-ab1f072f93d7"}},{"type":"ServiceResponse","id":"EID9ba20920-c075-4c3b-b31a-812dbde63cf9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID9ba20920-c075-4c3b-b31a-812dbde63cf9"}},{"type":"Message","id":"EID7fc494e8-66ca-4b81-9708-a27c683579d7","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID7fc494e8-66ca-4b81-9708-a27c683579d7"}},{"type":"GetParameter","id":"EID17ccff50-3a42-4d14-9e7a-4be015399179","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDb954331f-9686-4ce6-b382-41a188b069ea","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDb954331f-9686-4ce6-b382-41a188b069ea"}},{"type":"Message","id":"EIDb06dfaf1-5087-4ab1-b7f6-7eaddcea892c","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDb06dfaf1-5087-4ab1-b7f6-7eaddcea892c"}},{"type":"GetParameter","id":"EID9802a990-c384-426d-977d-3782c204020f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID5c3a015b-219f-4434-abe8-400b2df0b807","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID46f94c1c-2062-4413-995e-5c7dbbd64f24","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID46f94c1c-2062-4413-995e-5c7dbbd64f24"}},{"type":"ServiceEndpoint","id":"EID1af75ff9-77cc-4727-b9bd-2c37c4f845aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDeea20723-a722-41ec-99a8-ca79832d75f9","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDeea20723-a722-41ec-99a8-ca79832d75f9"}},{"type":"LogFile","id":"EIDc7f97447-5710-4ed7-b5e1-5644f16caddf","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDc7f97447-5710-4ed7-b5e1-5644f16caddf"}},{"type":"GetParameter","id":"EID4f914f34-b1bf-4ce1-af56-88def27ed2dd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID38f8b290-13b6-4e1c-83c6-a94da6d52906","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID38f8b290-13b6-4e1c-83c6-a94da6d52906"}},{"type":"Message","id":"EIDe64ea7f0-12de-4b0d-86ce-729c05049b6f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDe64ea7f0-12de-4b0d-86ce-729c05049b6f"}},{"type":"ServiceEndpoint","id":"EID43143398-2aca-4a23-a164-6005ef0a9eaa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID1194ebd5-7f11-42ec-8723-e3fc5865d31c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID1194ebd5-7f11-42ec-8723-e3fc5865d31c"}},{"type":"Message","id":"EID6052bdea-fafc-49af-8556-aad67e06c8cc","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID6052bdea-fafc-49af-8556-aad67e06c8cc"}},{"type":"ServiceResponse","id":"EIDc2893d47-f2aa-42ef-95a1-dca6f00707ca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDc2893d47-f2aa-42ef-95a1-dca6f00707ca"}},{"type":"GetParameter","id":"EIDd04ec425-71b5-4122-8779-56dc901b6267","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1c1905cd-0402-4942-8ac8-a294fead2373","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID53874062-3bc1-4e04-ae14-3403689685bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdc61a8fb-0700-4d69-90b8-e91b04f1ec98","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID805305d8-52f4-49df-b592-f4f6a6d75de0","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID805305d8-52f4-49df-b592-f4f6a6d75de0"}},{"type":"ServiceResponse","id":"EIDf898286b-a9a2-4d49-b3fa-491ff3e1d139","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDf898286b-a9a2-4d49-b3fa-491ff3e1d139"}},{"type":"ServiceResponse","id":"EIDbb24461f-9ec5-49dc-929e-059171334658","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDbb24461f-9ec5-49dc-929e-059171334658"}},{"type":"ServiceEndpoint","id":"EIDeb15b7e6-f2a9-4661-b8dc-c8e1d1795996","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID2d5b85ef-3f04-4bb8-a7c8-5a8fd7a1b233","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID2d5b85ef-3f04-4bb8-a7c8-5a8fd7a1b233"}},{"type":"ServiceResponse","id":"EID98acf24a-debe-402b-aa1d-2fccd3339866","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID98acf24a-debe-402b-aa1d-2fccd3339866"}},{"type":"Message","id":"EID92ea83d7-474e-4055-aa19-f5023cc4de7d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID92ea83d7-474e-4055-aa19-f5023cc4de7d"}},{"type":"Message","id":"EID095d764d-0a81-4b10-9bde-17dcf1742547","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID095d764d-0a81-4b10-9bde-17dcf1742547"}},{"type":"ServiceEndpoint","id":"EID122b0094-f119-45a8-bf08-60e04b5a60bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8dbb2937-57fd-4844-ad8b-098593bab28e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDead0e8a8-1387-4800-bb54-5b9f1f88368f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID065c2bd3-d31c-466e-976a-3e0931a38e41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID36a37abc-3108-4c44-9981-89af6f44ff91","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID5b65c77d-f142-4088-95d4-1389cd49de3b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID65d64253-041c-43e2-99d7-7514dc0c9af4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID63e3fb95-163f-4dc8-921d-ddebddfcf2ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID6ac4a694-e50c-4806-8ec6-ef0aa44c6de8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID6ac4a694-e50c-4806-8ec6-ef0aa44c6de8"}},{"type":"GetParameter","id":"EID0af33f4f-4e6d-4607-8f8f-3780a3b31b10","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDae2dd7d9-2943-457b-8722-8dbc4bc9ec3e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDae2dd7d9-2943-457b-8722-8dbc4bc9ec3e"}},{"type":"Message","id":"EIDff4ce69a-df2e-487d-ae88-8f59b6d26e30","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDff4ce69a-df2e-487d-ae88-8f59b6d26e30"}},{"type":"GetParameter","id":"EID3ab294db-313b-44c3-93c1-5b959dd9a088","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID2eb742e0-ddd7-4074-b5c3-00228bcadbc7","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID2eb742e0-ddd7-4074-b5c3-00228bcadbc7"}},{"type":"Message","id":"EID48e67dcb-70ab-4fa4-8f1f-42ee913e2bbd","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID48e67dcb-70ab-4fa4-8f1f-42ee913e2bbd"}},{"type":"Message","id":"EID9985bdea-9ede-466b-a306-28f8fc88651e","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID9985bdea-9ede-466b-a306-28f8fc88651e"}},{"type":"Message","id":"EID71cd4980-af8c-4e7c-b58b-eb8499fa195e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID71cd4980-af8c-4e7c-b58b-eb8499fa195e"}},{"type":"GetParameter","id":"EIDee932b24-aaad-4e89-b9cf-32905e20e2cc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2ddf5ef3-1a02-4ae9-bcc7-779c6e5985d7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDebc56fd1-f7ca-4d75-a332-c91c98f939cb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID05f89de5-3b9d-438a-9201-d08bc3e6e490","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa7abfa0c-b740-4899-9788-a449a87ab34b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDa7abfa0c-b740-4899-9788-a449a87ab34b"}},{"type":"Message","id":"EID5ed2e313-71a7-4fb1-bdae-989b219c58a4","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID5ed2e313-71a7-4fb1-bdae-989b219c58a4"}},{"type":"ServiceEndpoint","id":"EID661b2a5a-68df-4c03-8043-e499482c2157","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID34d7c68e-e42c-4966-94b8-4822011c3440","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID90a3c08a-dad8-4379-95bf-b5676f27839a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDabe13f3e-478c-44cc-ba4d-fe69ffe07861","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDabe13f3e-478c-44cc-ba4d-fe69ffe07861"}},{"type":"GetParameter","id":"EIDc24692ea-dc0c-414c-9807-948b19aba4e8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EID02676e5a-2b02-4742-89f7-c482907ae599","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID02676e5a-2b02-4742-89f7-c482907ae599"}},{"type":"ServiceEndpoint","id":"EID9893c7c7-86e2-4bae-a089-2e43d8df162c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDad9d0df8-88e1-4c2a-bee0-b6b3b19a3dbd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDad9d0df8-88e1-4c2a-bee0-b6b3b19a3dbd"}},{"type":"Message","id":"EID6c1d891e-7a95-49f2-8f4f-af1f137d29c2","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID6c1d891e-7a95-49f2-8f4f-af1f137d29c2"}},{"type":"Message","id":"EID9ccb2216-3b80-4c7e-8067-db163114a3da","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID9ccb2216-3b80-4c7e-8067-db163114a3da"}},{"type":"ServiceResponse","id":"EIDbf3c8a43-cf3d-4c01-95a5-7e9af93b3433","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDbf3c8a43-cf3d-4c01-95a5-7e9af93b3433"}},{"type":"ServiceResponse","id":"EIDb9a7a734-1e61-4b76-9e49-237aa7b162d0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDb9a7a734-1e61-4b76-9e49-237aa7b162d0"}},{"type":"ServiceEndpoint","id":"EID18ef28c9-d517-4d51-b6f4-2b9451b81c46","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID955df65b-a997-4419-811d-68c4ba404138","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID955df65b-a997-4419-811d-68c4ba404138"}},{"type":"GetParameter","id":"EID7c26e304-8706-41ba-af1c-a722d2859a6d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID45ca8406-790e-490b-aad4-9f11aa4ff949","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID45ca8406-790e-490b-aad4-9f11aa4ff949"}},{"type":"ServiceEndpoint","id":"EIDce4c37e7-3822-4bbc-a9bd-8ed132bf175c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDcf3851b0-b965-45e2-a1d2-adf62a6f8ed9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"ServiceResponse","id":"EIDf44247af-8d9e-444c-96d2-c8e5258f9578","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDf44247af-8d9e-444c-96d2-c8e5258f9578"}},{"type":"GetParameter","id":"EID36da9143-36af-40eb-b801-a5b6d83aaca1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfe4848ff-707f-42f5-9d6f-2af6fffc296c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1f1f872d-f5c6-4270-b485-81664d4125a1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDba4d435c-8198-407a-84f5-671ff71de398","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID74756766-4af8-4c77-818d-e9eed0306311","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID8523678a-c281-4ba1-88cd-6accc404172f","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID8523678a-c281-4ba1-88cd-6accc404172f"}},{"type":"ServiceEndpoint","id":"EID8b035185-b116-44a9-8ede-c7c4a2472a79","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID6b57570c-3061-49b2-b6e6-e83869302df9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID6b57570c-3061-49b2-b6e6-e83869302df9"}},{"type":"ServiceResponse","id":"EIDea687426-3c1d-4d00-9139-fa472f7ce2c6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDea687426-3c1d-4d00-9139-fa472f7ce2c6"}},{"type":"GetParameter","id":"EID6e58957e-9898-4409-a60a-a24f2b4478d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID3fe6521c-71aa-4db7-98a3-9c1f72d40c9b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID3fe6521c-71aa-4db7-98a3-9c1f72d40c9b"}},{"type":"GetParameter","id":"EIDb6bc5d5a-f11c-433c-bcfb-699b945302d3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDc2c56e6f-80dd-4b1f-b6b1-a79797f379ad","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDc2c56e6f-80dd-4b1f-b6b1-a79797f379ad"}},{"type":"GetParameter","id":"EIDbf61b063-2fdd-4e66-8d8f-58986992f1c7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDd4e0951e-6430-4e12-ba02-9eadff70a8e2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDd4e0951e-6430-4e12-ba02-9eadff70a8e2"}},{"type":"ServiceResponse","id":"EID3c399219-5cea-4bce-9f22-782876123a17","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID3c399219-5cea-4bce-9f22-782876123a17"}},{"type":"ServiceResponse","id":"EID1541a3d0-1a16-462a-89cc-5a60208baec4","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID1541a3d0-1a16-462a-89cc-5a60208baec4"}},{"type":"ServiceResponse","id":"EID1b852fe3-36e9-4300-9a8d-348265a385fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID1b852fe3-36e9-4300-9a8d-348265a385fe"}},{"type":"Message","id":"EID8021f406-8851-4bb8-928c-a8a8ee4b7d9d","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID8021f406-8851-4bb8-928c-a8a8ee4b7d9d"}},{"type":"ServiceResponse","id":"EID3f972745-67e9-42fa-a1fb-91cd3b8471be","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID3f972745-67e9-42fa-a1fb-91cd3b8471be"}},{"type":"Message","id":"EID9be49223-6629-4ceb-83b1-59f0d0aa5a81","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID9be49223-6629-4ceb-83b1-59f0d0aa5a81"}},{"type":"GetParameter","id":"EID02f6ec97-5d23-4845-bdec-0a99be954121","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID543844ab-8dc4-47a0-aae6-eb6f5be53f86","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID4c4c7689-9404-4916-9f2c-f3d755a3d85f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDea5f5912-8fd6-4a99-b7ac-927825252bc9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID96410e12-24f8-4958-b532-381c3f7db4ef","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID96410e12-24f8-4958-b532-381c3f7db4ef"}},{"type":"ServiceResponse","id":"EID4309a94c-28c3-4ef8-8daa-3a7c79b1b42b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID4309a94c-28c3-4ef8-8daa-3a7c79b1b42b"}},{"type":"Message","id":"EID57f0cfda-b400-4570-9c3f-56f5ade3a172","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID57f0cfda-b400-4570-9c3f-56f5ade3a172"}},{"type":"ServiceEndpoint","id":"EID74c2f54d-f7ef-44f7-8739-925ae04bec09","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDfe43e01d-a2f8-4a27-9065-a05cf699b5fb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDfe43e01d-a2f8-4a27-9065-a05cf699b5fb"}},{"type":"GetParameter","id":"EID839f6c59-f0c5-42b8-9c01-de90d398822c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDea294a03-fafb-49b3-ab0e-8061e45afb72","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDea294a03-fafb-49b3-ab0e-8061e45afb72"}},{"type":"ServiceEndpoint","id":"EID0a5822b8-afb3-4228-b54f-581bde25a5f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID9f8f1dab-69fb-4d32-8d42-4dc2d5a38ef2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDe3bf0f22-e50f-4865-b954-096532c740e1","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDe3bf0f22-e50f-4865-b954-096532c740e1"}},{"type":"ServiceEndpoint","id":"EID351962d7-a366-4011-b87c-69692c6364f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID374ccb8a-abe5-4835-bc50-0098c06bf9e9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID374ccb8a-abe5-4835-bc50-0098c06bf9e9"}},{"type":"ServiceEndpoint","id":"EIDf2f9d3dc-c275-456c-9fcb-e56b4ec06fda","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd252be28-a0c3-4492-82db-4ec62b98519b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe8465118-50d1-4ae0-9a97-86ec8527c0dd","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDe8465118-50d1-4ae0-9a97-86ec8527c0dd"}},{"type":"GetParameter","id":"EID4ea9f305-fad4-40ca-a497-4dc43c5ea14d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID309097e7-0a77-4c1d-a608-718f19c524be","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID309097e7-0a77-4c1d-a608-718f19c524be"}},{"type":"ServiceEndpoint","id":"EID45ab62dd-c927-455e-b33e-5f810afd50bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0797ffe5-5e2e-4c5e-a113-c22ea899405a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID0305a9db-0543-46ae-b93a-019f88dfabc9","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID0305a9db-0543-46ae-b93a-019f88dfabc9"}},{"type":"ServiceEndpoint","id":"EIDfae3468e-834b-403e-b889-5e19b31d3f56","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDd065dada-4e92-4e9b-81ed-b22945ffd0d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EIDd065dada-4e92-4e9b-81ed-b22945ffd0d5"}},{"type":"Message","id":"EID180a1288-2e15-4941-b500-2a1fa544c2ba","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID180a1288-2e15-4941-b500-2a1fa544c2ba"}},{"type":"Message","id":"EID2c3a673b-89be-483b-8c53-fd907905abe6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID84ce8428-9126-44cb-b018-55529a525833/Attachments/EID2c3a673b-89be-483b-8c53-fd907905abe6"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:10:05Z","duration":22324,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:10:53.794 [print] EIDe43cc173-1805-44cf-94f4-98c35f178b80
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:53.794 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:10:53.794 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:10:53.794 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:53.794 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e43cc173-1805-44cf-94f4-98c35f178b80.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:10:53.794 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e43cc173-1805-44cf-94f4-98c35f178b80.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:10:53.794 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe43cc173-1805-44cf-94f4-98c35f178b80/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.011
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.014
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:10:53.823 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:10:53.823 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.001
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.652
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:30.661 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.651
11:09:30.662 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS"}}}

11:09:32.313 response time in milliseconds: 1545.71
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883372135","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:32.313 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.426
* print "testing url:" + metadata.url 0.000
11:09:28.857 [print] testing url:https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.426
11:09:28.857 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:29.281 response time in milliseconds: 423.58
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:28 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.434
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.433
11:09:29.291 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:29.722 response time in milliseconds: 430.11
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:28 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:29.725 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
4.831
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:31.603 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.830
11:10:31.605 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 285
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS"}}}

11:10:36.434 response time in milliseconds: 4721.21
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:36 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883436225","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:36.434 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:59.261
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:39.381 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.058
11:14:39.381 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:14:45.437 response time in milliseconds: 5309.79
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:44 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/7e06ab19-2634-43be-b456-026fb36f2366.json","testRuns":{"TestRun":{"id":"EID7e06ab19-2634-43be-b456-026fb36f2366","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:41.877Z","testTasks":{"TestTask":{"id":"EID14cd4eef-b376-41fb-94af-ecd67dfc7b00","parent":{"ref":"EID7e06ab19-2634-43be-b456-026fb36f2366"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID87a6f209-5e5f-4cba-a717-859932a7f3fb"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID87a6f209-5e5f-4cba-a717-859932a7f3fb","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:39.826Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:41.493Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:45.440 [print] EID7e06ab19-2634-43be-b456-026fb36f2366
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:45.440 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:45.440 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:45.440 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/7e06ab19-2634-43be-b456-026fb36f2366.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:45.440 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:45.440 [print] statuspath TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366
* print 'progresspath ', progresspath 0.000
11:14:45.440 [print] progresspath  TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
Given path progresspath 0.000
When method GET 0.521
11:14:45.441 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:45.962 response time in milliseconds: 520.43
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:45 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:14:45.962 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)",
    "28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:14:41 - Preparing 1 Test Task:",
    "28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)",
    "28.10.2020 11:14:41 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:14:41 -  with parameters: ",
    "28.10.2020 11:14:41 - etf.testcases = *",
    "28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:14:41 - Setting state to CREATED",
    "28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z",
    "28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:44 - Project Properties: ",
    "28.10.2020 11:14:44 - etf.testcases - * ",
    "28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:14:44 - username -  ",
    "28.10.2020 11:14:44 - authUser -  ",
    "28.10.2020 11:14:44 - authMethod - basic ",
    "28.10.2020 11:14:44 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:52.680
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
11:14:45.963 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:46.484 response time in milliseconds: 521.38
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:46 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized"]}

11:14:46.485 retry condition not satisfied: response.val == response.max
11:14:46.485 sleeping before retry #1
11:14:51.486 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:57.045 response time in milliseconds: 5558.42
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:57.045 retry condition not satisfied: response.val == response.max
11:14:57.045 sleeping before retry #2
11:15:02.046 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:02.549 response time in milliseconds: 502.79
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:15:02 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:02.550 retry condition not satisfied: response.val == response.max
11:15:02.550 sleeping before retry #3
11:15:07.551 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:08.071 response time in milliseconds: 519.80
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:15:08 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:08.077 retry condition not satisfied: response.val == response.max
11:15:08.077 sleeping before retry #4
11:15:13.078 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:13.588 response time in milliseconds: 509.75
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:15:13 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:13.594 retry condition not satisfied: response.val == response.max
11:15:13.594 sleeping before retry #5
11:15:18.594 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:19.119 response time in milliseconds: 524.72
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:15:19 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:19.120 retry condition not satisfied: response.val == response.max
11:15:19.120 sleeping before retry #6
11:15:24.120 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:24.646 response time in milliseconds: 525.27
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:15:24 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:24.646 retry condition not satisfied: response.val == response.max
11:15:24.646 sleeping before retry #7
11:15:29.647 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:30.159 response time in milliseconds: 511.42
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:15:30 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:30.166 retry condition not satisfied: response.val == response.max
11:15:30.166 sleeping before retry #8
11:15:35.167 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:35.685 response time in milliseconds: 515.01
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:15:35 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:35.686 retry condition not satisfied: response.val == response.max
11:15:35.686 sleeping before retry #9
11:15:40.686 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:41.205 response time in milliseconds: 518.50
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:15:41 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:41.205 retry condition not satisfied: response.val == response.max
11:15:41.205 sleeping before retry #10
11:15:46.206 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:48.987 response time in milliseconds: 2779.93
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:15:48 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:15:48.987 retry condition not satisfied: response.val == response.max
11:15:48.987 sleeping before retry #11
11:15:53.988 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:54.499 response time in milliseconds: 510.84
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:15:54 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:15:54.500 retry condition not satisfied: response.val == response.max
11:15:54.500 sleeping before retry #12
11:15:59.501 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:00.030 response time in milliseconds: 529.12
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:15:59 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:16:00.031 retry condition not satisfied: response.val == response.max
11:16:00.031 sleeping before retry #13
11:16:05.031 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:05.536 response time in milliseconds: 504.36
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:16:05 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:16:05.536 retry condition not satisfied: response.val == response.max
11:16:05.536 sleeping before retry #14
11:16:10.538 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:11.047 response time in milliseconds: 508.42
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:16:10 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:16:11.047 retry condition not satisfied: response.val == response.max
11:16:11.048 sleeping before retry #15
11:16:16.048 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:16.567 response time in milliseconds: 517.80
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:16:16 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:16:16.567 retry condition not satisfied: response.val == response.max
11:16:16.567 sleeping before retry #16
11:16:21.568 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:22.078 response time in milliseconds: 509.31
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:16:22 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:16:22.080 retry condition not satisfied: response.val == response.max
11:16:22.081 sleeping before retry #17
11:16:27.081 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:27.604 response time in milliseconds: 519.06
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:16:27 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:16:27.605 retry condition not satisfied: response.val == response.max
11:16:27.605 sleeping before retry #18
11:16:32.605 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:33.116 response time in milliseconds: 510.25
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:16:33 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:16:31 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:16:33.116 retry condition not satisfied: response.val == response.max
11:16:33.116 sleeping before retry #19
11:16:38.117 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:38.638 response time in milliseconds: 520.87
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:16:38 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 -  TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 -  with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username -  ","28.10.2020 11:14:44 - authUser -  ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:16:31 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:16:38.643 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
6.949
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:05:59.572 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.947
11:05:59.573 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs"}}}

11:06:06.519 response time in milliseconds: 6839.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:06 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883166345","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:06:06.521 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
29.849
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:56.551 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.586
11:10:56.552 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:11:03.130 response time in milliseconds: 5807.56
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:02 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:11:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/adba38b1-7fe7-42c5-8a94-e50f696fd3ad.json","testRuns":{"TestRun":{"id":"EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:59.079Z","testTasks":{"TestTask":{"id":"EIDc613b005-f33f-4497-ab78-c37af110d61f","parent":{"ref":"EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID96f567ac-651b-4d04-a818-51414f1a3e73"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID96f567ac-651b-4d04-a818-51414f1a3e73","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:10:57.108Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:58.595Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.003
11:11:03.141 [print] EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:11:03.142 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:11:03.142 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:11:03.142 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/adba38b1-7fe7-42c5-8a94-e50f696fd3ad.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:11:03.143 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:11:03.143 [print] statuspath TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad
* print 'progresspath ', progresspath 0.000
11:11:03.144 [print] progresspath  TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/progress
Given path progresspath 0.000
When method GET 0.523
11:11:03.145 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:03.667 response time in milliseconds: 520.76
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:11:03 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:10:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:59 UTC 2020)","28.10.2020 11:10:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:59 - Preparing 1 Test Task:","28.10.2020 11:10:59 -  TestTask 1 (c613b005-f33f-4497-ab78-c37af110d61f)","28.10.2020 11:10:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:59 -  with parameters: ","28.10.2020 11:10:59 - etf.testcases = *","28.10.2020 11:10:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:59 - Setting state to CREATED","28.10.2020 11:10:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:00 - Starting TestRun.adba38b1-7fe7-42c5-8a94-e50f696fd3ad at 2020-10-28T11:11:01Z","28.10.2020 11:11:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:01 - Project Properties: ","28.10.2020 11:11:01 - etf.testcases - * ","28.10.2020 11:11:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:01 - username -  ","28.10.2020 11:11:01 - authUser -  ","28.10.2020 11:11:01 - authMethod - basic ","28.10.2020 11:11:01 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:11:03.667 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "28.10.2020 11:10:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:59 UTC 2020)",
    "28.10.2020 11:10:59 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:10:59 - Preparing 1 Test Task:",
    "28.10.2020 11:10:59 -  TestTask 1 (c613b005-f33f-4497-ab78-c37af110d61f)",
    "28.10.2020 11:10:59 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:10:59 -  with parameters: ",
    "28.10.2020 11:10:59 - etf.testcases = *",
    "28.10.2020 11:10:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:10:59 - Setting state to CREATED",
    "28.10.2020 11:10:59 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:11:00 - Starting TestRun.adba38b1-7fe7-42c5-8a94-e50f696fd3ad at 2020-10-28T11:11:01Z",
    "28.10.2020 11:11:01 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:11:01 - Project Properties: ",
    "28.10.2020 11:11:01 - etf.testcases - * ",
    "28.10.2020 11:11:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:11:01 - username -  ",
    "28.10.2020 11:11:01 - authUser -  ",
    "28.10.2020 11:11:01 - authMethod - basic ",
    "28.10.2020 11:11:01 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.577
11:11:03.668 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:04.193 response time in milliseconds: 517.85
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:11:04 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:10:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:59 UTC 2020)","28.10.2020 11:10:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:59 - Preparing 1 Test Task:","28.10.2020 11:10:59 -  TestTask 1 (c613b005-f33f-4497-ab78-c37af110d61f)","28.10.2020 11:10:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:59 -  with parameters: ","28.10.2020 11:10:59 - etf.testcases = *","28.10.2020 11:10:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:59 - Setting state to CREATED","28.10.2020 11:10:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:00 - Starting TestRun.adba38b1-7fe7-42c5-8a94-e50f696fd3ad at 2020-10-28T11:11:01Z","28.10.2020 11:11:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:01 - Project Properties: ","28.10.2020 11:11:01 - etf.testcases - * ","28.10.2020 11:11:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:01 - username -  ","28.10.2020 11:11:01 - authUser -  ","28.10.2020 11:11:01 - authMethod - basic ","28.10.2020 11:11:01 - TestRunTask initialized"]}

11:11:04.193 retry condition not satisfied: response.val == response.max
11:11:04.193 sleeping before retry #1
11:11:09.194 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:09.719 response time in milliseconds: 524.21
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:11:09 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"69","max":"70","log":["28.10.2020 11:10:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:59 UTC 2020)","28.10.2020 11:10:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:59 - Preparing 1 Test Task:","28.10.2020 11:10:59 -  TestTask 1 (c613b005-f33f-4497-ab78-c37af110d61f)","28.10.2020 11:10:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:59 -  with parameters: ","28.10.2020 11:10:59 - etf.testcases = *","28.10.2020 11:10:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:59 - Setting state to CREATED","28.10.2020 11:10:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:00 - Starting TestRun.adba38b1-7fe7-42c5-8a94-e50f696fd3ad at 2020-10-28T11:11:01Z","28.10.2020 11:11:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:01 - Project Properties: ","28.10.2020 11:11:01 - etf.testcases - * ","28.10.2020 11:11:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:01 - username -  ","28.10.2020 11:11:01 - authUser -  ","28.10.2020 11:11:01 - authMethod - basic ","28.10.2020 11:11:01 - TestRunTask initialized","28.10.2020 11:11:06 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:11:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:08 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

11:11:09.720 retry condition not satisfied: response.val == response.max
11:11:09.720 sleeping before retry #2
11:11:14.721 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:15.234 response time in milliseconds: 512.52
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:11:15 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:10:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:59 UTC 2020)","28.10.2020 11:10:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:59 - Preparing 1 Test Task:","28.10.2020 11:10:59 -  TestTask 1 (c613b005-f33f-4497-ab78-c37af110d61f)","28.10.2020 11:10:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:59 -  with parameters: ","28.10.2020 11:10:59 - etf.testcases = *","28.10.2020 11:10:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:59 - Setting state to CREATED","28.10.2020 11:10:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:00 - Starting TestRun.adba38b1-7fe7-42c5-8a94-e50f696fd3ad at 2020-10-28T11:11:01Z","28.10.2020 11:11:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:01 - Project Properties: ","28.10.2020 11:11:01 - etf.testcases - * ","28.10.2020 11:11:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:01 - username -  ","28.10.2020 11:11:01 - authUser -  ","28.10.2020 11:11:01 - authMethod - basic ","28.10.2020 11:11:01 - TestRunTask initialized","28.10.2020 11:11:06 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:11:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:08 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:10 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:11:10 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:11 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:11:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:11 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:12 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:12 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:11:12 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:12 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:12 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:11:12 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:11:12 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:11:13 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:13 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:13 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:11:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:11:15.235 retry condition not satisfied: response.val == response.max
11:11:15.235 sleeping before retry #3
11:11:20.236 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:22.244 response time in milliseconds: 2007.75
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:11:22 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:11:22.245 retry condition satisfied
* print response 0.000
11:11:22.245 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.118
11:11:22.247 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:26.355 response time in milliseconds: 3138.64
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:11:25 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:11:17 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/adba38b1-7fe7-42c5-8a94-e50f696fd3ad.json","testRuns":{"TestRun":{"id":"EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:59.079Z","testTasks":{"TestTask":{"id":"EIDc613b005-f33f-4497-ab78-c37af110d61f","parent":{"ref":"EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID96f567ac-651b-4d04-a818-51414f1a3e73"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID96f567ac-651b-4d04-a818-51414f1a3e73","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:10:57.108Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:58.595Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44","testObject":{"ref":"EID96f567ac-651b-4d04-a818-51414f1a3e73"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee76cfe-0175-1000-615e-a2f5bb0b01bf","testCaseResults":{"TestCaseResult":[{"id":"EID6ee76d43-0175-1000-d08b-b31e2120fcc4","testStepResults":{"TestStepResult":[{"id":"EID6ee76d77-0175-1000-a374-6f09cb5f4de0","parent":{"ref":"EID6ee76d43-0175-1000-d08b-b31e2120fcc4"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:11:02Z","duration":105,"status":"PASSED"},{"id":"EID6ee76de1-0175-1000-911d-b34302f90a80","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee76fc8-0175-1000-00d7-5146c3f5791a","parent":{"ref":"EID6ee76de1-0175-1000-911d-b34302f90a80"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee76fc8-0175-1000-eeba-83628209d126","parent":{"ref":"EID6ee76de1-0175-1000-911d-b34302f90a80"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee76fc8-0175-1000-446a-2fb026949eb4","parent":{"ref":"EID6ee76de1-0175-1000-911d-b34302f90a80"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee76fc8-0175-1000-b048-164a2fa9b6bb","parent":{"ref":"EID6ee76de1-0175-1000-911d-b34302f90a80"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0bccb009-ea09-44a2-b321-376e6145ff45"},{"ref":"EID19701895-1301-46f2-bac0-487e1af35ecf"},{"ref":"EIDc97642f0-eab1-4d06-b20c-ac70c2b6d25d"}]},"parent":{"ref":"EID6ee76d43-0175-1000-d08b-b31e2120fcc4"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:11:02Z","duration":312,"status":"PASSED"}]},"parent":{"ref":"EID6ee76cfe-0175-1000-615e-a2f5bb0b01bf"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:11:01Z","duration":645,"status":"PASSED"},{"id":"EID6ee76fc8-0175-1000-d82f-0730e9704455","testStepResults":{"TestStepResult":{"id":"EID6ee76fc8-0175-1000-fb69-d6834806a479","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee77059-0175-1000-e663-89e12538d4fd","parent":{"ref":"EID6ee76fc8-0175-1000-fb69-d6834806a479"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee77059-0175-1000-30ec-38426735fce3","parent":{"ref":"EID6ee76fc8-0175-1000-fb69-d6834806a479"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee77059-0175-1000-fad2-dd874fc45739","parent":{"ref":"EID6ee76fc8-0175-1000-fb69-d6834806a479"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:11:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9196c5fc-984e-4aa9-80e8-c58f052432c1"},{"ref":"EID986c71cf-6a5b-4a6c-ae7d-37008f91f649"},{"ref":"EIDa360e856-9131-4e4a-8076-335a17c6d2e5"}]},"parent":{"ref":"EID6ee76fc8-0175-1000-d82f-0730e9704455"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:11:02Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6ee76cfe-0175-1000-615e-a2f5bb0b01bf"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:11:02Z","duration":156,"status":"PASSED"}]},"parent":{"ref":"EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:11:01Z","duration":870,"status":"PASSED"},{"id":"EID6ee77064-0175-1000-8a3d-058413055f1a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee77064-0175-1000-29a6-3e5f39cfd292","testStepResults":{"TestStepResult":[{"id":"EID6ee77064-0175-1000-04d9-c873f8c3cb6f","parent":{"ref":"EID6ee77064-0175-1000-29a6-3e5f39cfd292"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:11:02Z","duration":33,"status":"PASSED"},{"id":"EID6ee77064-0175-1000-2556-8a1e096d1846","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee77170-0175-1000-c34f-f80fc19ffd38","parent":{"ref":"EID6ee77064-0175-1000-2556-8a1e096d1846"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee77170-0175-1000-16fc-f731c3b7e33a","parent":{"ref":"EID6ee77064-0175-1000-2556-8a1e096d1846"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee77170-0175-1000-7700-cb0c2cb20de7","parent":{"ref":"EID6ee77064-0175-1000-2556-8a1e096d1846"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee77170-0175-1000-0b61-7c4c92a8832e","parent":{"ref":"EID6ee77064-0175-1000-2556-8a1e096d1846"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee77170-0175-1000-4c94-d4f5b093b558","parent":{"ref":"EID6ee77064-0175-1000-2556-8a1e096d1846"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:11:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc8e889ce-77ca-4993-baed-ae35c688ec68"},{"ref":"EID1edf87cf-21b4-4981-a24d-4c9e099a2b5f"},{"ref":"EID357787a8-4b58-4027-871d-58d383d07df7"}]},"parent":{"ref":"EID6ee77064-0175-1000-29a6-3e5f39cfd292"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:11:02Z","duration":122,"status":"PASSED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:11:02Z","duration":406,"status":"PASSED"},{"id":"EID6ee774a1-0175-1000-b009-ac242e898732","testStepResults":{"TestStepResult":[{"id":"EID6ee774a1-0175-1000-4529-d199d0cbbb69","attachments":{"attachment":[{"ref":"EIDecb61e93-6501-4551-8323-3d705f4830ce"},{"ref":"EID98f627aa-9866-4314-aa60-402aa59e575b"}]},"parent":{"ref":"EID6ee774a1-0175-1000-b009-ac242e898732"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:11:03Z","duration":184,"status":"PASSED"},{"id":"EID6ee77583-0175-1000-4673-0972c0f91b58","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7768a-0175-1000-9207-42a6fa866ecf","parent":{"ref":"EID6ee77583-0175-1000-4673-0972c0f91b58"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7768a-0175-1000-bcd0-174540b60daa","parent":{"ref":"EID6ee77583-0175-1000-4673-0972c0f91b58"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7768a-0175-1000-064c-c391995e3527","parent":{"ref":"EID6ee77583-0175-1000-4673-0972c0f91b58"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7768a-0175-1000-e34f-a970e503ae5e","parent":{"ref":"EID6ee77583-0175-1000-4673-0972c0f91b58"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7609b735-31c3-4e71-9e19-6093ed0951e7"},{"ref":"EID51fcc14a-557a-46bd-97c4-6d7fdf3686ed"},{"ref":"EID8c77130c-d6f3-40c7-a2e3-4293357d20be"}]},"parent":{"ref":"EID6ee774a1-0175-1000-b009-ac242e898732"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:11:04Z","duration":107,"status":"PASSED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:11:03Z","duration":489,"status":"PASSED"},{"id":"EID6ee7768a-0175-1000-bbd7-37b9f594884b","testStepResults":{"TestStepResult":[{"id":"EID6ee7768a-0175-1000-9f6a-3966946eff48","attachments":{"attachment":[{"ref":"EID6fd9b1c8-810d-403a-948e-1c5ac0739da9"},{"ref":"EID832e2e2e-f4bc-403b-ab28-9d2897650b50"}]},"parent":{"ref":"EID6ee7768a-0175-1000-bbd7-37b9f594884b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:11:04Z","duration":228,"status":"PASSED"},{"id":"EID6ee777a3-0175-1000-bcc8-36cbb24cf4e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7785c-0175-1000-b429-432b8072e68f","parent":{"ref":"EID6ee777a3-0175-1000-bcc8-36cbb24cf4e7"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7785c-0175-1000-a3ed-5b67a160ee4b","parent":{"ref":"EID6ee777a3-0175-1000-bcc8-36cbb24cf4e7"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7785c-0175-1000-6318-eea1cd2058a3","parent":{"ref":"EID6ee777a3-0175-1000-bcc8-36cbb24cf4e7"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7785c-0175-1000-59fb-5804647c8b81","parent":{"ref":"EID6ee777a3-0175-1000-bcc8-36cbb24cf4e7"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee7785c-0175-1000-7dd4-890cbccaad6e","parent":{"ref":"EID6ee777a3-0175-1000-bcc8-36cbb24cf4e7"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:11:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb8d6bcd2-5197-4a2c-91b1-3bd6948ac1ca"},{"ref":"EID7bd1e540-14ae-4b24-8908-77d915b40720"},{"ref":"EID22df2e52-d5a3-42a8-b61d-479835fb352a"}]},"parent":{"ref":"EID6ee7768a-0175-1000-bbd7-37b9f594884b"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:11:04Z","duration":69,"status":"PASSED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:11:04Z","duration":466,"status":"PASSED"},{"id":"EID6ee77870-0175-1000-266a-f60f95a181a2","testStepResults":{"TestStepResult":[{"id":"EID6ee77871-0175-1000-f022-92d25b0794c9","attachments":{"attachment":[{"ref":"EID0936e062-b377-4bd2-bdab-5937ef10d39f"},{"ref":"EID3f7b7079-7754-4a9c-9ad2-d746a82101c6"}]},"parent":{"ref":"EID6ee77870-0175-1000-266a-f60f95a181a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:11:04Z","duration":133,"status":"PASSED"},{"id":"EID6ee77938-0175-1000-6704-635b252eef65","parent":{"ref":"EID6ee77870-0175-1000-266a-f60f95a181a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77938-0175-1000-ce9d-657fc3555e31","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee779e2-0175-1000-3b07-71b44661cdf8","parent":{"ref":"EID6ee77938-0175-1000-ce9d-657fc3555e31"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee779e2-0175-1000-4a31-b61385b187b9","parent":{"ref":"EID6ee77938-0175-1000-ce9d-657fc3555e31"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee779e2-0175-1000-fca5-acd3be2b1b12","parent":{"ref":"EID6ee77938-0175-1000-ce9d-657fc3555e31"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee779e2-0175-1000-cd8c-77783194c842","parent":{"ref":"EID6ee77938-0175-1000-ce9d-657fc3555e31"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa9071770-8e6a-4e29-869b-bb7580377014"},{"ref":"EID224dbd22-15d1-442e-96c6-913c7229fba7"},{"ref":"EID8e2ac076-0492-4d45-a346-e8a84f0ce15c"}]},"parent":{"ref":"EID6ee77870-0175-1000-266a-f60f95a181a2"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:11:05Z","duration":45,"status":"PASSED"},{"id":"EID6ee779e2-0175-1000-5f6d-6a7b20761049","attachments":{"attachment":{"ref":"EID5bdfeeae-6afa-4d40-a1df-988246b102c7"}},"parent":{"ref":"EID6ee77870-0175-1000-266a-f60f95a181a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:11:05Z","duration":1,"status":"PASSED"},{"id":"EID6ee779ef-0175-1000-0325-e14d056908ea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee77acc-0175-1000-b293-38d87ec9fba0","parent":{"ref":"EID6ee779ef-0175-1000-0325-e14d056908ea"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77acc-0175-1000-992f-9ee928e101c2","parent":{"ref":"EID6ee779ef-0175-1000-0325-e14d056908ea"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77acc-0175-1000-fcf9-4f2d15d88d64","parent":{"ref":"EID6ee779ef-0175-1000-0325-e14d056908ea"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77acc-0175-1000-9888-6aa2aae06dc3","parent":{"ref":"EID6ee779ef-0175-1000-0325-e14d056908ea"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77acc-0175-1000-34aa-e4b28f42af37","parent":{"ref":"EID6ee779ef-0175-1000-0325-e14d056908ea"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8da46067-366a-41cf-be06-7445b21bd051"},{"ref":"EID1a041037-b248-4a44-8bd9-ef875abc9b69"},{"ref":"EID93dade34-377e-4d28-b0c8-6735fcfd3b07"}]},"parent":{"ref":"EID6ee77870-0175-1000-266a-f60f95a181a2"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:11:05Z","duration":89,"status":"PASSED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:11:04Z","duration":604,"status":"PASSED"},{"id":"EID6ee77acc-0175-1000-dd37-994ce31f0a01","testStepResults":{"TestStepResult":[{"id":"EID6ee77acc-0175-1000-9e7b-91b9aeeb386c","attachments":{"attachment":[{"ref":"EIDe15f6860-5c2c-435f-ad8d-57e6cb2b9c7f"},{"ref":"EID44215be6-aeec-4499-8b7d-66830167ec8c"}]},"parent":{"ref":"EID6ee77acc-0175-1000-dd37-994ce31f0a01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:11:05Z","duration":102,"status":"PASSED"},{"id":"EID6ee77b6b-0175-1000-4617-5a01739fd420","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee77c71-0175-1000-bad9-1f1390d01396","parent":{"ref":"EID6ee77b6b-0175-1000-4617-5a01739fd420"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77c71-0175-1000-1e7c-ae2049b93c07","parent":{"ref":"EID6ee77b6b-0175-1000-4617-5a01739fd420"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77c71-0175-1000-fce0-67b29ad7a95b","parent":{"ref":"EID6ee77b6b-0175-1000-4617-5a01739fd420"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee77c71-0175-1000-f418-5d97f1023cd4","parent":{"ref":"EID6ee77b6b-0175-1000-4617-5a01739fd420"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID121386b8-9490-47c9-91b0-897bea61aa49"},{"ref":"EIDd8ef0c5f-8fe9-4af0-9df8-736490d43216"},{"ref":"EID575aa18f-8568-4dc3-8e41-fc6000121af1"}]},"parent":{"ref":"EID6ee77acc-0175-1000-dd37-994ce31f0a01"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:11:05Z","duration":84,"status":"PASSED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:11:05Z","duration":421,"status":"PASSED"},{"id":"EID6ee77c71-0175-1000-b6ac-3090ae89a48d","testStepResults":{"TestStepResult":[{"id":"EID6ee77c71-0175-1000-dd3c-6b63c743910f","attachments":{"attachment":[{"ref":"EIDb5cd8d9a-3007-46b9-bea7-279ca7a0a7cb"},{"ref":"EID71dc9759-ed86-46b5-ba06-f14a358b5a8c"}]},"parent":{"ref":"EID6ee77c71-0175-1000-b6ac-3090ae89a48d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:11:05Z","duration":155,"status":"PASSED"},{"id":"EID6ee77d3a-0175-1000-23df-1acf0687637a","parent":{"ref":"EID6ee77c71-0175-1000-b6ac-3090ae89a48d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee77d3a-0175-1000-4c65-ce5816cb7621","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee77eab-0175-1000-a7d8-14212409aa83","parent":{"ref":"EID6ee77d3a-0175-1000-4c65-ce5816cb7621"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee77eab-0175-1000-15a2-721e6f75b306","parent":{"ref":"EID6ee77d3a-0175-1000-4c65-ce5816cb7621"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee77eab-0175-1000-3212-e967b6ee6beb","parent":{"ref":"EID6ee77d3a-0175-1000-4c65-ce5816cb7621"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee77eac-0175-1000-ad67-c47b5da0d641","parent":{"ref":"EID6ee77d3a-0175-1000-4c65-ce5816cb7621"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID10031700-1beb-4610-9831-e02536841617"},{"ref":"EIDc93618ab-71fa-4c79-a829-a7abe5e12886"},{"ref":"EIDb0ac13a0-c932-48c5-8405-b7628b09cc5a"}]},"parent":{"ref":"EID6ee77c71-0175-1000-b6ac-3090ae89a48d"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:11:06Z","duration":65,"status":"PASSED"},{"id":"EID6ee77eac-0175-1000-2f2c-dfa0083ab8f1","attachments":{"attachment":{"ref":"EID47acf478-8a16-472b-9fd8-804ba445d0ea"}},"parent":{"ref":"EID6ee77c71-0175-1000-b6ac-3090ae89a48d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:11:06Z","duration":1,"status":"PASSED"},{"id":"EID6ee77ebe-0175-1000-d6ee-52d6a464df10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee77fe3-0175-1000-821f-76fc00a2301f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee77ebe-0175-1000-d6ee-52d6a464df10"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:11:06Z","duration":39,"status":"FAILED"},{"id":"EID6ee7800a-0175-1000-a66b-3bfaa4eec5e1","parent":{"ref":"EID6ee77ebe-0175-1000-d6ee-52d6a464df10"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee7800a-0175-1000-25c1-bc4ddbe67ce4","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee77ebe-0175-1000-d6ee-52d6a464df10"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:11:06Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf4688ffb-9e70-47a0-94df-d6ba17eee167"},{"ref":"EIDdbade434-0af2-4eca-8d2b-c254471940f6"},{"ref":"EID68ce262a-2dc3-4c2a-8015-08cdf66ea97f"}]},"parent":{"ref":"EID6ee77c71-0175-1000-b6ac-3090ae89a48d"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:11:06Z","duration":212,"status":"FAILED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:11:05Z","duration":948,"status":"FAILED"},{"id":"EID6ee78025-0175-1000-a1c8-7a1a93279804","testStepResults":{"TestStepResult":[{"id":"EID6ee78025-0175-1000-5cc2-ccac3bf6bc60","attachments":{"attachment":[{"ref":"EID087d549a-1e87-46e1-bcd0-d6ea416f441f"},{"ref":"EIDed9787b5-0024-4b70-accb-42ea47219475"}]},"parent":{"ref":"EID6ee78025-0175-1000-a1c8-7a1a93279804"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:11:06Z","duration":329,"status":"PASSED"},{"id":"EID6ee781f4-0175-1000-e509-491767051aa1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee782ab-0175-1000-b456-6f4ff4dfdb7f","parent":{"ref":"EID6ee781f4-0175-1000-e509-491767051aa1"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee782ab-0175-1000-fe98-2cfd3d4d28eb","parent":{"ref":"EID6ee781f4-0175-1000-e509-491767051aa1"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee782ab-0175-1000-adf6-e9c0421c4249","parent":{"ref":"EID6ee781f4-0175-1000-e509-491767051aa1"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee782ab-0175-1000-ff90-5cd1a1744195","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee781f4-0175-1000-e509-491767051aa1"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID2ee16628-107f-4267-bbfb-f01d0728aa84"},{"ref":"EIDbc6597c5-dbcb-467d-93ff-e79c53d3fdde"},{"ref":"EID2286f611-50af-4b4f-9918-bc24ab9cc1d1"}]},"parent":{"ref":"EID6ee78025-0175-1000-a1c8-7a1a93279804"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:11:07Z","duration":58,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:11:06Z","duration":646,"status":"PASSED_MANUAL"},{"id":"EID6ee782ac-0175-1000-252d-722e5fe26077","testStepResults":{"TestStepResult":{"id":"EID6ee782ac-0175-1000-44ec-959247d2f784","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee783f2-0175-1000-9984-e41fd4f6ef48","parent":{"ref":"EID6ee782ac-0175-1000-44ec-959247d2f784"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee783f2-0175-1000-54a1-99744af539c7","parent":{"ref":"EID6ee782ac-0175-1000-44ec-959247d2f784"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee783f2-0175-1000-70e0-9b533c80fc95","parent":{"ref":"EID6ee782ac-0175-1000-44ec-959247d2f784"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee783f3-0175-1000-dd4a-df717381a6c3","parent":{"ref":"EID6ee782ac-0175-1000-44ec-959247d2f784"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID138f1ea9-1f9b-4c3a-a85d-c3f52e924d89"},{"ref":"EIDc5b243cd-c29e-4570-8775-f3871896ae8a"},{"ref":"EIDf15a988e-44e0-42ed-87de-dd749d00b9d7"}]},"parent":{"ref":"EID6ee782ac-0175-1000-252d-722e5fe26077"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:11:07Z","duration":47,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:11:07Z","duration":327,"status":"PASSED"},{"id":"EID6ee783f3-0175-1000-35ab-98db90ab1323","testStepResults":{"TestStepResult":{"id":"EID6ee783f3-0175-1000-4c74-37074f665eb2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee78482-0175-1000-54f2-5690e7be1438","parent":{"ref":"EID6ee783f3-0175-1000-4c74-37074f665eb2"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee78482-0175-1000-5ef3-643a75dc094e","parent":{"ref":"EID6ee783f3-0175-1000-4c74-37074f665eb2"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee78482-0175-1000-24bb-eca62b179670","parent":{"ref":"EID6ee783f3-0175-1000-4c74-37074f665eb2"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee78482-0175-1000-a470-f7dad1a702c8","parent":{"ref":"EID6ee783f3-0175-1000-4c74-37074f665eb2"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:11:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc832ea64-bb25-4478-b1af-c3b4597df39e"},{"ref":"EID0c7c2c19-c3f3-4526-8d88-1c7ffe2230bd"},{"ref":"EID670122eb-b703-4cfe-bd50-9386296e091b"}]},"parent":{"ref":"EID6ee783f3-0175-1000-35ab-98db90ab1323"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:11:07Z","duration":42,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:11:07Z","duration":155,"status":"PASSED"},{"id":"EID6ee7848e-0175-1000-191d-6d998326ddd0","testStepResults":{"TestStepResult":{"id":"EID6ee7848e-0175-1000-cb6f-e80be509e3ff","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID27d9f4a6-e51c-455b-8d00-c92c5ae0329e"},{"ref":"EIDc4285402-ae97-459f-ba5e-87db953f9954"},{"ref":"EID3e68506b-5b22-461d-a40f-58d2c8869d3a"},{"ref":"EIDdf97baa4-0633-4803-a1a1-cd4d10636051"},{"ref":"EIDb153fcf6-9ad7-4015-a255-c07d4819abef"},{"ref":"EIDc8f5869d-4ab8-4119-ab85-d25e282d31dc"},{"ref":"EIDf5085727-4b62-43ad-88cb-8477625bcadf"},{"ref":"EID05bba0ba-77ac-4410-8af3-0b4406c17b2a"},{"ref":"EID5d3ad412-9a2b-491f-9758-50121aecc5b0"}]},"parent":{"ref":"EID6ee7848e-0175-1000-191d-6d998326ddd0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:11:07Z","duration":498,"status":"SKIPPED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:11:07Z","duration":721,"status":"SKIPPED"},{"id":"EID6ee7875f-0175-1000-40cc-9c5352b8c11b","testStepResults":{"TestStepResult":{"id":"EID6ee7875f-0175-1000-1217-ad01e25bd9ee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee78862-0175-1000-06a5-6087878c1064","parent":{"ref":"EID6ee7875f-0175-1000-1217-ad01e25bd9ee"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee78862-0175-1000-d1fc-e60c0c688065","parent":{"ref":"EID6ee7875f-0175-1000-1217-ad01e25bd9ee"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee78862-0175-1000-0ee7-9d5e73ad50e4","parent":{"ref":"EID6ee7875f-0175-1000-1217-ad01e25bd9ee"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee78862-0175-1000-7660-cad3f1e633fb","parent":{"ref":"EID6ee7875f-0175-1000-1217-ad01e25bd9ee"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:11:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1fe770c7-0aef-4bc6-8532-4a5152515b96"},{"ref":"EID5298f93e-f380-4151-b2e1-cfcb68955727"},{"ref":"EIDb331ffdf-c42c-4d97-a023-06ed6bc1f678"}]},"parent":{"ref":"EID6ee7875f-0175-1000-40cc-9c5352b8c11b"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:11:08Z","duration":69,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:11:08Z","duration":259,"status":"PASSED"},{"id":"EID6ee78862-0175-1000-fb29-4e551bb1e20d","testStepResults":{"TestStepResult":{"id":"EID6ee78863-0175-1000-751f-ece4caab0f42","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7895d-0175-1000-3953-0e6506d7dfde","parent":{"ref":"EID6ee78863-0175-1000-751f-ece4caab0f42"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee7895d-0175-1000-0f0d-0d6d0318073c","parent":{"ref":"EID6ee78863-0175-1000-751f-ece4caab0f42"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee7895d-0175-1000-6ebb-6d63d8915679","parent":{"ref":"EID6ee78863-0175-1000-751f-ece4caab0f42"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee7895d-0175-1000-a4fd-0b430db4db0e","parent":{"ref":"EID6ee78863-0175-1000-751f-ece4caab0f42"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee7895d-0175-1000-e2d7-b7a9d4569af2","parent":{"ref":"EID6ee78863-0175-1000-751f-ece4caab0f42"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee7895d-0175-1000-8f95-2d2a0b6ecaf3","parent":{"ref":"EID6ee78863-0175-1000-751f-ece4caab0f42"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb733baad-d4ec-4b40-a4f1-84e119a8cc09"},{"ref":"EIDca2924b0-9498-4b0b-893c-4b4bb949055c"},{"ref":"EIDce2c3ed9-8733-4247-a225-5ea2fe03f41c"}]},"parent":{"ref":"EID6ee78862-0175-1000-fb29-4e551bb1e20d"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:11:08Z","duration":57,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:11:08Z","duration":251,"status":"PASSED"},{"id":"EID6ee7895e-0175-1000-bb3f-13f67e04dd69","testStepResults":{"TestStepResult":{"id":"EID6ee7895e-0175-1000-613d-4c571b974a73","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee78a8c-0175-1000-3f27-1b92bfcb485a","parent":{"ref":"EID6ee7895e-0175-1000-613d-4c571b974a73"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78a8c-0175-1000-cfab-a32ffcdf21d3","parent":{"ref":"EID6ee7895e-0175-1000-613d-4c571b974a73"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78a8c-0175-1000-714f-50b5dbfa4132","parent":{"ref":"EID6ee7895e-0175-1000-613d-4c571b974a73"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78a8c-0175-1000-bd98-44559b5db2cf","parent":{"ref":"EID6ee7895e-0175-1000-613d-4c571b974a73"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78a8c-0175-1000-7ec3-172a4a2d9e26","parent":{"ref":"EID6ee7895e-0175-1000-613d-4c571b974a73"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78a8c-0175-1000-c982-7de4ac7b5486","parent":{"ref":"EID6ee7895e-0175-1000-613d-4c571b974a73"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID629a19ec-1a6a-490e-9213-498605c3768a"},{"ref":"EID7f269135-3c7d-4e4a-8664-6a312150a2e7"},{"ref":"EID422b4706-2bfc-42b5-9d75-0dc80460ca65"}]},"parent":{"ref":"EID6ee7895e-0175-1000-bb3f-13f67e04dd69"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:11:09Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:11:09Z","duration":302,"status":"PASSED"},{"id":"EID6ee78a8d-0175-1000-0d30-132ddd83e540","testStepResults":{"TestStepResult":{"id":"EID6ee78a8d-0175-1000-b452-acfa3b90fab5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee78b88-0175-1000-c709-129cf221e8ba","parent":{"ref":"EID6ee78a8d-0175-1000-b452-acfa3b90fab5"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78b88-0175-1000-f647-4575287e9c27","parent":{"ref":"EID6ee78a8d-0175-1000-b452-acfa3b90fab5"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78b88-0175-1000-6c8b-e44f3463548f","parent":{"ref":"EID6ee78a8d-0175-1000-b452-acfa3b90fab5"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee78b88-0175-1000-0a44-11fee79d0c6c","parent":{"ref":"EID6ee78a8d-0175-1000-b452-acfa3b90fab5"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:11:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb654603e-8c96-485a-a95f-f76a0510e064"},{"ref":"EID23ddad78-a3e2-4553-9c68-bb23d00b7f40"},{"ref":"EID894ff010-a9c6-4143-8fb9-0d324d4670e5"}]},"parent":{"ref":"EID6ee78a8d-0175-1000-0d30-132ddd83e540"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:11:09Z","duration":66,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:11:09Z","duration":251,"status":"PASSED"},{"id":"EID6ee78b88-0175-1000-a142-c1bf010e014e","testStepResults":{"TestStepResult":[{"id":"EID6ee78b88-0175-1000-b386-f04e17873cc8","attachments":{"attachment":[{"ref":"EID472f7165-30ad-400f-b024-54966c2a2739"},{"ref":"EIDe9f98711-9144-4014-87fd-8baa991f6636"},{"ref":"EID0f5369e2-3225-4bb6-9df2-01b7492193b4"},{"ref":"EID80bf2117-0bf0-4707-875b-c0fce5441406"}]},"parent":{"ref":"EID6ee78b88-0175-1000-a142-c1bf010e014e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:11:09Z","duration":421,"status":"PASSED"},{"id":"EID6ee78d7b-0175-1000-fc00-2eec9ce72030","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee78eac-0175-1000-a835-8da6b882186e","parent":{"ref":"EID6ee78d7b-0175-1000-fc00-2eec9ce72030"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78eac-0175-1000-05de-74862066946d","parent":{"ref":"EID6ee78d7b-0175-1000-fc00-2eec9ce72030"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78eac-0175-1000-406b-e7a46a096fee","parent":{"ref":"EID6ee78d7b-0175-1000-fc00-2eec9ce72030"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78eac-0175-1000-b1ba-184113360dca","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee78d7b-0175-1000-fc00-2eec9ce72030"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb2a995e8-0cd5-436c-ae7e-3e8549a01c87"},{"ref":"EIDc5b9c20a-0d2a-453e-be59-f9ee60d99bf6"},{"ref":"EIDad8dcf68-d9bc-4d0d-afa5-b3371ae9face"}]},"parent":{"ref":"EID6ee78b88-0175-1000-a142-c1bf010e014e"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:11:10Z","duration":32,"status":"FAILED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:11:09Z","duration":805,"status":"FAILED"},{"id":"EID6ee78eae-0175-1000-b5ab-9537307ba7ea","testStepResults":{"TestStepResult":{"id":"EID6ee78eae-0175-1000-eb30-f78b47eeb876","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee78f91-0175-1000-0e08-1bedfe451f10","parent":{"ref":"EID6ee78eae-0175-1000-eb30-f78b47eeb876"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78f91-0175-1000-90a5-e8649c619616","parent":{"ref":"EID6ee78eae-0175-1000-eb30-f78b47eeb876"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78f91-0175-1000-716c-d577dc877f43","parent":{"ref":"EID6ee78eae-0175-1000-eb30-f78b47eeb876"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78f91-0175-1000-0963-048d32e3d41e","parent":{"ref":"EID6ee78eae-0175-1000-eb30-f78b47eeb876"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8cf43339-265e-4293-a70d-c2d04e1fb27d"},{"ref":"EID4a35759a-7fc0-4757-874b-dde6af28d74b"},{"ref":"EID6d773349-7a18-4611-8037-a9cd46c04bec"}]},"parent":{"ref":"EID6ee78eae-0175-1000-b5ab-9537307ba7ea"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:11:10Z","duration":100,"status":"PASSED"}},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:11:10Z","duration":227,"status":"PASSED"},{"id":"EID6ee78f9a-0175-1000-921d-2966d6486e1b","testStepResults":{"TestStepResult":[{"id":"EID6ee78f9a-0175-1000-9df3-02db76d9b362","parent":{"ref":"EID6ee78f9a-0175-1000-921d-2966d6486e1b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee78f9a-0175-1000-3c58-1f3629f65090","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79054-0175-1000-576c-42ed8f4fd4ec","parent":{"ref":"EID6ee78f9a-0175-1000-3c58-1f3629f65090"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee79054-0175-1000-8814-8c8e26c915f1","parent":{"ref":"EID6ee78f9a-0175-1000-3c58-1f3629f65090"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee79054-0175-1000-e8ee-6f069f1c000f","parent":{"ref":"EID6ee78f9a-0175-1000-3c58-1f3629f65090"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee79054-0175-1000-8b5b-63c419703e1a","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee78f9a-0175-1000-3c58-1f3629f65090"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID995795cd-27d6-4e14-b7ea-29c75dd7ef03"},{"ref":"EID59a6cbec-f842-494b-9e04-90e4b745bf1c"},{"ref":"EID7ab42b43-a24b-4e31-b9dc-ddb0f5bd60d4"}]},"parent":{"ref":"EID6ee78f9a-0175-1000-921d-2966d6486e1b"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:11:10Z","duration":48,"status":"FAILED"}]},"parent":{"ref":"EID6ee77064-0175-1000-8a3d-058413055f1a"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:11:10Z","duration":186,"status":"FAILED"}]},"parent":{"ref":"EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:11:02Z","duration":8177,"status":"FAILED"},{"id":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc","testCaseResults":{"TestCaseResult":[{"id":"EID6ee79056-0175-1000-9019-e6a5d4de8ee5","testStepResults":{"TestStepResult":[{"id":"EID6ee79056-0175-1000-8375-f0af96b82514","parent":{"ref":"EID6ee79056-0175-1000-9019-e6a5d4de8ee5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:11:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee79056-0175-1000-7d9d-c1777c172ce0","parent":{"ref":"EID6ee79056-0175-1000-9019-e6a5d4de8ee5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:11:10Z","duration":100,"status":"PASSED"},{"id":"EID6ee79056-0175-1000-697e-88891ebc553d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7911e-0175-1000-6889-5236efe70b40","parent":{"ref":"EID6ee79056-0175-1000-697e-88891ebc553d"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee7911e-0175-1000-0f85-b08345039878","parent":{"ref":"EID6ee79056-0175-1000-697e-88891ebc553d"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee7911e-0175-1000-a42e-a02692b0e716","parent":{"ref":"EID6ee79056-0175-1000-697e-88891ebc553d"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDef8def6b-af5d-4300-b718-229c1dbf1bfd"},{"ref":"EIDfb9682f6-10d5-4a1c-80d1-3980652f2cb5"},{"ref":"EIDa693a35c-9eea-4179-aa6a-da62e7afccae"}]},"parent":{"ref":"EID6ee79056-0175-1000-9019-e6a5d4de8ee5"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:11:10Z","duration":82,"status":"PASSED"},{"id":"EID6ee7911f-0175-1000-6b7a-673c0a139c73","attachments":{"attachment":{"ref":"EIDbccaf07f-73f2-4f2f-b5d3-0111459bfd74"}},"parent":{"ref":"EID6ee79056-0175-1000-9019-e6a5d4de8ee5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee7912d-0175-1000-9223-c78b542141c0","parent":{"ref":"EID6ee79056-0175-1000-9019-e6a5d4de8ee5"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:11:11Z","duration":67,"status":"PASSED"}]},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:11:10Z","duration":283,"status":"PASSED"},{"id":"EID6ee79171-0175-1000-d4a2-748f9a16abdb","testStepResults":{"TestStepResult":[{"id":"EID6ee79171-0175-1000-20cb-ddb13a030ea1","parent":{"ref":"EID6ee79171-0175-1000-d4a2-748f9a16abdb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:11:11Z","duration":33,"status":"PASSED"},{"id":"EID6ee79171-0175-1000-9428-173e6e5ff535","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee791d2-0175-1000-0bbb-9131e9c50814","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79171-0175-1000-9428-173e6e5ff535"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:11:11Z","duration":10,"status":"FAILED"},{"id":"EID6ee791dc-0175-1000-2622-68cb55eceaee","parent":{"ref":"EID6ee79171-0175-1000-9428-173e6e5ff535"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee791dc-0175-1000-a191-0a774acadf9d","parent":{"ref":"EID6ee79171-0175-1000-9428-173e6e5ff535"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee791dc-0175-1000-cf65-9ba5d81410b0","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee79171-0175-1000-9428-173e6e5ff535"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"FAILED"},{"id":"EID6ee791dc-0175-1000-f64a-d07de3a4bd61","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee79171-0175-1000-9428-173e6e5ff535"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID220ce76d-cd81-4fec-b0ca-24969e887530"},{"ref":"EID325e9009-8120-4c51-b7d6-b1ff5bd34af5"},{"ref":"EID4d29838a-cb50-4ec6-9815-e542a7c97290"}]},"parent":{"ref":"EID6ee79171-0175-1000-d4a2-748f9a16abdb"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:11:11Z","duration":33,"status":"FAILED"}]},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:11:11Z","duration":107,"status":"FAILED"},{"id":"EID6ee791dd-0175-1000-4196-778bf6c2c9f6","testStepResults":{"TestStepResult":{"id":"EID6ee791dd-0175-1000-e7a1-b5de76fac2d7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79245-0175-1000-98ce-b82d51b0fde2","parent":{"ref":"EID6ee791dd-0175-1000-e7a1-b5de76fac2d7"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee79245-0175-1000-5ea6-1207f7a184c0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee791dd-0175-1000-e7a1-b5de76fac2d7"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:11:11Z","duration":13,"status":"FAILED"},{"id":"EID6ee79253-0175-1000-b2d6-32105b0aa44d","parent":{"ref":"EID6ee791dd-0175-1000-e7a1-b5de76fac2d7"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe4054650-6e71-4772-97e0-cccea7d59371"},{"ref":"EID37eddf5d-9583-47a2-99a5-b41436700674"},{"ref":"EID338385d6-8405-44b4-aecc-516d2fcda94f"}]},"parent":{"ref":"EID6ee791dd-0175-1000-4196-778bf6c2c9f6"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:11:11Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:11:11Z","duration":118,"status":"FAILED"},{"id":"EID6ee79253-0175-1000-7720-caceb927b054","testStepResults":{"TestStepResult":{"id":"EID6ee79253-0175-1000-81ce-e1b34d7c9020","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee792ed-0175-1000-1e3c-f228ca7c4fbd","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee79253-0175-1000-81ce-e1b34d7c9020"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"FAILED"},{"id":"EID6ee792ed-0175-1000-b970-48f514930ae1","parent":{"ref":"EID6ee79253-0175-1000-81ce-e1b34d7c9020"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee792ed-0175-1000-c706-fc365e5061c8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79253-0175-1000-81ce-e1b34d7c9020"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:11:11Z","duration":11,"status":"FAILED"},{"id":"EID6ee792f8-0175-1000-e0d0-beb8602e1590","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee79253-0175-1000-81ce-e1b34d7c9020"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa1d62560-c619-4045-9dc3-7e2b0dea6016"},{"ref":"EIDeab440dd-0cc1-46a7-88ef-04914e670c26"},{"ref":"EID047976ec-0597-4ab2-ab18-a0dd897a4fe8"}]},"parent":{"ref":"EID6ee79253-0175-1000-7720-caceb927b054"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:11:11Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:11:11Z","duration":165,"status":"FAILED"},{"id":"EID6ee792f8-0175-1000-c09a-d181afcdb8d9","testStepResults":{"TestStepResult":{"id":"EID6ee792f8-0175-1000-2181-94c1c3b862b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7936a-0175-1000-c7aa-4185cd685520","parent":{"ref":"EID6ee792f8-0175-1000-2181-94c1c3b862b4"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee7936a-0175-1000-f9ad-37e4770b5db0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee792f8-0175-1000-2181-94c1c3b862b4"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:11:11Z","duration":11,"status":"FAILED"},{"id":"EID6ee79375-0175-1000-9f99-99746e2eae0a","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee792f8-0175-1000-2181-94c1c3b862b4"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID84452361-0af8-42c1-9a60-617e9aaf64b6"},{"ref":"EIDb848d782-c1a0-473e-874a-11610740cd25"},{"ref":"EIDe14609bb-c2f9-4a4a-957a-6d74c258980f"}]},"parent":{"ref":"EID6ee792f8-0175-1000-c09a-d181afcdb8d9"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:11:11Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:11:11Z","duration":126,"status":"FAILED"},{"id":"EID6ee79376-0175-1000-8034-ae5d12bbd35a","testStepResults":{"TestStepResult":{"id":"EID6ee79376-0175-1000-df08-633473509ef9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee793d2-0175-1000-11bc-187f49300fcd","parent":{"ref":"EID6ee79376-0175-1000-df08-633473509ef9"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee793d2-0175-1000-f478-90a8eedbeb36","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79376-0175-1000-df08-633473509ef9"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:11:11Z","duration":94,"status":"FAILED"},{"id":"EID6ee79430-0175-1000-ca6c-17931299857e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee79376-0175-1000-df08-633473509ef9"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:11:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID87f6632d-f630-4ac6-8116-ee435167eb39"},{"ref":"EIDd599106a-a513-4d87-b3f6-d9315b1bbddf"},{"ref":"EID9f43dc25-13b8-4b0a-bea2-25c82209382c"}]},"parent":{"ref":"EID6ee79376-0175-1000-8034-ae5d12bbd35a"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:11:11Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:11:11Z","duration":186,"status":"FAILED"},{"id":"EID6ee79430-0175-1000-8a26-9737a5288d26","testStepResults":{"TestStepResult":{"id":"EID6ee79430-0175-1000-0c28-3ef940f9518d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee794e6-0175-1000-7049-3f889f5e44bb","parent":{"ref":"EID6ee79430-0175-1000-0c28-3ef940f9518d"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee794e6-0175-1000-ca58-f392cbf8315d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79430-0175-1000-0c28-3ef940f9518d"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:11:12Z","duration":11,"status":"FAILED"},{"id":"EID6ee794f1-0175-1000-ab18-2d8ede20192d","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee79430-0175-1000-0c28-3ef940f9518d"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"FAILED"},{"id":"EID6ee794f1-0175-1000-5d69-5d63ffcfbd66","parent":{"ref":"EID6ee79430-0175-1000-0c28-3ef940f9518d"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee794f1-0175-1000-0a64-64c5d301c1ea","parent":{"ref":"EID6ee79430-0175-1000-0c28-3ef940f9518d"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID80b0e27d-c6ec-457f-a8d3-f825a7eb1756"},{"ref":"EIDbae5b3aa-547d-4eaf-bfdf-cdd41d3f35cb"},{"ref":"EID8f291dc8-9e7e-4756-8541-b497811f6f4c"}]},"parent":{"ref":"EID6ee79430-0175-1000-8a26-9737a5288d26"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:11:11Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:11:11Z","duration":193,"status":"FAILED"},{"id":"EID6ee794f1-0175-1000-0f00-4f72d00bfd49","testStepResults":{"TestStepResult":{"id":"EID6ee794f1-0175-1000-2b7e-4cbb79362acb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79540-0175-1000-5f05-49f4ebc9a924","parent":{"ref":"EID6ee794f1-0175-1000-2b7e-4cbb79362acb"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee79540-0175-1000-17d8-f9d0a1258787","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee794f1-0175-1000-2b7e-4cbb79362acb"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:11:12Z","duration":20,"status":"FAILED"},{"id":"EID6ee79554-0175-1000-8ef0-faaa7686ac27","parent":{"ref":"EID6ee794f1-0175-1000-2b7e-4cbb79362acb"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc57c7434-84db-41a8-b9f0-fa118517d802"},{"ref":"EID7be47814-aa2f-4760-b9ef-bf4b073b703d"},{"ref":"EID64842a08-be4c-417d-bdee-8d4c8903bb87"}]},"parent":{"ref":"EID6ee794f1-0175-1000-0f00-4f72d00bfd49"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:11:12Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:11:12Z","duration":99,"status":"FAILED"},{"id":"EID6ee79554-0175-1000-0392-be40ea8caa6c","testStepResults":{"TestStepResult":{"id":"EID6ee79554-0175-1000-4efa-df85ebdfbc67","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee795b7-0175-1000-6b07-476194ae924b","parent":{"ref":"EID6ee79554-0175-1000-4efa-df85ebdfbc67"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee795b7-0175-1000-5dab-ef943eef1bf1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79554-0175-1000-4efa-df85ebdfbc67"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:11:12Z","duration":11,"status":"FAILED"},{"id":"EID6ee795c2-0175-1000-e60f-cb29873c63b3","parent":{"ref":"EID6ee79554-0175-1000-4efa-df85ebdfbc67"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84b4735f-0919-4c04-91fc-85f2b9cfef7c"},{"ref":"EID8ffc0f30-87de-4800-adf0-f23ad2540dc6"},{"ref":"EID9c4f008c-4684-426b-a7e8-07219b365f6e"}]},"parent":{"ref":"EID6ee79554-0175-1000-0392-be40ea8caa6c"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:11:12Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:11:12Z","duration":110,"status":"FAILED"},{"id":"EID6ee795c2-0175-1000-9078-6e1694add722","testStepResults":{"TestStepResult":{"id":"EID6ee795c3-0175-1000-2eda-09f400274162","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79679-0175-1000-8181-4bf27cfa1436","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee795c3-0175-1000-2eda-09f400274162"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:11:12Z","duration":22,"status":"FAILED"},{"id":"EID6ee7968f-0175-1000-c987-28821dd2b7f8","parent":{"ref":"EID6ee795c3-0175-1000-2eda-09f400274162"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee7968f-0175-1000-15bf-bb488cfa481e","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee795c3-0175-1000-2eda-09f400274162"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"FAILED"},{"id":"EID6ee7968f-0175-1000-6d4f-a645f155b0ee","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee795c3-0175-1000-2eda-09f400274162"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa2dacb87-194f-44b6-8731-c09c5abb2c32"},{"ref":"EIDc5b90895-6cf2-40e2-8174-aade1cc03a52"},{"ref":"EIDfa8823bf-6e37-4a4e-86ea-d904d02a36c2"}]},"parent":{"ref":"EID6ee795c2-0175-1000-9078-6e1694add722"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:11:12Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:11:12Z","duration":215,"status":"FAILED"},{"id":"EID6ee7969a-0175-1000-2de3-d96710be6495","testStepResults":{"TestStepResult":{"id":"EID6ee7969a-0175-1000-47f9-f3dcfce320c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79714-0175-1000-3559-92e0de7d5374","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee7969a-0175-1000-47f9-f3dcfce320c5"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:11:12Z","duration":13,"status":"FAILED"},{"id":"EID6ee79721-0175-1000-b545-6dda8e52e482","parent":{"ref":"EID6ee7969a-0175-1000-47f9-f3dcfce320c5"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee79721-0175-1000-6475-25fc6cde5345","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee7969a-0175-1000-47f9-f3dcfce320c5"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"FAILED"},{"id":"EID6ee79721-0175-1000-55c3-bfcc88568259","parent":{"ref":"EID6ee7969a-0175-1000-47f9-f3dcfce320c5"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDef4538fb-9185-44e5-b481-83e8a7a50872"},{"ref":"EID11f5ae66-5621-4f96-bf25-589a81f0c6c1"},{"ref":"EID6b07ba84-0262-4046-bedc-6be31d03c200"}]},"parent":{"ref":"EID6ee7969a-0175-1000-2de3-d96710be6495"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:11:12Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:11:12Z","duration":135,"status":"FAILED"},{"id":"EID6ee79722-0175-1000-8efa-e74b3ca30917","testStepResults":{"TestStepResult":[{"id":"EID6ee79722-0175-1000-1fb6-f37b1d6cc1a7","parent":{"ref":"EID6ee79722-0175-1000-8efa-e74b3ca30917"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee79722-0175-1000-454c-2c9b96005b90","parent":{"ref":"EID6ee79722-0175-1000-8efa-e74b3ca30917"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:11:12Z","duration":155,"status":"PASSED"},{"id":"EID6ee79722-0175-1000-212a-b06d29624e25","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee797da-0175-1000-0ebd-821508416b48","parent":{"ref":"EID6ee79722-0175-1000-212a-b06d29624e25"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee797da-0175-1000-08e3-6fb0185cda5a","parent":{"ref":"EID6ee79722-0175-1000-212a-b06d29624e25"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee797da-0175-1000-2538-8d9918313c54","parent":{"ref":"EID6ee79722-0175-1000-212a-b06d29624e25"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee797da-0175-1000-0426-a7d938517551","parent":{"ref":"EID6ee79722-0175-1000-212a-b06d29624e25"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:11:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf0c23879-079a-4ed7-804b-05fde5dc5dc0"},{"ref":"EIDef211b65-bd4a-4e1b-8356-9eace0e306af"},{"ref":"EIDaaaaac15-1b94-4d0d-943b-e8b426cdcf5f"}]},"parent":{"ref":"EID6ee79722-0175-1000-8efa-e74b3ca30917"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:11:12Z","duration":68,"status":"PASSED"},{"id":"EID6ee797db-0175-1000-8f8e-446efc7ce520","attachments":{"attachment":{"ref":"EID0f0f2cc6-ae66-4184-a878-3b654bd256b5"}},"parent":{"ref":"EID6ee79722-0175-1000-8efa-e74b3ca30917"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:11:12Z","duration":4,"status":"PASSED"},{"id":"EID6ee797f4-0175-1000-2e0b-354a729e078c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee798ae-0175-1000-d704-572528095681","parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798ae-0175-1000-5231-82b37a892b38","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:11:13Z","duration":12,"status":"FAILED"},{"id":"EID6ee798ba-0175-1000-17f2-f7b1fe551109","parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798ba-0175-1000-84b7-35daa9ead3a1","parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798ba-0175-1000-72f6-5dda46af5b9d","parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798ba-0175-1000-7432-649ff27377e7","parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798ba-0175-1000-2e89-add67d93cf45","parent":{"ref":"EID6ee797f4-0175-1000-2e0b-354a729e078c"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1213b7f5-6f50-4557-9385-0a539b62880e"},{"ref":"EID100a5316-e0f7-4941-8e19-78ba92e89671"},{"ref":"EIDace96de9-ed6a-497a-b2ba-07d31b0d9644"}]},"parent":{"ref":"EID6ee79722-0175-1000-8efa-e74b3ca30917"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:11:12Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:11:12Z","duration":408,"status":"FAILED"},{"id":"EID6ee798ba-0175-1000-0cbc-963c4f2eb4f2","testStepResults":{"TestStepResult":[{"id":"EID6ee798ba-0175-1000-4e17-2532c9124c43","parent":{"ref":"EID6ee798ba-0175-1000-0cbc-963c4f2eb4f2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee798ba-0175-1000-34d6-14c90a399aa2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79951-0175-1000-4de3-b1fa3318ac66","parent":{"ref":"EID6ee798ba-0175-1000-34d6-14c90a399aa2"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79951-0175-1000-126e-53067574184b","parent":{"ref":"EID6ee798ba-0175-1000-34d6-14c90a399aa2"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79951-0175-1000-c0fa-580f93f4c69f","parent":{"ref":"EID6ee798ba-0175-1000-34d6-14c90a399aa2"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79951-0175-1000-57e6-6a5a95783c60","parent":{"ref":"EID6ee798ba-0175-1000-34d6-14c90a399aa2"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID430cf9a4-1fc9-4205-b0bb-65d92b6d95a2"},{"ref":"EIDfa4473b2-a775-429b-9deb-faf20e4de5f6"},{"ref":"EID6e6170c6-097e-4fa5-8702-c1610ab54c4a"}]},"parent":{"ref":"EID6ee798ba-0175-1000-0cbc-963c4f2eb4f2"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:11:13Z","duration":46,"status":"PASSED"},{"id":"EID6ee79951-0175-1000-119e-08decdba97d4","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee79969-0175-1000-bb3d-06f7c7852546","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79a4e-0175-1000-3d8f-cdf343276a52","parent":{"ref":"EID6ee79969-0175-1000-bb3d-06f7c7852546"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79a4e-0175-1000-970b-d8ce24b3206d","parent":{"ref":"EID6ee79969-0175-1000-bb3d-06f7c7852546"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79a4e-0175-1000-a674-4a1e2d4c85da","parent":{"ref":"EID6ee79969-0175-1000-bb3d-06f7c7852546"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3b2d17e6-9ac4-40d1-9efb-9c1025dd9be7"},{"ref":"EID20986e2a-1188-4718-b2b3-852ccc1f364a"},{"ref":"EID0e953184-d5b4-4286-b11d-699369b06b13"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:11:13Z","duration":148,"status":"PASSED"},{"id":"EID6ee79a5d-0175-1000-0394-7376e9932cdb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79b2a-0175-1000-76dc-931224da8784","parent":{"ref":"EID6ee79a5d-0175-1000-0394-7376e9932cdb"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:11:13Z","duration":1,"status":"PASSED"},{"id":"EID6ee79b2b-0175-1000-7304-c55bfd6227ef","parent":{"ref":"EID6ee79a5d-0175-1000-0394-7376e9932cdb"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79b2b-0175-1000-f6cf-774d3399ef6e","parent":{"ref":"EID6ee79a5d-0175-1000-0394-7376e9932cdb"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID30d25151-2813-4ccf-8bc6-855ff2af3fb5"},{"ref":"EID828490f7-74ef-4e59-a900-ee6889bff2c3"},{"ref":"EIDcbab8340-a25d-4456-a123-6cefdf237584"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:11:13Z","duration":152,"status":"PASSED"},{"id":"EID6ee79b2c-0175-1000-3218-d4fc93f13007","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79b83-0175-1000-0c5c-7be8f5354ba7","parent":{"ref":"EID6ee79b2c-0175-1000-3218-d4fc93f13007"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79b83-0175-1000-00c7-a53b1d49f20a","parent":{"ref":"EID6ee79b2c-0175-1000-3218-d4fc93f13007"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79b83-0175-1000-62c3-03771fdefe3b","parent":{"ref":"EID6ee79b2c-0175-1000-3218-d4fc93f13007"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdda596d4-7050-4f07-aee3-6a40e1bb6642"},{"ref":"EIDa4537683-d7c8-43f4-a209-a2d8e682b52b"},{"ref":"EIDf1414747-bbdc-4c4c-bc2b-08f9f20086f9"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:11:13Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6ee798ba-0175-1000-0cbc-963c4f2eb4f2"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:11:13Z","duration":563,"status":"PASSED"},{"id":"EID6ee79b84-0175-1000-d2ae-f519db993b6d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79be2-0175-1000-d40e-d13637a3a4f4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79b84-0175-1000-d2ae-f519db993b6d"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:11:13Z","duration":11,"status":"FAILED"},{"id":"EID6ee79bed-0175-1000-9772-c906c157724a","parent":{"ref":"EID6ee79b84-0175-1000-d2ae-f519db993b6d"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee79bed-0175-1000-50d9-816d4c39ea4b","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee79b84-0175-1000-d2ae-f519db993b6d"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"FAILED"},{"id":"EID6ee79bed-0175-1000-36d4-5619b4d5d78d","parent":{"ref":"EID6ee79b84-0175-1000-d2ae-f519db993b6d"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:11:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3626bdbf-8a52-446e-9623-5ede3c28825f"},{"ref":"EIDa131ffa8-b49e-42f2-b4df-915d3e3997c6"},{"ref":"EID3a31eaad-97f5-4f0c-bc7b-bbbb4281be05"}]},"parent":{"ref":"EID6ee798ba-0175-1000-0cbc-963c4f2eb4f2"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:11:13Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:11:13Z","duration":820,"status":"FAILED"},{"id":"EID6ee79bee-0175-1000-e5b7-33cd5771ec16","testStepResults":{"TestStepResult":{"id":"EID6ee79bee-0175-1000-e9db-ad81cdb09040","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee79c6c-0175-1000-fc74-552e57fcbc5a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee79bee-0175-1000-e9db-ad81cdb09040"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:11:14Z","duration":11,"status":"FAILED"},{"id":"EID6ee79c77-0175-1000-6a8f-74ecab5b9bd3","parent":{"ref":"EID6ee79bee-0175-1000-e9db-ad81cdb09040"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee79c77-0175-1000-e4ad-13dff25409f0","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee79bee-0175-1000-e9db-ad81cdb09040"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:11:14Z","duration":1,"status":"FAILED"},{"id":"EID6ee79c78-0175-1000-8413-4a06552bcb54","parent":{"ref":"EID6ee79bee-0175-1000-e9db-ad81cdb09040"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID681f2f2b-96e2-4847-a19c-6cf53cc2a44f"},{"ref":"EID04adabd0-fc2c-4951-8ff0-0464c24908b5"},{"ref":"EID9bde00ea-988f-4971-91a6-f91438d87231"}]},"parent":{"ref":"EID6ee79bee-0175-1000-e5b7-33cd5771ec16"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:11:13Z","duration":39,"status":"FAILED"}},"parent":{"ref":"EID6ee79055-0175-1000-9f3d-d83387fbb5bc"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:11:13Z","duration":138,"status":"FAILED"}]},"parent":{"ref":"EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:11:10Z","duration":3107,"status":"FAILED"},{"id":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4","testCaseResults":{"TestCaseResult":[{"id":"EID6ee79c78-0175-1000-624a-5a3f179b77dc","testStepResults":{"TestStepResult":{"id":"EID6ee79c78-0175-1000-c770-aedfb3346400","parent":{"ref":"EID6ee79c78-0175-1000-624a-5a3f179b77dc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee79c78-0175-1000-63a5-32cffd7fac4c","testStepResults":{"TestStepResult":{"id":"EID6ee79c78-0175-1000-23e8-bca1252437a3","parent":{"ref":"EID6ee79c78-0175-1000-63a5-32cffd7fac4c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee79c78-0175-1000-04ae-0cfe6df9b639","testStepResults":{"TestStepResult":{"id":"EID6ee79c78-0175-1000-7fc7-3421e8db35d6","parent":{"ref":"EID6ee79c78-0175-1000-04ae-0cfe6df9b639"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee79c79-0175-1000-4c57-1a9fa43c5224","testStepResults":{"TestStepResult":{"id":"EID6ee79c79-0175-1000-7b36-5d1d4a893ba0","parent":{"ref":"EID6ee79c79-0175-1000-4c57-1a9fa43c5224"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee79c79-0175-1000-8e42-96dd93fae6ee","testStepResults":{"TestStepResult":{"id":"EID6ee79c79-0175-1000-c789-9d5c2683bf99","parent":{"ref":"EID6ee79c79-0175-1000-8e42-96dd93fae6ee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee79c79-0175-1000-0d74-9f3c7fcc848a","testStepResults":{"TestStepResult":{"id":"EID6ee79c79-0175-1000-0629-a35a895351bc","parent":{"ref":"EID6ee79c79-0175-1000-0d74-9f3c7fcc848a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:11:14Z","duration":9,"status":"SKIPPED"},{"id":"EID6ee79c82-0175-1000-f25b-18d6253399f4","testStepResults":{"TestStepResult":{"id":"EID6ee79c82-0175-1000-ca46-172bd778c481","parent":{"ref":"EID6ee79c82-0175-1000-f25b-18d6253399f4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:11:14Z","duration":433,"status":"SKIPPED"}},"parent":{"ref":"EID6ee79c78-0175-1000-41a7-58cdf18f8ce4"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:11:14Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:11:14Z","duration":11,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EID64842a08-be4c-417d-bdee-8d4c8903bb87","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID2ee16628-107f-4267-bbfb-f01d0728aa84","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6d773349-7a18-4611-8037-a9cd46c04bec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0bccb009-ea09-44a2-b321-376e6145ff45","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb0ac13a0-c932-48c5-8405-b7628b09cc5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID4b0b4375-6a2b-421f-8587-048b3626ec5c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID4b0b4375-6a2b-421f-8587-048b3626ec5c"}},{"type":"GetParameter","id":"EID575aa18f-8568-4dc3-8e41-fc6000121af1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb848d782-c1a0-473e-874a-11610740cd25","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDb848d782-c1a0-473e-874a-11610740cd25"}},{"type":"ServiceEndpoint","id":"EID8da46067-366a-41cf-be06-7445b21bd051","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1a041037-b248-4a44-8bd9-ef875abc9b69","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID1a041037-b248-4a44-8bd9-ef875abc9b69"}},{"type":"GetParameter","id":"EID0e953184-d5b4-4286-b11d-699369b06b13","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID3e68506b-5b22-461d-a40f-58d2c8869d3a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID3e68506b-5b22-461d-a40f-58d2c8869d3a"}},{"type":"ServiceEndpoint","id":"EID121386b8-9490-47c9-91b0-897bea61aa49","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3b2d17e6-9ac4-40d1-9efb-9c1025dd9be7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDc4285402-ae97-459f-ba5e-87db953f9954","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDc4285402-ae97-459f-ba5e-87db953f9954"}},{"type":"GetParameter","id":"EID894ff010-a9c6-4143-8fb9-0d324d4670e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0c7c2c19-c3f3-4526-8d88-1c7ffe2230bd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID0c7c2c19-c3f3-4526-8d88-1c7ffe2230bd"}},{"type":"ServiceEndpoint","id":"EID681f2f2b-96e2-4847-a19c-6cf53cc2a44f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID357787a8-4b58-4027-871d-58d383d07df7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID51fcc14a-557a-46bd-97c4-6d7fdf3686ed","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID51fcc14a-557a-46bd-97c4-6d7fdf3686ed"}},{"type":"Message","id":"EID5bdfeeae-6afa-4d40-a1df-988246b102c7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID5bdfeeae-6afa-4d40-a1df-988246b102c7"}},{"type":"Message","id":"EIDc8f5869d-4ab8-4119-ab85-d25e282d31dc","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDc8f5869d-4ab8-4119-ab85-d25e282d31dc"}},{"type":"ServiceEndpoint","id":"EIDf4688ffb-9e70-47a0-94df-d6ba17eee167","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID27d9f4a6-e51c-455b-8d00-c92c5ae0329e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID27d9f4a6-e51c-455b-8d00-c92c5ae0329e"}},{"type":"Message","id":"EID0f0f2cc6-ae66-4184-a878-3b654bd256b5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID0f0f2cc6-ae66-4184-a878-3b654bd256b5"}},{"type":"ServiceEndpoint","id":"EIDe4054650-6e71-4772-97e0-cccea7d59371","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID224dbd22-15d1-442e-96c6-913c7229fba7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID224dbd22-15d1-442e-96c6-913c7229fba7"}},{"type":"ServiceEndpoint","id":"EIDef4538fb-9185-44e5-b481-83e8a7a50872","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID8e2ac076-0492-4d45-a346-e8a84f0ce15c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDe50e3435-4f7e-4265-a34a-feb761d0017b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDe50e3435-4f7e-4265-a34a-feb761d0017b"}},{"type":"ServiceResponse","id":"EID7f269135-3c7d-4e4a-8664-6a312150a2e7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID7f269135-3c7d-4e4a-8664-6a312150a2e7"}},{"type":"GetParameter","id":"EIDad8dcf68-d9bc-4d0d-afa5-b3371ae9face","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf0c23879-079a-4ed7-804b-05fde5dc5dc0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID47acf478-8a16-472b-9fd8-804ba445d0ea","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID47acf478-8a16-472b-9fd8-804ba445d0ea"}},{"type":"ServiceResponse","id":"EID7bd1e540-14ae-4b24-8908-77d915b40720","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID7bd1e540-14ae-4b24-8908-77d915b40720"}},{"type":"ServiceResponse","id":"EID986c71cf-6a5b-4a6c-ae7d-37008f91f649","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID986c71cf-6a5b-4a6c-ae7d-37008f91f649"}},{"type":"GetParameter","id":"EID338385d6-8405-44b4-aecc-516d2fcda94f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID995795cd-27d6-4e14-b7ea-29c75dd7ef03","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9f43dc25-13b8-4b0a-bea2-25c82209382c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID11f5ae66-5621-4f96-bf25-589a81f0c6c1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID11f5ae66-5621-4f96-bf25-589a81f0c6c1"}},{"type":"Message","id":"EID832e2e2e-f4bc-403b-ab28-9d2897650b50","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID832e2e2e-f4bc-403b-ab28-9d2897650b50"}},{"type":"ServiceEndpoint","id":"EIDc57c7434-84db-41a8-b9f0-fa118517d802","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID71dc9759-ed86-46b5-ba06-f14a358b5a8c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID71dc9759-ed86-46b5-ba06-f14a358b5a8c"}},{"type":"ServiceEndpoint","id":"EID220ce76d-cd81-4fec-b0ca-24969e887530","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDace96de9-ed6a-497a-b2ba-07d31b0d9644","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID93dade34-377e-4d28-b0c8-6735fcfd3b07","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID10031700-1beb-4610-9831-e02536841617","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfa8823bf-6e37-4a4e-86ea-d904d02a36c2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID3a31eaad-97f5-4f0c-bc7b-bbbb4281be05","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9c4f008c-4684-426b-a7e8-07219b365f6e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID7609b735-31c3-4e71-9e19-6093ed0951e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID98f627aa-9866-4314-aa60-402aa59e575b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID98f627aa-9866-4314-aa60-402aa59e575b"}},{"type":"ServiceEndpoint","id":"EID138f1ea9-1f9b-4c3a-a85d-c3f52e924d89","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa1d62560-c619-4045-9dc3-7e2b0dea6016","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID6fd9b1c8-810d-403a-948e-1c5ac0739da9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID6fd9b1c8-810d-403a-948e-1c5ac0739da9"}},{"type":"GetParameter","id":"EID8c77130c-d6f3-40c7-a2e3-4293357d20be","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID7be47814-aa2f-4760-b9ef-bf4b073b703d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID7be47814-aa2f-4760-b9ef-bf4b073b703d"}},{"type":"ServiceResponse","id":"EIDc93618ab-71fa-4c79-a829-a7abe5e12886","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDc93618ab-71fa-4c79-a829-a7abe5e12886"}},{"type":"Message","id":"EIDdf97baa4-0633-4803-a1a1-cd4d10636051","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDdf97baa4-0633-4803-a1a1-cd4d10636051"}},{"type":"Error","id":"EID987c26ef-ab51-4bcf-9e71-94c66588fb26","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID987c26ef-ab51-4bcf-9e71-94c66588fb26"}},{"type":"ServiceResponse","id":"EID325e9009-8120-4c51-b7d6-b1ff5bd34af5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID325e9009-8120-4c51-b7d6-b1ff5bd34af5"}},{"type":"ServiceResponse","id":"EIDbae5b3aa-547d-4eaf-bfdf-cdd41d3f35cb","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDbae5b3aa-547d-4eaf-bfdf-cdd41d3f35cb"}},{"type":"Message","id":"EID05bba0ba-77ac-4410-8af3-0b4406c17b2a","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID05bba0ba-77ac-4410-8af3-0b4406c17b2a"}},{"type":"Message","id":"EIDbccaf07f-73f2-4f2f-b5d3-0111459bfd74","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDbccaf07f-73f2-4f2f-b5d3-0111459bfd74"}},{"type":"GetParameter","id":"EIDb331ffdf-c42c-4d97-a023-06ed6bc1f678","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID51a80542-2502-4704-8540-11d8b2147536","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID51a80542-2502-4704-8540-11d8b2147536"}},{"type":"GetParameter","id":"EIDcbab8340-a25d-4456-a123-6cefdf237584","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"LogFile","id":"EID8f82c0a3-26d8-44f1-bdee-08d30e84aeb7","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID8f82c0a3-26d8-44f1-bdee-08d30e84aeb7"}},{"type":"ServiceResponse","id":"EIDfb9682f6-10d5-4a1c-80d1-3980652f2cb5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDfb9682f6-10d5-4a1c-80d1-3980652f2cb5"}},{"type":"ServiceResponse","id":"EIDd599106a-a513-4d87-b3f6-d9315b1bbddf","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDd599106a-a513-4d87-b3f6-d9315b1bbddf"}},{"type":"Error","id":"EID28f58983-8ba9-48ec-a4e0-174eedcbc0b2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID28f58983-8ba9-48ec-a4e0-174eedcbc0b2"}},{"type":"ServiceResponse","id":"EIDc5b90895-6cf2-40e2-8174-aade1cc03a52","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDc5b90895-6cf2-40e2-8174-aade1cc03a52"}},{"type":"ServiceResponse","id":"EID19701895-1301-46f2-bac0-487e1af35ecf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID19701895-1301-46f2-bac0-487e1af35ecf"}},{"type":"GetParameter","id":"EIDf1414747-bbdc-4c4c-bc2b-08f9f20086f9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID44215be6-aeec-4499-8b7d-66830167ec8c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID44215be6-aeec-4499-8b7d-66830167ec8c"}},{"type":"GetParameter","id":"EID68ce262a-2dc3-4c2a-8015-08cdf66ea97f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID9196c5fc-984e-4aa9-80e8-c58f052432c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDce2c3ed9-8733-4247-a225-5ea2fe03f41c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDb5cd8d9a-3007-46b9-bea7-279ca7a0a7cb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDb5cd8d9a-3007-46b9-bea7-279ca7a0a7cb"}},{"type":"Message","id":"EID0936e062-b377-4bd2-bdab-5937ef10d39f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID0936e062-b377-4bd2-bdab-5937ef10d39f"}},{"type":"Message","id":"EIDf5085727-4b62-43ad-88cb-8477625bcadf","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDf5085727-4b62-43ad-88cb-8477625bcadf"}},{"type":"ServiceResponse","id":"EIDc5b9c20a-0d2a-453e-be59-f9ee60d99bf6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDc5b9c20a-0d2a-453e-be59-f9ee60d99bf6"}},{"type":"ServiceEndpoint","id":"EID80b0e27d-c6ec-457f-a8d3-f825a7eb1756","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID80bf2117-0bf0-4707-875b-c0fce5441406","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID80bf2117-0bf0-4707-875b-c0fce5441406"}},{"type":"GetParameter","id":"EIDc97642f0-eab1-4d06-b20c-ac70c2b6d25d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID8b3fe911-4c14-4cc9-ad50-cc0bc3355f0c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID8b3fe911-4c14-4cc9-ad50-cc0bc3355f0c"}},{"type":"Error","id":"EIDe66b934a-1f60-4885-bcdd-feea9c014ff9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDe66b934a-1f60-4885-bcdd-feea9c014ff9"}},{"type":"Message","id":"EID087d549a-1e87-46e1-bcd0-d6ea416f441f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID087d549a-1e87-46e1-bcd0-d6ea416f441f"}},{"type":"Error","id":"EID17b4ff80-2c82-4d84-90fa-fddba345fe18","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID17b4ff80-2c82-4d84-90fa-fddba345fe18"}},{"type":"ServiceEndpoint","id":"EIDc832ea64-bb25-4478-b1af-c3b4597df39e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7ab42b43-a24b-4e31-b9dc-ddb0f5bd60d4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID17361b0f-4953-4979-afbe-cfb00ebc0ee0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID17361b0f-4953-4979-afbe-cfb00ebc0ee0"}},{"type":"ServiceEndpoint","id":"EIDdda596d4-7050-4f07-aee3-6a40e1bb6642","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID1213b7f5-6f50-4557-9385-0a539b62880e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID629a19ec-1a6a-490e-9213-498605c3768a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa693a35c-9eea-4179-aa6a-da62e7afccae","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID87f6632d-f630-4ac6-8116-ee435167eb39","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID3626bdbf-8a52-446e-9623-5ede3c28825f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID1055a701-0953-4c68-9b89-282ee88075e7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID1055a701-0953-4c68-9b89-282ee88075e7"}},{"type":"GetParameter","id":"EID6b07ba84-0262-4046-bedc-6be31d03c200","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDb153fcf6-9ad7-4015-a255-c07d4819abef","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDb153fcf6-9ad7-4015-a255-c07d4819abef"}},{"type":"GetParameter","id":"EID9bde00ea-988f-4971-91a6-f91438d87231","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDbc6597c5-dbcb-467d-93ff-e79c53d3fdde","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDbc6597c5-dbcb-467d-93ff-e79c53d3fdde"}},{"type":"ServiceEndpoint","id":"EID8cf43339-265e-4293-a70d-c2d04e1fb27d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID828490f7-74ef-4e59-a900-ee6889bff2c3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID828490f7-74ef-4e59-a900-ee6889bff2c3"}},{"type":"Message","id":"EID472f7165-30ad-400f-b024-54966c2a2739","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID472f7165-30ad-400f-b024-54966c2a2739"}},{"type":"GetParameter","id":"EID2286f611-50af-4b4f-9918-bc24ab9cc1d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID37eddf5d-9583-47a2-99a5-b41436700674","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID37eddf5d-9583-47a2-99a5-b41436700674"}},{"type":"ServiceResponse","id":"EIDa131ffa8-b49e-42f2-b4df-915d3e3997c6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDa131ffa8-b49e-42f2-b4df-915d3e3997c6"}},{"type":"ServiceEndpoint","id":"EIDc8e889ce-77ca-4993-baed-ae35c688ec68","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID2ebcb396-85bf-4f02-b3af-7287f3ddcf63","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID2ebcb396-85bf-4f02-b3af-7287f3ddcf63"}},{"type":"ServiceEndpoint","id":"EID430cf9a4-1fc9-4205-b0bb-65d92b6d95a2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDf15a988e-44e0-42ed-87de-dd749d00b9d7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8ffc0f30-87de-4800-adf0-f23ad2540dc6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID8ffc0f30-87de-4800-adf0-f23ad2540dc6"}},{"type":"ServiceResponse","id":"EIDd8ef0c5f-8fe9-4af0-9df8-736490d43216","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDd8ef0c5f-8fe9-4af0-9df8-736490d43216"}},{"type":"ServiceEndpoint","id":"EIDa2dacb87-194f-44b6-8731-c09c5abb2c32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDfa4473b2-a775-429b-9deb-faf20e4de5f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDfa4473b2-a775-429b-9deb-faf20e4de5f6"}},{"type":"ServiceResponse","id":"EIDa4537683-d7c8-43f4-a209-a2d8e682b52b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDa4537683-d7c8-43f4-a209-a2d8e682b52b"}},{"type":"ServiceResponse","id":"EID23ddad78-a3e2-4553-9c68-bb23d00b7f40","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID23ddad78-a3e2-4553-9c68-bb23d00b7f40"}},{"type":"ServiceEndpoint","id":"EID30d25151-2813-4ccf-8bc6-855ff2af3fb5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID5298f93e-f380-4151-b2e1-cfcb68955727","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID5298f93e-f380-4151-b2e1-cfcb68955727"}},{"type":"ServiceResponse","id":"EIDeab440dd-0cc1-46a7-88ef-04914e670c26","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDeab440dd-0cc1-46a7-88ef-04914e670c26"}},{"type":"GetParameter","id":"EID670122eb-b703-4cfe-bd50-9386296e091b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDef8def6b-af5d-4300-b718-229c1dbf1bfd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb8d6bcd2-5197-4a2c-91b1-3bd6948ac1ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDed9787b5-0024-4b70-accb-42ea47219475","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDed9787b5-0024-4b70-accb-42ea47219475"}},{"type":"ServiceResponse","id":"EID4a35759a-7fc0-4757-874b-dde6af28d74b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID4a35759a-7fc0-4757-874b-dde6af28d74b"}},{"type":"GetParameter","id":"EID22df2e52-d5a3-42a8-b61d-479835fb352a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID100a5316-e0f7-4941-8e19-78ba92e89671","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID100a5316-e0f7-4941-8e19-78ba92e89671"}},{"type":"ServiceEndpoint","id":"EID1fe770c7-0aef-4bc6-8532-4a5152515b96","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID0b17d731-ea8e-4214-98f1-17accedb16b0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID0b17d731-ea8e-4214-98f1-17accedb16b0"}},{"type":"GetParameter","id":"EID047976ec-0597-4ab2-ab18-a0dd897a4fe8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDa360e856-9131-4e4a-8076-335a17c6d2e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID84452361-0af8-42c1-9a60-617e9aaf64b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID0f5369e2-3225-4bb6-9df2-01b7492193b4","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID0f5369e2-3225-4bb6-9df2-01b7492193b4"}},{"type":"Message","id":"EIDe15f6860-5c2c-435f-ad8d-57e6cb2b9c7f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDe15f6860-5c2c-435f-ad8d-57e6cb2b9c7f"}},{"type":"ServiceEndpoint","id":"EIDa9071770-8e6a-4e29-869b-bb7580377014","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4d29838a-cb50-4ec6-9815-e542a7c97290","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID8f291dc8-9e7e-4756-8541-b497811f6f4c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDc5b243cd-c29e-4570-8775-f3871896ae8a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDc5b243cd-c29e-4570-8775-f3871896ae8a"}},{"type":"Message","id":"EIDe9f98711-9144-4014-87fd-8baa991f6636","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDe9f98711-9144-4014-87fd-8baa991f6636"}},{"type":"ServiceEndpoint","id":"EIDb2a995e8-0cd5-436c-ae7e-3e8549a01c87","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb733baad-d4ec-4b40-a4f1-84e119a8cc09","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID422b4706-2bfc-42b5-9d75-0dc80460ca65","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDaaaaac15-1b94-4d0d-943b-e8b426cdcf5f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb654603e-8c96-485a-a95f-f76a0510e064","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID59a6cbec-f842-494b-9e04-90e4b745bf1c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID59a6cbec-f842-494b-9e04-90e4b745bf1c"}},{"type":"GetParameter","id":"EID6e6170c6-097e-4fa5-8702-c1610ab54c4a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Error","id":"EIDcfb98ef2-4866-45ad-b915-b696223c2aac","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDcfb98ef2-4866-45ad-b915-b696223c2aac"}},{"type":"ServiceResponse","id":"EID20986e2a-1188-4718-b2b3-852ccc1f364a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID20986e2a-1188-4718-b2b3-852ccc1f364a"}},{"type":"ServiceResponse","id":"EIDca2924b0-9498-4b0b-893c-4b4bb949055c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDca2924b0-9498-4b0b-893c-4b4bb949055c"}},{"type":"ServiceEndpoint","id":"EID84b4735f-0919-4c04-91fc-85f2b9cfef7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID1edf87cf-21b4-4981-a24d-4c9e099a2b5f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID1edf87cf-21b4-4981-a24d-4c9e099a2b5f"}},{"type":"ServiceResponse","id":"EID04adabd0-fc2c-4951-8ff0-0464c24908b5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID04adabd0-fc2c-4951-8ff0-0464c24908b5"}},{"type":"Message","id":"EID3f7b7079-7754-4a9c-9ad2-d746a82101c6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID3f7b7079-7754-4a9c-9ad2-d746a82101c6"}},{"type":"ServiceResponse","id":"EIDef211b65-bd4a-4e1b-8356-9eace0e306af","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDef211b65-bd4a-4e1b-8356-9eace0e306af"}},{"type":"ServiceResponse","id":"EIDdbade434-0af2-4eca-8d2b-c254471940f6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDdbade434-0af2-4eca-8d2b-c254471940f6"}},{"type":"GetParameter","id":"EIDe14609bb-c2f9-4a4a-957a-6d74c258980f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID5d3ad412-9a2b-491f-9758-50121aecc5b0","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EID5d3ad412-9a2b-491f-9758-50121aecc5b0"}},{"type":"Error","id":"EIDf17c927e-dcc6-4e13-9830-d61267704698","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDf17c927e-dcc6-4e13-9830-d61267704698"}},{"type":"Message","id":"EIDecb61e93-6501-4551-8323-3d705f4830ce","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID56eb6cd2-a506-45a5-81ab-d9b2c3f92f44/Attachments/EIDecb61e93-6501-4551-8323-3d705f4830ce"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:11:01Z","duration":12223,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
11:11:26.368 [print] EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:11:26.369 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:11:26.369 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:11:26.370 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:11:26.370 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/adba38b1-7fe7-42c5-8a94-e50f696fd3ad.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:11:26.370 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/adba38b1-7fe7-42c5-8a94-e50f696fd3ad.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:11:26.370 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDadba38b1-7fe7-42c5-8a94-e50f696fd3ad/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.015
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:11:26.397 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:11:26.397 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.005
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
6.719
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:08.624 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.718
11:09:08.626 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

11:09:15.342 response time in milliseconds: 6613.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:15 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883355175","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:15.343 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
4.647
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:35.295 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.646
11:15:35.296 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS"}}}

11:15:39.942 response time in milliseconds: 4540.98
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:39 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883739766","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:39.943 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.433
* print "testing url:" + metadata.url 0.000
11:13:02.474 [print] testing url:https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.432
11:13:02.474 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:02.907 response time in milliseconds: 432.16
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:02 GMT
1 < ETag: "1867c-5af58a654ab6f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.396
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.395
11:13:02.914 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:03.309 response time in milliseconds: 394.46
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:03 GMT
1 < ETag: "1867c-5af58a654ab6f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:13:03.312 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.081
* print "testing url:" + metadata.url 0.000
11:06:59.929 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 1.081
11:06:59.929 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:01.010 response time in milliseconds: 1080.58
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:07:00 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642234A97130556
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.683
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.683
11:07:01.027 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:01.710 response time in milliseconds: 682.08
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:07:01 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642234AD2AEA1BD
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:07:01.710 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.407
* print "testing url:" + metadata.url 0.000
11:06:09.127 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.407
11:06:09.128 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:09.532 response time in milliseconds: 403.28
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:06:09 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.410
Given url metadata.url 0.000
When method HEAD 0.409
11:06:09.542 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:09.950 response time in milliseconds: 407.01
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:06:09 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
30.334
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:32.803 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.187
11:14:32.805 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:14:39.983 response time in milliseconds: 6425.55
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:39 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:37 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f.json","testRuns":{"TestRun":{"id":"EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:36.158Z","testTasks":{"TestTask":{"id":"EID811abd9f-c29f-4d2c-8ab9-9e45e8efcd75","parent":{"ref":"EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID39d76d6b-2cc3-434a-830c-0ecb85f80733"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID39d76d6b-2cc3-434a-830c-0ecb85f80733","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:33.248Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:35.098Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:39.992 [print] EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:39.992 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:39.992 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:39.992 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:39.992 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:39.993 [print] statuspath TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f
* print 'progresspath ', progresspath 0.000
11:14:39.994 [print] progresspath  TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/progress
Given path progresspath 0.000
When method GET 0.523
11:14:39.996 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:40.517 response time in milliseconds: 520.71
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:40 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:14:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:36 UTC 2020)","28.10.2020 11:14:36 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:36 - Preparing 1 Test Task:","28.10.2020 11:14:36 -  TestTask 1 (811abd9f-c29f-4d2c-8ab9-9e45e8efcd75)","28.10.2020 11:14:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:36 -  with parameters: ","28.10.2020 11:14:36 - etf.testcases = *","28.10.2020 11:14:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:36 - Setting state to CREATED","28.10.2020 11:14:36 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:37 - Starting TestRun.a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f at 2020-10-28T11:14:39Z","28.10.2020 11:14:39 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:39 - Project Properties: ","28.10.2020 11:14:39 - etf.testcases - * ","28.10.2020 11:14:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:39 - username -  ","28.10.2020 11:14:39 - authUser -  ","28.10.2020 11:14:39 - authMethod - basic ","28.10.2020 11:14:39 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:14:40.518 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:14:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:36 UTC 2020)",
    "28.10.2020 11:14:36 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:14:36 - Preparing 1 Test Task:",
    "28.10.2020 11:14:36 -  TestTask 1 (811abd9f-c29f-4d2c-8ab9-9e45e8efcd75)",
    "28.10.2020 11:14:36 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:14:36 -  with parameters: ",
    "28.10.2020 11:14:36 - etf.testcases = *",
    "28.10.2020 11:14:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:14:36 - Setting state to CREATED",
    "28.10.2020 11:14:36 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:37 - Starting TestRun.a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f at 2020-10-28T11:14:39Z",
    "28.10.2020 11:14:39 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:39 - Project Properties: ",
    "28.10.2020 11:14:39 - etf.testcases - * ",
    "28.10.2020 11:14:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:14:39 - username -  ",
    "28.10.2020 11:14:39 - authUser -  ",
    "28.10.2020 11:14:39 - authMethod - basic ",
    "28.10.2020 11:14:39 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.584
11:14:40.518 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:41.026 response time in milliseconds: 506.82
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:40 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:36 UTC 2020)","28.10.2020 11:14:36 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:36 - Preparing 1 Test Task:","28.10.2020 11:14:36 -  TestTask 1 (811abd9f-c29f-4d2c-8ab9-9e45e8efcd75)","28.10.2020 11:14:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:36 -  with parameters: ","28.10.2020 11:14:36 - etf.testcases = *","28.10.2020 11:14:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:36 - Setting state to CREATED","28.10.2020 11:14:36 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:37 - Starting TestRun.a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f at 2020-10-28T11:14:39Z","28.10.2020 11:14:39 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:39 - Project Properties: ","28.10.2020 11:14:39 - etf.testcases - * ","28.10.2020 11:14:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:39 - username -  ","28.10.2020 11:14:39 - authUser -  ","28.10.2020 11:14:39 - authMethod - basic ","28.10.2020 11:14:39 - TestRunTask initialized"]}

11:14:41.026 retry condition not satisfied: response.val == response.max
11:14:41.026 sleeping before retry #1
11:14:46.026 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:46.552 response time in milliseconds: 524.82
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:46 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["28.10.2020 11:14:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:36 UTC 2020)","28.10.2020 11:14:36 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:36 - Preparing 1 Test Task:","28.10.2020 11:14:36 -  TestTask 1 (811abd9f-c29f-4d2c-8ab9-9e45e8efcd75)","28.10.2020 11:14:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:36 -  with parameters: ","28.10.2020 11:14:36 - etf.testcases = *","28.10.2020 11:14:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:36 - Setting state to CREATED","28.10.2020 11:14:36 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:37 - Starting TestRun.a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f at 2020-10-28T11:14:39Z","28.10.2020 11:14:39 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:39 - Project Properties: ","28.10.2020 11:14:39 - etf.testcases - * ","28.10.2020 11:14:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:39 - username -  ","28.10.2020 11:14:39 - authUser -  ","28.10.2020 11:14:39 - authMethod - basic ","28.10.2020 11:14:39 - TestRunTask initialized","28.10.2020 11:14:42 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:14:42 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:44 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

11:14:46.552 retry condition not satisfied: response.val == response.max
11:14:46.552 sleeping before retry #2
11:14:51.553 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:52.094 response time in milliseconds: 535.09
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:14:52 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:14:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:36 UTC 2020)","28.10.2020 11:14:36 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:36 - Preparing 1 Test Task:","28.10.2020 11:14:36 -  TestTask 1 (811abd9f-c29f-4d2c-8ab9-9e45e8efcd75)","28.10.2020 11:14:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:36 -  with parameters: ","28.10.2020 11:14:36 - etf.testcases = *","28.10.2020 11:14:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:36 - Setting state to CREATED","28.10.2020 11:14:36 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:37 - Starting TestRun.a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f at 2020-10-28T11:14:39Z","28.10.2020 11:14:39 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:39 - Project Properties: ","28.10.2020 11:14:39 - etf.testcases - * ","28.10.2020 11:14:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:39 - username -  ","28.10.2020 11:14:39 - authUser -  ","28.10.2020 11:14:39 - authMethod - basic ","28.10.2020 11:14:39 - TestRunTask initialized","28.10.2020 11:14:42 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:14:42 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:44 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:46 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:14:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:48 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:14:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:48 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:14:48 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:14:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:48 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:14:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:50 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:14:50 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:14:52.095 retry condition not satisfied: response.val == response.max
11:14:52.095 sleeping before retry #3
11:14:57.096 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:59.102 response time in milliseconds: 2006.19
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:14:59 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:14:59.102 retry condition satisfied
* print response 0.000
11:14:59.103 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.028
11:14:59.103 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:03.117 response time in milliseconds: 3057.40
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:15:02 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:14:54 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f.json","testRuns":{"TestRun":{"id":"EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:36.158Z","testTasks":{"TestTask":{"id":"EID811abd9f-c29f-4d2c-8ab9-9e45e8efcd75","parent":{"ref":"EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID39d76d6b-2cc3-434a-830c-0ecb85f80733"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID39d76d6b-2cc3-434a-830c-0ecb85f80733","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:33.248Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:35.098Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237","testObject":{"ref":"EID39d76d6b-2cc3-434a-830c-0ecb85f80733"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eeabdee-0175-1000-2609-8046dcec0972","testCaseResults":{"TestCaseResult":[{"id":"EID6eeabdee-0175-1000-0ab0-49cf2a36d124","testStepResults":{"TestStepResult":[{"id":"EID6eeabdef-0175-1000-df8c-b6af26639767","parent":{"ref":"EID6eeabdee-0175-1000-0ab0-49cf2a36d124"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:14:39Z","duration":18,"status":"PASSED"},{"id":"EID6eeabe02-0175-1000-e3d3-268b096be247","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeabecc-0175-1000-90c0-e0c4d370202e","parent":{"ref":"EID6eeabe02-0175-1000-e3d3-268b096be247"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeabecc-0175-1000-2977-3dec49d322cf","parent":{"ref":"EID6eeabe02-0175-1000-e3d3-268b096be247"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeabecc-0175-1000-71c9-c97f70a8e7b4","parent":{"ref":"EID6eeabe02-0175-1000-e3d3-268b096be247"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeabecd-0175-1000-6347-e3daf0b82e81","parent":{"ref":"EID6eeabe02-0175-1000-e3d3-268b096be247"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7df0e65e-4906-421a-9e56-90585596c117"},{"ref":"EID4b1707ae-cf3a-4d46-9b0b-f6d245dd86e6"},{"ref":"EID9ee73b21-01f5-43b7-8a37-87c788a41abf"}]},"parent":{"ref":"EID6eeabdee-0175-1000-0ab0-49cf2a36d124"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:14:39Z","duration":69,"status":"PASSED"}]},"parent":{"ref":"EID6eeabdee-0175-1000-2609-8046dcec0972"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:14:39Z","duration":232,"status":"PASSED"},{"id":"EID6eeabede-0175-1000-8d8f-65531e1bfd6e","testStepResults":{"TestStepResult":{"id":"EID6eeabede-0175-1000-a67c-7ec1432b6e84","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeabf69-0175-1000-b05e-610ced6d849d","parent":{"ref":"EID6eeabede-0175-1000-a67c-7ec1432b6e84"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeabf69-0175-1000-5ac7-648083296544","parent":{"ref":"EID6eeabede-0175-1000-a67c-7ec1432b6e84"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeabf69-0175-1000-ee02-49e2c56cbcd4","parent":{"ref":"EID6eeabede-0175-1000-a67c-7ec1432b6e84"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID567b9fe2-aff0-46bc-a455-8198f8b268cf"},{"ref":"EIDf8a49b49-6b4f-456b-9a83-9678ac0fc097"},{"ref":"EIDebee8840-6fcd-41d4-a1b8-52cfe89d8629"}]},"parent":{"ref":"EID6eeabede-0175-1000-8d8f-65531e1bfd6e"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:14:39Z","duration":41,"status":"PASSED"}},"parent":{"ref":"EID6eeabdee-0175-1000-2609-8046dcec0972"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:14:39Z","duration":139,"status":"PASSED"}]},"parent":{"ref":"EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:14:39Z","duration":379,"status":"PASSED"},{"id":"EID6eeabf69-0175-1000-5821-12a81b905498","testCaseResults":{"TestCaseResult":[{"id":"EID6eeabf69-0175-1000-6dd1-a2c59fd28eb7","testStepResults":{"TestStepResult":[{"id":"EID6eeabf73-0175-1000-2012-35e2fe47a226","parent":{"ref":"EID6eeabf69-0175-1000-6dd1-a2c59fd28eb7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:14:39Z","duration":40,"status":"PASSED"},{"id":"EID6eeabf73-0175-1000-29d5-7af9a6d5a104","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeac05c-0175-1000-5852-34b0404e9e06","parent":{"ref":"EID6eeabf73-0175-1000-29d5-7af9a6d5a104"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeac05c-0175-1000-febb-59e7987c39d7","parent":{"ref":"EID6eeabf73-0175-1000-29d5-7af9a6d5a104"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeac05c-0175-1000-47b7-3158529e8fa5","parent":{"ref":"EID6eeabf73-0175-1000-29d5-7af9a6d5a104"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeac05c-0175-1000-95d9-943215547029","parent":{"ref":"EID6eeabf73-0175-1000-29d5-7af9a6d5a104"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"},{"id":"EID6eeac05c-0175-1000-f4cf-b71bdf262ceb","parent":{"ref":"EID6eeabf73-0175-1000-29d5-7af9a6d5a104"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:14:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5c65806b-ea5f-4a48-bd70-08ff1c7b959b"},{"ref":"EID75f6b1a5-ec6b-4c86-9d45-69bf6b1ce3da"},{"ref":"EID086ebde0-b72d-4db5-9aab-02b6060f1931"}]},"parent":{"ref":"EID6eeabf69-0175-1000-6dd1-a2c59fd28eb7"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:14:39Z","duration":105,"status":"PASSED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:14:39Z","duration":243,"status":"PASSED"},{"id":"EID6eeac065-0175-1000-767b-5e0813bf7199","testStepResults":{"TestStepResult":[{"id":"EID6eeac065-0175-1000-264d-86adfce2dfa0","attachments":{"attachment":[{"ref":"EID8eedd8d4-888e-4d01-a9a4-23996d3b728b"},{"ref":"EIDf6ad014b-9c04-4981-bdfb-3b448ea0bd2e"}]},"parent":{"ref":"EID6eeac065-0175-1000-767b-5e0813bf7199"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:14:39Z","duration":167,"status":"PASSED"},{"id":"EID6eeac151-0175-1000-992b-2eb89084e06f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeac22a-0175-1000-1bec-35e26f7e7d0b","parent":{"ref":"EID6eeac151-0175-1000-992b-2eb89084e06f"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:14:40Z","duration":1,"status":"PASSED"},{"id":"EID6eeac22b-0175-1000-b407-498cfd2f8ddd","parent":{"ref":"EID6eeac151-0175-1000-992b-2eb89084e06f"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac22b-0175-1000-89f5-96a5341e53dc","parent":{"ref":"EID6eeac151-0175-1000-992b-2eb89084e06f"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac22b-0175-1000-bb95-7fd09d051487","parent":{"ref":"EID6eeac151-0175-1000-992b-2eb89084e06f"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9346bb43-398f-4be9-8b86-e5e072e20b71"},{"ref":"EIDef78c21c-5798-4e84-ba76-e4157746924d"},{"ref":"EID4e999d81-1110-4365-a1da-a1eb4cf0786d"}]},"parent":{"ref":"EID6eeac065-0175-1000-767b-5e0813bf7199"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:14:40Z","duration":99,"status":"PASSED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:14:39Z","duration":454,"status":"PASSED"},{"id":"EID6eeac22b-0175-1000-8d31-192d107ab44b","testStepResults":{"TestStepResult":[{"id":"EID6eeac237-0175-1000-ad48-80327e7e1744","attachments":{"attachment":[{"ref":"EID2556f834-c4a3-43fb-b8bf-11f2f241f7f6"},{"ref":"EIDf6560ae5-d3c9-40d8-be79-841d0c04395c"}]},"parent":{"ref":"EID6eeac22b-0175-1000-8d31-192d107ab44b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:14:40Z","duration":128,"status":"PASSED"},{"id":"EID6eeac2e5-0175-1000-c02a-9d71f1245680","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeac391-0175-1000-293a-474d913d2826","parent":{"ref":"EID6eeac2e5-0175-1000-c02a-9d71f1245680"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac391-0175-1000-d890-67dc024f4335","parent":{"ref":"EID6eeac2e5-0175-1000-c02a-9d71f1245680"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac391-0175-1000-fcc4-85884bde9bb7","parent":{"ref":"EID6eeac2e5-0175-1000-c02a-9d71f1245680"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac391-0175-1000-b32f-2d3cd9d12299","parent":{"ref":"EID6eeac2e5-0175-1000-c02a-9d71f1245680"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac391-0175-1000-f0d9-0e1ab9dbcc85","parent":{"ref":"EID6eeac2e5-0175-1000-c02a-9d71f1245680"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1dee11b9-7c68-442b-ac4b-91004fad2268"},{"ref":"EID048cc44c-0d25-4148-8418-9d5c027008a1"},{"ref":"EID28b9e8ad-cbef-4b22-a10e-e809ca8c9b7a"}]},"parent":{"ref":"EID6eeac22b-0175-1000-8d31-192d107ab44b"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:14:40Z","duration":43,"status":"PASSED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:14:40Z","duration":358,"status":"PASSED"},{"id":"EID6eeac39b-0175-1000-220e-6a012b7b1577","testStepResults":{"TestStepResult":[{"id":"EID6eeac39b-0175-1000-b289-a370b46092e1","attachments":{"attachment":[{"ref":"EID46e7c85b-223d-41b2-a6c1-dc73e45f9b14"},{"ref":"EID236f738a-27c0-4fdd-b415-1810a50d1913"}]},"parent":{"ref":"EID6eeac39b-0175-1000-220e-6a012b7b1577"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:14:40Z","duration":110,"status":"PASSED"},{"id":"EID6eeac440-0175-1000-499e-78a328d57c97","parent":{"ref":"EID6eeac39b-0175-1000-220e-6a012b7b1577"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6eeac440-0175-1000-d34f-b4b49199f4e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeac502-0175-1000-b30d-1b624cc65264","parent":{"ref":"EID6eeac440-0175-1000-d34f-b4b49199f4e2"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac502-0175-1000-ce99-e0a618f152b0","parent":{"ref":"EID6eeac440-0175-1000-d34f-b4b49199f4e2"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac502-0175-1000-39ec-6d344110face","parent":{"ref":"EID6eeac440-0175-1000-d34f-b4b49199f4e2"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac502-0175-1000-f42e-51ade81792fe","parent":{"ref":"EID6eeac440-0175-1000-d34f-b4b49199f4e2"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2622a71c-c7fd-4181-a6c7-136ae2900c38"},{"ref":"EID84bb4597-b2de-432b-ba55-de9bd0b913ea"},{"ref":"EIDb38699d3-f972-4878-9cf7-4fc66afe649a"}]},"parent":{"ref":"EID6eeac39b-0175-1000-220e-6a012b7b1577"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:14:40Z","duration":95,"status":"PASSED"},{"id":"EID6eeac50c-0175-1000-9da3-6dfb4128ad71","attachments":{"attachment":{"ref":"EID774cc9ef-b8ce-4e38-bbce-81aa867d2530"}},"parent":{"ref":"EID6eeac39b-0175-1000-220e-6a012b7b1577"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:14:41Z","duration":2,"status":"PASSED"},{"id":"EID6eeac52e-0175-1000-984e-473350f813d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeac5e0-0175-1000-32de-9df5b9bcddf6","parent":{"ref":"EID6eeac52e-0175-1000-984e-473350f813d8"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac5e0-0175-1000-1c78-602abbe3639e","parent":{"ref":"EID6eeac52e-0175-1000-984e-473350f813d8"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac5e0-0175-1000-19aa-5c7968f946b9","parent":{"ref":"EID6eeac52e-0175-1000-984e-473350f813d8"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac5e0-0175-1000-3b6c-7af5afbe064f","parent":{"ref":"EID6eeac52e-0175-1000-984e-473350f813d8"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac5e0-0175-1000-9147-fde056e979ac","parent":{"ref":"EID6eeac52e-0175-1000-984e-473350f813d8"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID62d8933a-d51e-493d-9c9a-3128b6038c66"},{"ref":"EIDcbf6b681-31ec-4fb1-8915-095db5f4f9dd"},{"ref":"EIDb13d69ee-1ab9-45fe-87d2-983129a2e220"}]},"parent":{"ref":"EID6eeac39b-0175-1000-220e-6a012b7b1577"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:14:41Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:14:40Z","duration":582,"status":"PASSED"},{"id":"EID6eeac61d-0175-1000-89ed-3e673bffcb0b","testStepResults":{"TestStepResult":[{"id":"EID6eeac61d-0175-1000-ce69-ccc12a0a1b7a","attachments":{"attachment":[{"ref":"EID471b940d-0aa6-49a6-8c0e-f36755968302"},{"ref":"EIDa015d101-9170-4d84-a2b4-b878a42093ed"}]},"parent":{"ref":"EID6eeac61d-0175-1000-89ed-3e673bffcb0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:14:41Z","duration":155,"status":"PASSED"},{"id":"EID6eeac6ed-0175-1000-b0e8-a022d21475d2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeac7dd-0175-1000-da91-6a5f90102cef","parent":{"ref":"EID6eeac6ed-0175-1000-b0e8-a022d21475d2"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac7dd-0175-1000-7671-fc2ddd76c191","parent":{"ref":"EID6eeac6ed-0175-1000-b0e8-a022d21475d2"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac7dd-0175-1000-ef0f-426740910696","parent":{"ref":"EID6eeac6ed-0175-1000-b0e8-a022d21475d2"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6eeac7dd-0175-1000-fe8d-91c217eafe5f","parent":{"ref":"EID6eeac6ed-0175-1000-b0e8-a022d21475d2"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:14:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1da81532-c057-4a98-8eed-ba586f1f89b4"},{"ref":"EID02fc067b-7b98-4906-a36b-148e88b859cd"},{"ref":"EID294cf2fa-5c7c-4b7e-99ec-8e5d7a71a9c6"}]},"parent":{"ref":"EID6eeac61d-0175-1000-89ed-3e673bffcb0b"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:14:41Z","duration":90,"status":"PASSED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:14:41Z","duration":448,"status":"PASSED"},{"id":"EID6eeac7e5-0175-1000-dad9-05d5fcbbeaa3","testStepResults":{"TestStepResult":[{"id":"EID6eeac7e5-0175-1000-9c76-7962b1ced003","attachments":{"attachment":[{"ref":"EIDb1dfd83d-cccd-459c-83f6-d6d79bced30b"},{"ref":"EID22e1453f-a17b-4356-8443-cf67f3dea384"}]},"parent":{"ref":"EID6eeac7e5-0175-1000-dad9-05d5fcbbeaa3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:14:41Z","duration":255,"status":"PASSED"},{"id":"EID6eeac915-0175-1000-eb58-613777005113","parent":{"ref":"EID6eeac7e5-0175-1000-dad9-05d5fcbbeaa3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6eeac915-0175-1000-4605-682eb1c7d0b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaca1c-0175-1000-94b2-62163d8a5211","parent":{"ref":"EID6eeac915-0175-1000-4605-682eb1c7d0b9"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6eeaca1c-0175-1000-fe6f-d47a33731c35","parent":{"ref":"EID6eeac915-0175-1000-4605-682eb1c7d0b9"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6eeaca1c-0175-1000-791b-3fb03d30d29b","parent":{"ref":"EID6eeac915-0175-1000-4605-682eb1c7d0b9"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6eeaca1c-0175-1000-f0fc-4f9a765406e8","parent":{"ref":"EID6eeac915-0175-1000-4605-682eb1c7d0b9"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a128579-e9fd-4e73-b010-f709d998504d"},{"ref":"EID4a6ec102-7efe-48ca-a296-3c33a62443ab"},{"ref":"EID3076e6a4-d684-424c-b89e-d09f71274964"}]},"parent":{"ref":"EID6eeac7e5-0175-1000-dad9-05d5fcbbeaa3"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:14:42Z","duration":85,"status":"PASSED"},{"id":"EID6eeaca28-0175-1000-27d1-7ae9be075765","attachments":{"attachment":{"ref":"EIDd4250ffa-172c-4f93-aa78-474f8d564925"}},"parent":{"ref":"EID6eeac7e5-0175-1000-dad9-05d5fcbbeaa3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:14:42Z","duration":2,"status":"PASSED"},{"id":"EID6eeaca35-0175-1000-20c2-28fd8d608581","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeacb90-0175-1000-e696-8983817fa1fd","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeaca35-0175-1000-20c2-28fd8d608581"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:14:42Z","duration":14,"status":"FAILED"},{"id":"EID6eeacb9e-0175-1000-8557-ae85486e08b6","parent":{"ref":"EID6eeaca35-0175-1000-20c2-28fd8d608581"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6eeacb9e-0175-1000-732a-808dfa257c2f","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6eeaca35-0175-1000-20c2-28fd8d608581"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:14:42Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3eb18a88-eae4-494a-bb45-f7c0f4b51a71"},{"ref":"EID86064597-b656-466f-8f25-4e43b5244134"},{"ref":"EIDafa49486-439b-4b7e-ae4e-cb4d43cca707"}]},"parent":{"ref":"EID6eeac7e5-0175-1000-dad9-05d5fcbbeaa3"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:14:42Z","duration":282,"status":"FAILED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:14:41Z","duration":963,"status":"FAILED"},{"id":"EID6eeacba8-0175-1000-b6b3-9e0bfba9d143","testStepResults":{"TestStepResult":[{"id":"EID6eeacba8-0175-1000-f8b3-721a20c155aa","attachments":{"attachment":[{"ref":"EID189871f8-93bf-4c5f-b91e-d07821dbc3fd"},{"ref":"EIDed9d825d-f01b-4125-9774-b0afa7bbbd2b"}]},"parent":{"ref":"EID6eeacba8-0175-1000-b6b3-9e0bfba9d143"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:14:42Z","duration":242,"status":"PASSED"},{"id":"EID6eeaccc9-0175-1000-51bb-9c48b2740032","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeace19-0175-1000-7e50-7231c85497e3","parent":{"ref":"EID6eeaccc9-0175-1000-51bb-9c48b2740032"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eeace19-0175-1000-7c42-c4d742a4e75d","parent":{"ref":"EID6eeaccc9-0175-1000-51bb-9c48b2740032"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eeace19-0175-1000-13a3-770c3c2cd439","parent":{"ref":"EID6eeaccc9-0175-1000-51bb-9c48b2740032"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eeace19-0175-1000-2fd8-a7917fb85e31","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeaccc9-0175-1000-51bb-9c48b2740032"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID48e768e1-33ff-4b59-8320-cd44933e08d3"},{"ref":"EID7c33966d-a89f-4746-8556-391b0df5a41f"},{"ref":"EID25366afa-0bbf-4e36-b5d3-0be1cf466e0b"}]},"parent":{"ref":"EID6eeacba8-0175-1000-b6b3-9e0bfba9d143"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:14:43Z","duration":124,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:14:42Z","duration":626,"status":"PASSED_MANUAL"},{"id":"EID6eeace1a-0175-1000-a51c-887b87793059","testStepResults":{"TestStepResult":{"id":"EID6eeace1a-0175-1000-97fa-472262d31eb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeacf53-0175-1000-0f83-f2a8c69fb4e3","parent":{"ref":"EID6eeace1a-0175-1000-97fa-472262d31eb4"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eeacf53-0175-1000-0f3b-ecdb89526ec8","parent":{"ref":"EID6eeace1a-0175-1000-97fa-472262d31eb4"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eeacf53-0175-1000-17e8-7002f646624d","parent":{"ref":"EID6eeace1a-0175-1000-97fa-472262d31eb4"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eeacf53-0175-1000-691b-e5c89fd699b0","parent":{"ref":"EID6eeace1a-0175-1000-97fa-472262d31eb4"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDee6dd359-48e7-4741-8514-482f729bba9d"},{"ref":"EID64f4626b-0989-45f3-b729-c50b4ec587fb"},{"ref":"EID6ecc650b-f93a-4501-acea-195a17f8c362"}]},"parent":{"ref":"EID6eeace1a-0175-1000-a51c-887b87793059"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:14:43Z","duration":114,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:14:43Z","duration":314,"status":"PASSED"},{"id":"EID6eeacf54-0175-1000-e5f1-7e73a4de3007","testStepResults":{"TestStepResult":{"id":"EID6eeacf54-0175-1000-d89b-7cfe9fbcfdd3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eead013-0175-1000-81e5-53d4e7bc59e0","parent":{"ref":"EID6eeacf54-0175-1000-d89b-7cfe9fbcfdd3"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eead013-0175-1000-17bc-c737a906b2c0","parent":{"ref":"EID6eeacf54-0175-1000-d89b-7cfe9fbcfdd3"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eead013-0175-1000-58b5-25a2ceb09fa7","parent":{"ref":"EID6eeacf54-0175-1000-d89b-7cfe9fbcfdd3"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6eead013-0175-1000-7ed9-13a176f50b72","parent":{"ref":"EID6eeacf54-0175-1000-d89b-7cfe9fbcfdd3"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:14:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID41e7d40a-91e9-4e14-84dc-a2f71e144259"},{"ref":"EID47f5ab95-5691-4ce2-81a0-e22f637ffd11"},{"ref":"EID8c5fed3a-e25a-49b4-a3ac-7e0575d5eab0"}]},"parent":{"ref":"EID6eeacf54-0175-1000-e5f1-7e73a4de3007"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:14:43Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:14:43Z","duration":191,"status":"PASSED"},{"id":"EID6eead013-0175-1000-8e59-b7f1fecd5b15","testStepResults":{"TestStepResult":{"id":"EID6eead013-0175-1000-95ad-15f2327578d4","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID52792a17-e45f-4191-a90d-850fa1dd67f2"},{"ref":"EID22b05299-883f-417c-b4aa-bdbfa4cfd5ae"},{"ref":"EID57207dc0-a3a5-4e82-8006-d54ddc2b318d"},{"ref":"EIDdec08cbd-5d90-4a2a-a0ff-d532d4fe9b94"},{"ref":"EID3db0a144-e60b-4a08-b058-e64e635497ac"},{"ref":"EIDf427d816-5d80-4621-86d3-ce222db2174e"},{"ref":"EID037a1140-c661-4d8c-9b37-07fc2a9609d0"},{"ref":"EIDd7ab7c9c-88a2-4217-93a1-37a87f8aaa1a"},{"ref":"EID1ddbf62a-d964-476f-abe5-33ab64dd0273"}]},"parent":{"ref":"EID6eead013-0175-1000-8e59-b7f1fecd5b15"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:14:43Z","duration":671,"status":"SKIPPED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:14:43Z","duration":889,"status":"SKIPPED"},{"id":"EID6eead38c-0175-1000-ccf5-67a0f9008fea","testStepResults":{"TestStepResult":{"id":"EID6eead38c-0175-1000-c035-1dbdbf0a9087","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eead487-0175-1000-94d0-23ce196b5a55","parent":{"ref":"EID6eead38c-0175-1000-c035-1dbdbf0a9087"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:14:44Z","duration":0,"status":"PASSED"},{"id":"EID6eead487-0175-1000-0044-ef0a95783be1","parent":{"ref":"EID6eead38c-0175-1000-c035-1dbdbf0a9087"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:14:44Z","duration":0,"status":"PASSED"},{"id":"EID6eead487-0175-1000-d995-0a8c73575f98","parent":{"ref":"EID6eead38c-0175-1000-c035-1dbdbf0a9087"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:14:44Z","duration":0,"status":"PASSED"},{"id":"EID6eead487-0175-1000-2f6c-10251f555339","parent":{"ref":"EID6eead38c-0175-1000-c035-1dbdbf0a9087"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:14:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2103bf3d-9381-4819-ab83-6c08a4547641"},{"ref":"EID09ede726-8fe4-434c-8a33-ad0c6cd70001"},{"ref":"EIDda97b4f7-cf02-48d1-b367-fabe8adc2ecc"}]},"parent":{"ref":"EID6eead38c-0175-1000-ccf5-67a0f9008fea"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:14:44Z","duration":68,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:14:44Z","duration":251,"status":"PASSED"},{"id":"EID6eead487-0175-1000-eb80-9cd3198024eb","testStepResults":{"TestStepResult":{"id":"EID6eead48f-0175-1000-7c70-a0af20052961","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eead5dc-0175-1000-72a9-bdb70d6070a1","parent":{"ref":"EID6eead48f-0175-1000-7c70-a0af20052961"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead5dc-0175-1000-99b8-0df99ebfcb73","parent":{"ref":"EID6eead48f-0175-1000-7c70-a0af20052961"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead5dc-0175-1000-3e7e-f0dd48921989","parent":{"ref":"EID6eead48f-0175-1000-7c70-a0af20052961"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead5dc-0175-1000-b796-38989277f8d0","parent":{"ref":"EID6eead48f-0175-1000-7c70-a0af20052961"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead5dc-0175-1000-2f34-8c2a0b50e896","parent":{"ref":"EID6eead48f-0175-1000-7c70-a0af20052961"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead5dc-0175-1000-c3f0-df341fda1765","parent":{"ref":"EID6eead48f-0175-1000-7c70-a0af20052961"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfda50a9b-a4d9-44b2-bf5b-8b40d31e9e3a"},{"ref":"EID7ddcb4cf-f169-4017-81f8-d9e02e7e8e7a"},{"ref":"EID5eed026c-ff73-4200-bbea-48d31edbe180"}]},"parent":{"ref":"EID6eead487-0175-1000-eb80-9cd3198024eb"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:14:45Z","duration":38,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:14:44Z","duration":358,"status":"PASSED"},{"id":"EID6eead5ed-0175-1000-d177-d0bba91770c2","testStepResults":{"TestStepResult":{"id":"EID6eead5ed-0175-1000-312e-629beb8fa830","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eead6e7-0175-1000-e186-1f1d6a57012e","parent":{"ref":"EID6eead5ed-0175-1000-312e-629beb8fa830"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead6e7-0175-1000-c644-371ffba70002","parent":{"ref":"EID6eead5ed-0175-1000-312e-629beb8fa830"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead6e7-0175-1000-c106-bab526ba158d","parent":{"ref":"EID6eead5ed-0175-1000-312e-629beb8fa830"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead6e7-0175-1000-522a-971e0ab74886","parent":{"ref":"EID6eead5ed-0175-1000-312e-629beb8fa830"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead6e7-0175-1000-9df8-d080f872e8c3","parent":{"ref":"EID6eead5ed-0175-1000-312e-629beb8fa830"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead6e7-0175-1000-0340-4adc72550d81","parent":{"ref":"EID6eead5ed-0175-1000-312e-629beb8fa830"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3ef91b42-a19c-45bb-9ac6-fb2be1f3c5ca"},{"ref":"EIDe6ec0042-bf38-4e80-ba8f-0a1fada2b254"},{"ref":"EID2cd5c2cf-ce12-456f-a98f-f1c250397e7c"}]},"parent":{"ref":"EID6eead5ed-0175-1000-d177-d0bba91770c2"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:14:45Z","duration":61,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:14:45Z","duration":250,"status":"PASSED"},{"id":"EID6eead6e7-0175-1000-2fee-b501bd0e0dc8","testStepResults":{"TestStepResult":{"id":"EID6eead6e7-0175-1000-2082-9997e0ebda5b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eead7eb-0175-1000-56ea-8d770d5b32d2","parent":{"ref":"EID6eead6e7-0175-1000-2082-9997e0ebda5b"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead7eb-0175-1000-d42a-b7dc9d55abdd","parent":{"ref":"EID6eead6e7-0175-1000-2082-9997e0ebda5b"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead7eb-0175-1000-cbbf-d84d5a7c72b3","parent":{"ref":"EID6eead6e7-0175-1000-2082-9997e0ebda5b"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"},{"id":"EID6eead7eb-0175-1000-0e83-4716e0d13a3b","parent":{"ref":"EID6eead6e7-0175-1000-2082-9997e0ebda5b"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:14:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc7bbe414-c002-4252-b852-3beb01b648a8"},{"ref":"EIDa755ef33-0344-4c6c-8ac3-d733bc8a87a8"},{"ref":"EID01edbd88-0aca-4391-8258-9103d352c44e"}]},"parent":{"ref":"EID6eead6e7-0175-1000-2fee-b501bd0e0dc8"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:14:45Z","duration":49,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:14:45Z","duration":260,"status":"PASSED"},{"id":"EID6eead7eb-0175-1000-6820-88d6044ed87f","testStepResults":{"TestStepResult":[{"id":"EID6eead7eb-0175-1000-89dd-ba69ca845f55","attachments":{"attachment":[{"ref":"EID7ea9722e-15b3-47f9-863e-25096c58a273"},{"ref":"EIDee00e56b-7bf2-404a-80ea-bb30cc30ce54"},{"ref":"EID1d687e7a-2b30-40f1-bdc7-545325312204"},{"ref":"EIDfc493ce9-d550-4e3b-9eb9-b73026a9cb3b"}]},"parent":{"ref":"EID6eead7eb-0175-1000-6820-88d6044ed87f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:14:45Z","duration":290,"status":"PASSED"},{"id":"EID6eead953-0175-1000-3bb3-aa397b64f971","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadaa5-0175-1000-feb8-b4be1ec81d39","parent":{"ref":"EID6eead953-0175-1000-3bb3-aa397b64f971"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadaa5-0175-1000-c6fe-bda8f0f6c90e","parent":{"ref":"EID6eead953-0175-1000-3bb3-aa397b64f971"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadaa5-0175-1000-4ea5-b41dac5008ec","parent":{"ref":"EID6eead953-0175-1000-3bb3-aa397b64f971"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadaa5-0175-1000-dbca-47d937b80b8b","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6eead953-0175-1000-3bb3-aa397b64f971"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID66c77cd4-1057-4066-a11e-c5cb793e3960"},{"ref":"EID2465ef15-2aea-4a59-a834-6bf268627bc7"},{"ref":"EIDcad350de-8e47-479f-8bb4-9b44830190be"}]},"parent":{"ref":"EID6eead7eb-0175-1000-6820-88d6044ed87f"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:14:46Z","duration":51,"status":"FAILED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:14:45Z","duration":699,"status":"FAILED"},{"id":"EID6eeadaa6-0175-1000-168d-9e421a171d6a","testStepResults":{"TestStepResult":{"id":"EID6eeadaa6-0175-1000-103d-41af6bb90a6b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadb8f-0175-1000-cad9-026997183aea","parent":{"ref":"EID6eeadaa6-0175-1000-103d-41af6bb90a6b"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadb8f-0175-1000-9d72-6036c38b6f6c","parent":{"ref":"EID6eeadaa6-0175-1000-103d-41af6bb90a6b"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadb8f-0175-1000-62fa-246c7878d665","parent":{"ref":"EID6eeadaa6-0175-1000-103d-41af6bb90a6b"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadb8f-0175-1000-5705-67d9bc1f69a3","parent":{"ref":"EID6eeadaa6-0175-1000-103d-41af6bb90a6b"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0c8247cd-60d2-426d-8edc-9e51c3e153b0"},{"ref":"EID5b5d36d8-80de-4c90-b6b8-e4944b17c967"},{"ref":"EID916cf227-9e96-4b60-8191-64855c3dfd69"}]},"parent":{"ref":"EID6eeadaa6-0175-1000-168d-9e421a171d6a"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:14:46Z","duration":91,"status":"PASSED"}},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:14:46Z","duration":233,"status":"PASSED"},{"id":"EID6eeadb8f-0175-1000-2b24-251018309d59","testStepResults":{"TestStepResult":[{"id":"EID6eeadb8f-0175-1000-0645-fecf316b80e5","parent":{"ref":"EID6eeadb8f-0175-1000-2b24-251018309d59"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6eeadbac-0175-1000-a3db-db9b15a111c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadc73-0175-1000-6ca0-b2d01a33bb69","parent":{"ref":"EID6eeadbac-0175-1000-a3db-db9b15a111c9"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadc73-0175-1000-4cc4-34a88f3c6289","parent":{"ref":"EID6eeadbac-0175-1000-a3db-db9b15a111c9"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadc73-0175-1000-0ca6-26109b6af9ab","parent":{"ref":"EID6eeadbac-0175-1000-a3db-db9b15a111c9"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadc73-0175-1000-cbd1-2a3ea88b03b7","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eeadbac-0175-1000-a3db-db9b15a111c9"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:14:47Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9807e35c-b252-4398-afb4-fbd9e47a6735"},{"ref":"EID405389de-a0aa-47c8-94ee-198067e9b9de"},{"ref":"EID8191445b-4973-440a-8258-53294f78b7a7"}]},"parent":{"ref":"EID6eeadb8f-0175-1000-2b24-251018309d59"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:14:46Z","duration":85,"status":"FAILED"}]},"parent":{"ref":"EID6eeabf69-0175-1000-5821-12a81b905498"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:14:46Z","duration":229,"status":"FAILED"}]},"parent":{"ref":"EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:14:39Z","duration":7435,"status":"FAILED"},{"id":"EID6eeadc74-0175-1000-5323-976d39f3ac92","testCaseResults":{"TestCaseResult":[{"id":"EID6eeadc7a-0175-1000-6129-a92016d3cb8c","testStepResults":{"TestStepResult":[{"id":"EID6eeadc7a-0175-1000-013f-39e1b63349d4","parent":{"ref":"EID6eeadc7a-0175-1000-6129-a92016d3cb8c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadc7a-0175-1000-e3b1-f75ee8a29754","parent":{"ref":"EID6eeadc7a-0175-1000-6129-a92016d3cb8c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:14:47Z","duration":91,"status":"PASSED"},{"id":"EID6eeadc7a-0175-1000-b0be-0f3ed63e2299","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadd3c-0175-1000-4fbd-7034f5a5bcba","parent":{"ref":"EID6eeadc7a-0175-1000-b0be-0f3ed63e2299"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadd3c-0175-1000-cbc0-3a1b3797805e","parent":{"ref":"EID6eeadc7a-0175-1000-b0be-0f3ed63e2299"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadd3c-0175-1000-09ff-a9138d1acb49","parent":{"ref":"EID6eeadc7a-0175-1000-b0be-0f3ed63e2299"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf2d66dea-acf5-4717-aab4-81d26a79edc5"},{"ref":"EID6ccde222-ee2c-4134-bacc-b1523462eb14"},{"ref":"EID720df45e-0bdc-4000-bdea-9d53e5c6c996"}]},"parent":{"ref":"EID6eeadc7a-0175-1000-6129-a92016d3cb8c"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:14:47Z","duration":99,"status":"PASSED"},{"id":"EID6eeadd45-0175-1000-649b-fb097adc2c1c","attachments":{"attachment":{"ref":"EID191e5f12-04fb-49b9-b33c-b177682fae05"}},"parent":{"ref":"EID6eeadc7a-0175-1000-6129-a92016d3cb8c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadd51-0175-1000-79c2-53fc0587622f","parent":{"ref":"EID6eeadc7a-0175-1000-6129-a92016d3cb8c"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:14:47Z","duration":83,"status":"PASSED"}]},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:14:47Z","duration":299,"status":"PASSED"},{"id":"EID6eeadda5-0175-1000-804e-cd09686bc3a9","testStepResults":{"TestStepResult":[{"id":"EID6eeadda5-0175-1000-37e6-730bb9031e43","parent":{"ref":"EID6eeadda5-0175-1000-804e-cd09686bc3a9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:14:47Z","duration":40,"status":"PASSED"},{"id":"EID6eeadda5-0175-1000-d17f-55405f87815d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaddfb-0175-1000-498c-b15afa23e448","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeadda5-0175-1000-d17f-55405f87815d"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:14:47Z","duration":12,"status":"FAILED"},{"id":"EID6eeade07-0175-1000-ba82-19eaafa359f7","parent":{"ref":"EID6eeadda5-0175-1000-d17f-55405f87815d"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeade07-0175-1000-4ea9-f50866ee0b73","parent":{"ref":"EID6eeadda5-0175-1000-d17f-55405f87815d"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeade07-0175-1000-0d7e-3490c01094c2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6eeadda5-0175-1000-d17f-55405f87815d"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"FAILED"},{"id":"EID6eeade07-0175-1000-238a-7e8f353e2c2a","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6eeadda5-0175-1000-d17f-55405f87815d"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5bc714bf-3575-4af9-858a-8f025e70415e"},{"ref":"EIDfc249b9f-f282-454e-a4bf-abda02f4dd4c"},{"ref":"EID5df16fb0-c424-431f-8a53-314a7dcf7621"}]},"parent":{"ref":"EID6eeadda5-0175-1000-804e-cd09686bc3a9"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:14:47Z","duration":27,"status":"FAILED"}]},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:14:47Z","duration":98,"status":"FAILED"},{"id":"EID6eeade08-0175-1000-39ee-7377e2f741f3","testStepResults":{"TestStepResult":{"id":"EID6eeade08-0175-1000-b197-295e2f3a970e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeade5c-0175-1000-e98e-9e58c0063355","parent":{"ref":"EID6eeade08-0175-1000-b197-295e2f3a970e"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeade5c-0175-1000-e4d5-a1a6e2b6b83b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeade08-0175-1000-b197-295e2f3a970e"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:14:47Z","duration":13,"status":"FAILED"},{"id":"EID6eeade69-0175-1000-f38b-d255af975b27","parent":{"ref":"EID6eeade08-0175-1000-b197-295e2f3a970e"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID979ad17b-aeaa-4392-a893-7529ec1a4649"},{"ref":"EIDc13adb6e-dc9b-49bb-ad71-8d3843e751d3"},{"ref":"EID68a26ef8-7451-4c5b-ae8a-4b28b556c409"}]},"parent":{"ref":"EID6eeade08-0175-1000-39ee-7377e2f741f3"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:14:47Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:14:47Z","duration":97,"status":"FAILED"},{"id":"EID6eeade69-0175-1000-59d5-a3775452eace","testStepResults":{"TestStepResult":{"id":"EID6eeade69-0175-1000-aeca-292a9280b544","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadec8-0175-1000-184a-97076ac780a7","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eeade69-0175-1000-aeca-292a9280b544"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"FAILED"},{"id":"EID6eeadec8-0175-1000-2a81-1fa47ba81e84","parent":{"ref":"EID6eeade69-0175-1000-aeca-292a9280b544"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadec9-0175-1000-e2b2-1e525872026f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeade69-0175-1000-aeca-292a9280b544"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:14:47Z","duration":47,"status":"FAILED"},{"id":"EID6eeadef8-0175-1000-8293-6f4e50f2be62","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6eeade69-0175-1000-aeca-292a9280b544"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3a96fd87-b148-49e7-90a3-732158fff243"},{"ref":"EID6363acbe-7109-4c55-b613-88e47df5aa65"},{"ref":"EIDf4d821d6-cde7-4149-b38f-1fe7198fb2f5"}]},"parent":{"ref":"EID6eeade69-0175-1000-59d5-a3775452eace"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:14:47Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:14:47Z","duration":143,"status":"FAILED"},{"id":"EID6eeadef8-0175-1000-705d-67e6e527ebdc","testStepResults":{"TestStepResult":{"id":"EID6eeadef8-0175-1000-2a1e-4f70b78ee6de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadf55-0175-1000-863c-5aff80c26833","parent":{"ref":"EID6eeadef8-0175-1000-2a1e-4f70b78ee6de"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadf55-0175-1000-9e07-513ba6218ea4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeadef8-0175-1000-2a1e-4f70b78ee6de"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:14:47Z","duration":11,"status":"FAILED"},{"id":"EID6eeadf60-0175-1000-e126-f0d21c0ad30e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6eeadef8-0175-1000-2a1e-4f70b78ee6de"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8ec71407-7354-44dd-831c-0b2c07f9c313"},{"ref":"EID1ebc75e3-9076-4be4-b36b-d5e19679b8ae"},{"ref":"EIDd7936df7-6e63-4a66-8ccf-91ee7b225507"}]},"parent":{"ref":"EID6eeadef8-0175-1000-705d-67e6e527ebdc"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:14:47Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:14:47Z","duration":104,"status":"FAILED"},{"id":"EID6eeadf60-0175-1000-ea0f-4b41b44ec96e","testStepResults":{"TestStepResult":{"id":"EID6eeadf60-0175-1000-6352-4f2591e8015f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeadfc3-0175-1000-e864-082534a6e2a6","parent":{"ref":"EID6eeadf60-0175-1000-6352-4f2591e8015f"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"PASSED"},{"id":"EID6eeadfc3-0175-1000-eb64-7827da2896b4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeadf60-0175-1000-6352-4f2591e8015f"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:14:47Z","duration":16,"status":"FAILED"},{"id":"EID6eeadfd3-0175-1000-3d11-ac8fba77fe4e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eeadf60-0175-1000-6352-4f2591e8015f"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:14:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd9397cce-6646-4206-8f4d-2ef904a093ab"},{"ref":"EID56dd5aed-e652-4ec7-9f26-6491efdda884"},{"ref":"EID842e3c1a-6893-43aa-8555-364964841c70"}]},"parent":{"ref":"EID6eeadf60-0175-1000-ea0f-4b41b44ec96e"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:14:47Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:14:47Z","duration":115,"status":"FAILED"},{"id":"EID6eeadfd3-0175-1000-af72-a37dc246eabc","testStepResults":{"TestStepResult":{"id":"EID6eeadfd3-0175-1000-0f50-086a6a9e6424","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae0aa-0175-1000-4663-949bb3474309","parent":{"ref":"EID6eeadfd3-0175-1000-0f50-086a6a9e6424"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae0aa-0175-1000-29b7-47474b6bd900","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeadfd3-0175-1000-0f50-086a6a9e6424"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:14:48Z","duration":19,"status":"FAILED"},{"id":"EID6eeae0bd-0175-1000-a7f0-825656996516","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6eeadfd3-0175-1000-0f50-086a6a9e6424"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"FAILED"},{"id":"EID6eeae0bd-0175-1000-eb2a-b4224660aa81","parent":{"ref":"EID6eeadfd3-0175-1000-0f50-086a6a9e6424"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae0bd-0175-1000-1c14-63b632f2c48c","parent":{"ref":"EID6eeadfd3-0175-1000-0f50-086a6a9e6424"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7630bed-2baf-44fe-9a19-b5abb74288b2"},{"ref":"EID67b92911-09bf-462c-a47e-bdfdfd6b99d7"},{"ref":"EIDeb1db89e-512e-461c-8712-9f8b3664a9a2"}]},"parent":{"ref":"EID6eeadfd3-0175-1000-af72-a37dc246eabc"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:14:47Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:14:47Z","duration":234,"status":"FAILED"},{"id":"EID6eeae0bd-0175-1000-b3ff-84492cf750e8","testStepResults":{"TestStepResult":{"id":"EID6eeae0bd-0175-1000-2f62-b60e9da6d1c0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae137-0175-1000-d8d0-dd986a6dcb43","parent":{"ref":"EID6eeae0bd-0175-1000-2f62-b60e9da6d1c0"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae137-0175-1000-77bc-105161572c80","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae0bd-0175-1000-2f62-b60e9da6d1c0"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:14:48Z","duration":9,"status":"FAILED"},{"id":"EID6eeae140-0175-1000-add1-8be91d8619cd","parent":{"ref":"EID6eeae0bd-0175-1000-2f62-b60e9da6d1c0"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe2ef91d7-34f4-43e2-b34c-4eca20946cc1"},{"ref":"EID6170ba2c-f694-4295-a286-5175006aaef5"},{"ref":"EIDf6740ffc-ec95-43ec-b074-b54903beb6a0"}]},"parent":{"ref":"EID6eeae0bd-0175-1000-b3ff-84492cf750e8"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:14:48Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:14:48Z","duration":131,"status":"FAILED"},{"id":"EID6eeae141-0175-1000-0568-179f082dbf0f","testStepResults":{"TestStepResult":{"id":"EID6eeae141-0175-1000-b57f-19c9c0e97a94","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae199-0175-1000-5d01-a91dda6f056d","parent":{"ref":"EID6eeae141-0175-1000-b57f-19c9c0e97a94"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae199-0175-1000-1ba1-4070d5704c5c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae141-0175-1000-b57f-19c9c0e97a94"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:14:48Z","duration":10,"status":"FAILED"},{"id":"EID6eeae1a3-0175-1000-701b-4d0fea5304da","parent":{"ref":"EID6eeae141-0175-1000-b57f-19c9c0e97a94"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc1b76df8-4774-409a-a18e-6a1001c35c31"},{"ref":"EIDa23d864b-5e72-4918-b85f-0af529f243f4"},{"ref":"EIDe1a5cdae-1aab-499b-bdfb-f9e8af760600"}]},"parent":{"ref":"EID6eeae141-0175-1000-0568-179f082dbf0f"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:14:48Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:14:48Z","duration":99,"status":"FAILED"},{"id":"EID6eeae1a4-0175-1000-54bb-e2ebd94abbc3","testStepResults":{"TestStepResult":{"id":"EID6eeae1a4-0175-1000-3a4f-472047f7b79d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae260-0175-1000-59c9-089c48249ea5","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae1a4-0175-1000-3a4f-472047f7b79d"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:14:48Z","duration":11,"status":"FAILED"},{"id":"EID6eeae26b-0175-1000-ffcf-d7ff0c27f101","parent":{"ref":"EID6eeae1a4-0175-1000-3a4f-472047f7b79d"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae26b-0175-1000-9b73-8ae31d2121c1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeae1a4-0175-1000-3a4f-472047f7b79d"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:14:48Z","duration":1,"status":"FAILED"},{"id":"EID6eeae26c-0175-1000-0ec1-842eeaddfda0","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6eeae1a4-0175-1000-3a4f-472047f7b79d"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe2312b63-7eea-4344-8b8a-49c7e5acbd06"},{"ref":"EID6f81e8b3-1dd6-4019-a969-e8b6558d9ed3"},{"ref":"EID3add697a-d3cd-4a36-ab62-ff02ad0c398f"}]},"parent":{"ref":"EID6eeae1a4-0175-1000-54bb-e2ebd94abbc3"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:14:48Z","duration":106,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:14:48Z","duration":200,"status":"FAILED"},{"id":"EID6eeae26c-0175-1000-7662-6a1bee312c9c","testStepResults":{"TestStepResult":{"id":"EID6eeae26c-0175-1000-cef2-741c8f1983e3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae2c6-0175-1000-e6af-fdcaf3119fa5","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae26c-0175-1000-cef2-741c8f1983e3"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:14:48Z","duration":10,"status":"FAILED"},{"id":"EID6eeae2d0-0175-1000-a91f-4175051468c8","parent":{"ref":"EID6eeae26c-0175-1000-cef2-741c8f1983e3"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae2d1-0175-1000-22a7-74153f6cd099","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeae26c-0175-1000-cef2-741c8f1983e3"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"FAILED"},{"id":"EID6eeae2d1-0175-1000-4126-c5b0d65abce6","parent":{"ref":"EID6eeae26c-0175-1000-cef2-741c8f1983e3"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2c1c8d03-75e7-4026-91c1-d3096842e1b6"},{"ref":"EIDc77b08ff-814e-4d52-be4d-c623e8952207"},{"ref":"EID860dcca7-0adc-424b-9945-526f47e6d673"}]},"parent":{"ref":"EID6eeae26c-0175-1000-7662-6a1bee312c9c"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:14:48Z","duration":23,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:14:48Z","duration":101,"status":"FAILED"},{"id":"EID6eeae2d1-0175-1000-0796-5471e96ce928","testStepResults":{"TestStepResult":[{"id":"EID6eeae2d1-0175-1000-da93-bdf36105f5ae","parent":{"ref":"EID6eeae2d1-0175-1000-0796-5471e96ce928"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae2d1-0175-1000-3626-f9a06ac30bd9","parent":{"ref":"EID6eeae2d1-0175-1000-0796-5471e96ce928"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:14:48Z","duration":145,"status":"PASSED"},{"id":"EID6eeae2d1-0175-1000-cdfc-5815109bf6f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae386-0175-1000-e994-36da0c01632a","parent":{"ref":"EID6eeae2d1-0175-1000-cdfc-5815109bf6f2"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae386-0175-1000-5524-fcfce816b0ab","parent":{"ref":"EID6eeae2d1-0175-1000-cdfc-5815109bf6f2"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae386-0175-1000-fd55-9c48c7647efa","parent":{"ref":"EID6eeae2d1-0175-1000-cdfc-5815109bf6f2"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae386-0175-1000-d4d4-ec34b9a154f6","parent":{"ref":"EID6eeae2d1-0175-1000-cdfc-5815109bf6f2"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6db87a3e-a7a2-4e9e-8f87-d1be29d8742c"},{"ref":"EIDcfc89644-0319-43b8-80a7-44dafa8f1b4f"},{"ref":"EID27cc742b-89d1-4846-8db3-ecc4dc70270c"}]},"parent":{"ref":"EID6eeae2d1-0175-1000-0796-5471e96ce928"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:14:48Z","duration":62,"status":"PASSED"},{"id":"EID6eeae386-0175-1000-eae7-0eba9b0aa42b","attachments":{"attachment":{"ref":"EID386c043b-174e-48ab-93e0-4b9f6a926b35"}},"parent":{"ref":"EID6eeae2d1-0175-1000-0796-5471e96ce928"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:14:48Z","duration":4,"status":"PASSED"},{"id":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae421-0175-1000-7445-a692715df283","parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6eeae421-0175-1000-d0d6-1712ea8a3e62","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:14:48Z","duration":25,"status":"FAILED"},{"id":"EID6eeae43a-0175-1000-0ae7-09fe736084d2","parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae43a-0175-1000-d1f8-3ca55a397c2e","parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae43a-0175-1000-1d8f-b66e01d7ef5a","parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae43a-0175-1000-8500-304497dbebac","parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae43a-0175-1000-54bf-ed429a47c06a","parent":{"ref":"EID6eeae3a1-0175-1000-3320-7cba35e46a5f"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID49c8e243-23fa-40f2-884a-cae7bca118c6"},{"ref":"EID4a1c5545-7179-4b4b-a390-ca6c10b44898"},{"ref":"EIDe88a29a9-56e6-4332-bde3-d5a720454e21"}]},"parent":{"ref":"EID6eeae2d1-0175-1000-0796-5471e96ce928"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:14:48Z","duration":33,"status":"FAILED"}]},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:14:48Z","duration":361,"status":"FAILED"},{"id":"EID6eeae43b-0175-1000-c04a-140e87e39cbe","testStepResults":{"TestStepResult":[{"id":"EID6eeae43b-0175-1000-5cb6-37c65980e74b","parent":{"ref":"EID6eeae43b-0175-1000-c04a-140e87e39cbe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae43b-0175-1000-e1c4-9074eca102cb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae628-0175-1000-5881-b65b89862560","parent":{"ref":"EID6eeae43b-0175-1000-e1c4-9074eca102cb"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae628-0175-1000-fc0b-589a42e0c47b","parent":{"ref":"EID6eeae43b-0175-1000-e1c4-9074eca102cb"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae628-0175-1000-1a8d-aef801e3ed88","parent":{"ref":"EID6eeae43b-0175-1000-e1c4-9074eca102cb"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae628-0175-1000-76b5-1fdfca3043bf","parent":{"ref":"EID6eeae43b-0175-1000-e1c4-9074eca102cb"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4ad8352f-ed32-4200-bef7-d76352ba04e6"},{"ref":"EID642d11eb-ba6c-4931-946b-416f6734a3c3"},{"ref":"EID7d4e73ee-d573-4c2a-a37c-8b934b557bcd"}]},"parent":{"ref":"EID6eeae43b-0175-1000-c04a-140e87e39cbe"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:14:49Z","duration":142,"status":"PASSED"},{"id":"EID6eeae628-0175-1000-17b3-0ed00a9c55c7","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eeae638-0175-1000-601e-51564015688c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae726-0175-1000-1c90-f599a24412a5","parent":{"ref":"EID6eeae638-0175-1000-601e-51564015688c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae726-0175-1000-a7f6-ffcb134479af","parent":{"ref":"EID6eeae638-0175-1000-601e-51564015688c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6eeae726-0175-1000-a739-b7cb9d000cf8","parent":{"ref":"EID6eeae638-0175-1000-601e-51564015688c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0d4494d1-224d-40b7-aadd-7cf4f43ab1cc"},{"ref":"EID95315780-e267-4b20-8fcc-f55d6e0b334b"},{"ref":"EIDdbb84d61-f662-4d43-b5a6-0b19883217d8"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:49Z","duration":152,"status":"PASSED"},{"id":"EID6eeae728-0175-1000-e3ea-1be7d9701ee8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae8dd-0175-1000-1d7f-92f3951a7a1e","parent":{"ref":"EID6eeae728-0175-1000-e3ea-1be7d9701ee8"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6eeae8dd-0175-1000-29fb-ae196fea22e0","parent":{"ref":"EID6eeae728-0175-1000-e3ea-1be7d9701ee8"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6eeae8dd-0175-1000-1e66-4358e65874ee","parent":{"ref":"EID6eeae728-0175-1000-e3ea-1be7d9701ee8"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID90c2ee5f-0ccb-4a73-b784-07c996ac7a2d"},{"ref":"EIDe4a0615e-beb6-4df9-9dc2-da424523ea14"},{"ref":"EID5c01a0e3-32e9-4bd6-8b7c-0a1333bb341a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:49Z","duration":177,"status":"PASSED"},{"id":"EID6eeae8df-0175-1000-e522-959cdb3e244e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae93f-0175-1000-5315-8b02626c44cd","parent":{"ref":"EID6eeae8df-0175-1000-e522-959cdb3e244e"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6eeae93f-0175-1000-73fe-aed567227242","parent":{"ref":"EID6eeae8df-0175-1000-e522-959cdb3e244e"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6eeae93f-0175-1000-350b-64159a47eaee","parent":{"ref":"EID6eeae8df-0175-1000-e522-959cdb3e244e"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID46952b3a-2737-4958-9b6e-3292c973de3b"},{"ref":"EIDa1be3c1b-46d6-4059-8b87-d8ca29038945"},{"ref":"EIDc6b64c3c-dd0c-4af9-b7d3-cf22d3ad9874"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:50Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6eeae43b-0175-1000-c04a-140e87e39cbe"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:14:49Z","duration":792,"status":"PASSED"},{"id":"EID6eeae941-0175-1000-a312-d4bebc942213","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeae9a6-0175-1000-0173-d352c0adff24","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae941-0175-1000-a312-d4bebc942213"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:14:50Z","duration":11,"status":"FAILED"},{"id":"EID6eeae9b1-0175-1000-3c27-34d8146c4507","parent":{"ref":"EID6eeae941-0175-1000-a312-d4bebc942213"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6eeae9b1-0175-1000-85cf-8e58aa4717d4","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeae941-0175-1000-a312-d4bebc942213"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"FAILED"},{"id":"EID6eeae9b1-0175-1000-857b-0e4970f51efb","parent":{"ref":"EID6eeae941-0175-1000-a312-d4bebc942213"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a7bfa25-2dc6-49e2-b99a-dcfff1af53d8"},{"ref":"EIDe3ff2130-d562-4307-9eaf-6dc0b62898f9"},{"ref":"EID17b15fd3-04b7-4938-affe-41b3727b844f"}]},"parent":{"ref":"EID6eeae43b-0175-1000-c04a-140e87e39cbe"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:14:50Z","duration":30,"status":"FAILED"}]},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:14:49Z","duration":1398,"status":"FAILED"},{"id":"EID6eeae9b2-0175-1000-ce5f-799b9623db97","testStepResults":{"TestStepResult":{"id":"EID6eeae9b2-0175-1000-61e3-c241da8e4029","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaea3b-0175-1000-a05b-cd660faa3661","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeae9b2-0175-1000-61e3-c241da8e4029"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:14:50Z","duration":10,"status":"FAILED"},{"id":"EID6eeaea45-0175-1000-be96-dcd7c3ea73e7","parent":{"ref":"EID6eeae9b2-0175-1000-61e3-c241da8e4029"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6eeaea45-0175-1000-0b13-4e8a864a6d3d","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeae9b2-0175-1000-61e3-c241da8e4029"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"FAILED"},{"id":"EID6eeaea45-0175-1000-993e-d6189ccdee2d","parent":{"ref":"EID6eeae9b2-0175-1000-61e3-c241da8e4029"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcf7cc3ab-7f27-4f6d-b1c4-f8ddd0c6f540"},{"ref":"EIDd2f62c22-0572-46be-a4e4-611fc68489d5"},{"ref":"EID48ec6a84-049b-4d3c-8b21-cc361ea1b2e8"}]},"parent":{"ref":"EID6eeae9b2-0175-1000-ce5f-799b9623db97"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:14:50Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6eeadc74-0175-1000-5323-976d39f3ac92"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:14:50Z","duration":147,"status":"FAILED"}]},"parent":{"ref":"EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:14:47Z","duration":3538,"status":"FAILED"},{"id":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e","testCaseResults":{"TestCaseResult":[{"id":"EID6eeaea46-0175-1000-9672-506052434d55","testStepResults":{"TestStepResult":{"id":"EID6eeaea46-0175-1000-04fd-614f3a83c1d7","parent":{"ref":"EID6eeaea46-0175-1000-9672-506052434d55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeaea46-0175-1000-0230-67e8e7787422","testStepResults":{"TestStepResult":{"id":"EID6eeaea46-0175-1000-6324-0e4a901ffe9c","parent":{"ref":"EID6eeaea46-0175-1000-0230-67e8e7787422"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeaea46-0175-1000-7319-e7a6e6008004","testStepResults":{"TestStepResult":{"id":"EID6eeaea46-0175-1000-fb8d-7e05bfa29308","parent":{"ref":"EID6eeaea46-0175-1000-7319-e7a6e6008004"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeaea4f-0175-1000-7c48-77543c485f98","testStepResults":{"TestStepResult":{"id":"EID6eeaea4f-0175-1000-1484-4b03f9ad19b0","parent":{"ref":"EID6eeaea4f-0175-1000-7c48-77543c485f98"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:14:50Z","duration":1,"status":"SKIPPED"},{"id":"EID6eeaea50-0175-1000-8e22-16c981dfcd75","testStepResults":{"TestStepResult":{"id":"EID6eeaea50-0175-1000-500c-584662b65ed9","parent":{"ref":"EID6eeaea50-0175-1000-8e22-16c981dfcd75"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeaea50-0175-1000-9d98-7a90cb10b325","testStepResults":{"TestStepResult":{"id":"EID6eeaea50-0175-1000-85fd-9202b7802516","parent":{"ref":"EID6eeaea50-0175-1000-9d98-7a90cb10b325"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeaea50-0175-1000-7829-1db7c45b3871","testStepResults":{"TestStepResult":{"id":"EID6eeaea50-0175-1000-f83d-8596f5121035","parent":{"ref":"EID6eeaea50-0175-1000-7829-1db7c45b3871"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:14:50Z","duration":623,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaea46-0175-1000-2d79-4799ccc6f16e"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:14:50Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:14:50Z","duration":10,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EIDeb1db89e-512e-461c-8712-9f8b3664a9a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID774cc9ef-b8ce-4e38-bbce-81aa867d2530","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID774cc9ef-b8ce-4e38-bbce-81aa867d2530"}},{"type":"ServiceEndpoint","id":"EID49c8e243-23fa-40f2-884a-cae7bca118c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID28b9e8ad-cbef-4b22-a10e-e809ca8c9b7a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8c5fed3a-e25a-49b4-a3ac-7e0575d5eab0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf4d821d6-cde7-4149-b38f-1fe7198fb2f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID22e1453f-a17b-4356-8443-cf67f3dea384","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID22e1453f-a17b-4356-8443-cf67f3dea384"}},{"type":"ServiceResponse","id":"EID405389de-a0aa-47c8-94ee-198067e9b9de","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID405389de-a0aa-47c8-94ee-198067e9b9de"}},{"type":"Message","id":"EID8eedd8d4-888e-4d01-a9a4-23996d3b728b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID8eedd8d4-888e-4d01-a9a4-23996d3b728b"}},{"type":"Message","id":"EID236f738a-27c0-4fdd-b415-1810a50d1913","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID236f738a-27c0-4fdd-b415-1810a50d1913"}},{"type":"ServiceResponse","id":"EIDd2f62c22-0572-46be-a4e4-611fc68489d5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDd2f62c22-0572-46be-a4e4-611fc68489d5"}},{"type":"GetParameter","id":"EIDafa49486-439b-4b7e-ae4e-cb4d43cca707","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5bc714bf-3575-4af9-858a-8f025e70415e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID642d11eb-ba6c-4931-946b-416f6734a3c3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID642d11eb-ba6c-4931-946b-416f6734a3c3"}},{"type":"ServiceEndpoint","id":"EID48e768e1-33ff-4b59-8320-cd44933e08d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc9c2269d-7618-4b10-8d19-b6b7106f9b9f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDc9c2269d-7618-4b10-8d19-b6b7106f9b9f"}},{"type":"ServiceResponse","id":"EID5b5d36d8-80de-4c90-b6b8-e4944b17c967","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID5b5d36d8-80de-4c90-b6b8-e4944b17c967"}},{"type":"Error","id":"EIDa1da1671-05e0-4d3f-98e5-2c50dd393bc2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDa1da1671-05e0-4d3f-98e5-2c50dd393bc2"}},{"type":"GetParameter","id":"EID4e999d81-1110-4365-a1da-a1eb4cf0786d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID4f74b51c-b5c5-4d9c-b5b3-c3f0c7ee9aac","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID4f74b51c-b5c5-4d9c-b5b3-c3f0c7ee9aac"}},{"type":"Error","id":"EID8c74bace-cabc-4bc4-a1ef-0089a6f7c531","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID8c74bace-cabc-4bc4-a1ef-0089a6f7c531"}},{"type":"ServiceEndpoint","id":"EID4ad8352f-ed32-4200-bef7-d76352ba04e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID22b05299-883f-417c-b4aa-bdbfa4cfd5ae","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID22b05299-883f-417c-b4aa-bdbfa4cfd5ae"}},{"type":"ServiceEndpoint","id":"EIDd7630bed-2baf-44fe-9a19-b5abb74288b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID3db0a144-e60b-4a08-b058-e64e635497ac","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID3db0a144-e60b-4a08-b058-e64e635497ac"}},{"type":"ServiceResponse","id":"EID4b1707ae-cf3a-4d46-9b0b-f6d245dd86e6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID4b1707ae-cf3a-4d46-9b0b-f6d245dd86e6"}},{"type":"Message","id":"EIDb1dfd83d-cccd-459c-83f6-d6d79bced30b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDb1dfd83d-cccd-459c-83f6-d6d79bced30b"}},{"type":"ServiceResponse","id":"EIDa23d864b-5e72-4918-b85f-0af529f243f4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDa23d864b-5e72-4918-b85f-0af529f243f4"}},{"type":"GetParameter","id":"EID2cd5c2cf-ce12-456f-a98f-f1c250397e7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID7ea9722e-15b3-47f9-863e-25096c58a273","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID7ea9722e-15b3-47f9-863e-25096c58a273"}},{"type":"ServiceEndpoint","id":"EID567b9fe2-aff0-46bc-a455-8198f8b268cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1da81532-c057-4a98-8eed-ba586f1f89b4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1dee11b9-7c68-442b-ac4b-91004fad2268","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID84bb4597-b2de-432b-ba55-de9bd0b913ea","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID84bb4597-b2de-432b-ba55-de9bd0b913ea"}},{"type":"GetParameter","id":"EID3add697a-d3cd-4a36-ab62-ff02ad0c398f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID90c2ee5f-0ccb-4a73-b784-07c996ac7a2d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID189871f8-93bf-4c5f-b91e-d07821dbc3fd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID189871f8-93bf-4c5f-b91e-d07821dbc3fd"}},{"type":"GetParameter","id":"EID7d4e73ee-d573-4c2a-a37c-8b934b557bcd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDd9397cce-6646-4206-8f4d-2ef904a093ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID62d8933a-d51e-493d-9c9a-3128b6038c66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDcf7cc3ab-7f27-4f6d-b1c4-f8ddd0c6f540","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID0c8247cd-60d2-426d-8edc-9e51c3e153b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9ee73b21-01f5-43b7-8a37-87c788a41abf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID47f5ab95-5691-4ce2-81a0-e22f637ffd11","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID47f5ab95-5691-4ce2-81a0-e22f637ffd11"}},{"type":"ServiceEndpoint","id":"EID8ec71407-7354-44dd-831c-0b2c07f9c313","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID67b92911-09bf-462c-a47e-bdfdfd6b99d7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID67b92911-09bf-462c-a47e-bdfdfd6b99d7"}},{"type":"Message","id":"EID386c043b-174e-48ab-93e0-4b9f6a926b35","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID386c043b-174e-48ab-93e0-4b9f6a926b35"}},{"type":"ServiceResponse","id":"EIDe4a0615e-beb6-4df9-9dc2-da424523ea14","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDe4a0615e-beb6-4df9-9dc2-da424523ea14"}},{"type":"GetParameter","id":"EID17b15fd3-04b7-4938-affe-41b3727b844f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDf427d816-5d80-4621-86d3-ce222db2174e","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDf427d816-5d80-4621-86d3-ce222db2174e"}},{"type":"ServiceEndpoint","id":"EID41e7d40a-91e9-4e14-84dc-a2f71e144259","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID6b1e7a39-eb73-446b-b622-8a954eef5291","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID6b1e7a39-eb73-446b-b622-8a954eef5291"}},{"type":"GetParameter","id":"EIDe1a5cdae-1aab-499b-bdfb-f9e8af760600","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID6db87a3e-a7a2-4e9e-8f87-d1be29d8742c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5c65806b-ea5f-4a48-bd70-08ff1c7b959b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd4250ffa-172c-4f93-aa78-474f8d564925","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDd4250ffa-172c-4f93-aa78-474f8d564925"}},{"type":"GetParameter","id":"EID6ecc650b-f93a-4501-acea-195a17f8c362","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe88a29a9-56e6-4332-bde3-d5a720454e21","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID6f81e8b3-1dd6-4019-a969-e8b6558d9ed3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID6f81e8b3-1dd6-4019-a969-e8b6558d9ed3"}},{"type":"Error","id":"EID00b7c043-a56e-4afa-ad3d-169a18b1e262","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID00b7c043-a56e-4afa-ad3d-169a18b1e262"}},{"type":"ServiceEndpoint","id":"EID46952b3a-2737-4958-9b6e-3292c973de3b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID4a6ec102-7efe-48ca-a296-3c33a62443ab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID4a6ec102-7efe-48ca-a296-3c33a62443ab"}},{"type":"ServiceEndpoint","id":"EIDc7bbe414-c002-4252-b852-3beb01b648a8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa755ef33-0344-4c6c-8ac3-d733bc8a87a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDa755ef33-0344-4c6c-8ac3-d733bc8a87a8"}},{"type":"GetParameter","id":"EID916cf227-9e96-4b60-8191-64855c3dfd69","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID842e3c1a-6893-43aa-8555-364964841c70","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDf6ad014b-9c04-4981-bdfb-3b448ea0bd2e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDf6ad014b-9c04-4981-bdfb-3b448ea0bd2e"}},{"type":"Message","id":"EIDa015d101-9170-4d84-a2b4-b878a42093ed","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDa015d101-9170-4d84-a2b4-b878a42093ed"}},{"type":"ServiceResponse","id":"EID86064597-b656-466f-8f25-4e43b5244134","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID86064597-b656-466f-8f25-4e43b5244134"}},{"type":"ServiceResponse","id":"EID7c33966d-a89f-4746-8556-391b0df5a41f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID7c33966d-a89f-4746-8556-391b0df5a41f"}},{"type":"ServiceResponse","id":"EID2465ef15-2aea-4a59-a834-6bf268627bc7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID2465ef15-2aea-4a59-a834-6bf268627bc7"}},{"type":"ServiceResponse","id":"EIDc13adb6e-dc9b-49bb-ad71-8d3843e751d3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDc13adb6e-dc9b-49bb-ad71-8d3843e751d3"}},{"type":"ServiceResponse","id":"EIDc77b08ff-814e-4d52-be4d-c623e8952207","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDc77b08ff-814e-4d52-be4d-c623e8952207"}},{"type":"Message","id":"EIDd7ab7c9c-88a2-4217-93a1-37a87f8aaa1a","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDd7ab7c9c-88a2-4217-93a1-37a87f8aaa1a"}},{"type":"ServiceEndpoint","id":"EID9807e35c-b252-4398-afb4-fbd9e47a6735","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID25366afa-0bbf-4e36-b5d3-0be1cf466e0b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID979ad17b-aeaa-4392-a893-7529ec1a4649","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID1ebc75e3-9076-4be4-b36b-d5e19679b8ae","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID1ebc75e3-9076-4be4-b36b-d5e19679b8ae"}},{"type":"Message","id":"EIDee00e56b-7bf2-404a-80ea-bb30cc30ce54","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDee00e56b-7bf2-404a-80ea-bb30cc30ce54"}},{"type":"Message","id":"EID191e5f12-04fb-49b9-b33c-b177682fae05","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID191e5f12-04fb-49b9-b33c-b177682fae05"}},{"type":"GetParameter","id":"EIDc6b64c3c-dd0c-4af9-b7d3-cf22d3ad9874","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDf2d66dea-acf5-4717-aab4-81d26a79edc5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID048cc44c-0d25-4148-8418-9d5c027008a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID048cc44c-0d25-4148-8418-9d5c027008a1"}},{"type":"GetParameter","id":"EID086ebde0-b72d-4db5-9aab-02b6060f1931","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID1ddbf62a-d964-476f-abe5-33ab64dd0273","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID1ddbf62a-d964-476f-abe5-33ab64dd0273"}},{"type":"Error","id":"EID7ddbf983-731c-45ad-bb94-c1db8a19ef05","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID7ddbf983-731c-45ad-bb94-c1db8a19ef05"}},{"type":"Message","id":"EID471b940d-0aa6-49a6-8c0e-f36755968302","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID471b940d-0aa6-49a6-8c0e-f36755968302"}},{"type":"GetParameter","id":"EIDdbb84d61-f662-4d43-b5a6-0b19883217d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID75f6b1a5-ec6b-4c86-9d45-69bf6b1ce3da","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID75f6b1a5-ec6b-4c86-9d45-69bf6b1ce3da"}},{"type":"Error","id":"EID51561359-0b7a-4dfe-8bc9-a4555342e66a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID51561359-0b7a-4dfe-8bc9-a4555342e66a"}},{"type":"ServiceResponse","id":"EIDe3ff2130-d562-4307-9eaf-6dc0b62898f9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDe3ff2130-d562-4307-9eaf-6dc0b62898f9"}},{"type":"ServiceEndpoint","id":"EID2103bf3d-9381-4819-ab83-6c08a4547641","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe6ec0042-bf38-4e80-ba8f-0a1fada2b254","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDe6ec0042-bf38-4e80-ba8f-0a1fada2b254"}},{"type":"Error","id":"EIDb30c0f8a-474a-415a-86b2-ecc77684192c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDb30c0f8a-474a-415a-86b2-ecc77684192c"}},{"type":"ServiceResponse","id":"EIDcbf6b681-31ec-4fb1-8915-095db5f4f9dd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDcbf6b681-31ec-4fb1-8915-095db5f4f9dd"}},{"type":"ServiceResponse","id":"EID6170ba2c-f694-4295-a286-5175006aaef5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID6170ba2c-f694-4295-a286-5175006aaef5"}},{"type":"GetParameter","id":"EID3076e6a4-d684-424c-b89e-d09f71274964","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd7936df7-6e63-4a66-8ccf-91ee7b225507","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDcad350de-8e47-479f-8bb4-9b44830190be","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID66c77cd4-1057-4066-a11e-c5cb793e3960","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDddf959a6-8338-433d-885c-73913505c2c6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDddf959a6-8338-433d-885c-73913505c2c6"}},{"type":"GetParameter","id":"EIDebee8840-6fcd-41d4-a1b8-52cfe89d8629","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID57207dc0-a3a5-4e82-8006-d54ddc2b318d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID57207dc0-a3a5-4e82-8006-d54ddc2b318d"}},{"type":"ServiceResponse","id":"EID4a1c5545-7179-4b4b-a390-ca6c10b44898","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID4a1c5545-7179-4b4b-a390-ca6c10b44898"}},{"type":"Error","id":"EID19e1e3eb-954b-4d75-a724-2bda9c97279d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID19e1e3eb-954b-4d75-a724-2bda9c97279d"}},{"type":"ServiceResponse","id":"EID95315780-e267-4b20-8fcc-f55d6e0b334b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID95315780-e267-4b20-8fcc-f55d6e0b334b"}},{"type":"GetParameter","id":"EIDb38699d3-f972-4878-9cf7-4fc66afe649a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3eb18a88-eae4-494a-bb45-f7c0f4b51a71","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID09ede726-8fe4-434c-8a33-ad0c6cd70001","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID09ede726-8fe4-434c-8a33-ad0c6cd70001"}},{"type":"Message","id":"EID1d687e7a-2b30-40f1-bdc7-545325312204","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID1d687e7a-2b30-40f1-bdc7-545325312204"}},{"type":"Message","id":"EID52792a17-e45f-4191-a90d-850fa1dd67f2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID52792a17-e45f-4191-a90d-850fa1dd67f2"}},{"type":"GetParameter","id":"EID01edbd88-0aca-4391-8258-9103d352c44e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID860dcca7-0adc-424b-9945-526f47e6d673","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDf8a49b49-6b4f-456b-9a83-9678ac0fc097","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDf8a49b49-6b4f-456b-9a83-9678ac0fc097"}},{"type":"ServiceEndpoint","id":"EID1a7bfa25-2dc6-49e2-b99a-dcfff1af53d8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDc1b76df8-4774-409a-a18e-6a1001c35c31","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID1a128579-e9fd-4e73-b010-f709d998504d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID27cc742b-89d1-4846-8db3-ecc4dc70270c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5c01a0e3-32e9-4bd6-8b7c-0a1333bb341a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID9346bb43-398f-4be9-8b86-e5e072e20b71","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6ccde222-ee2c-4134-bacc-b1523462eb14","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID6ccde222-ee2c-4134-bacc-b1523462eb14"}},{"type":"ServiceResponse","id":"EID56dd5aed-e652-4ec7-9f26-6491efdda884","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID56dd5aed-e652-4ec7-9f26-6491efdda884"}},{"type":"Error","id":"EIDd5891a9e-9abe-4f1d-beec-115fe413f80f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDd5891a9e-9abe-4f1d-beec-115fe413f80f"}},{"type":"GetParameter","id":"EID294cf2fa-5c7c-4b7e-99ec-8e5d7a71a9c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDed9d825d-f01b-4125-9774-b0afa7bbbd2b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDed9d825d-f01b-4125-9774-b0afa7bbbd2b"}},{"type":"ServiceResponse","id":"EID7ddcb4cf-f169-4017-81f8-d9e02e7e8e7a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID7ddcb4cf-f169-4017-81f8-d9e02e7e8e7a"}},{"type":"ServiceResponse","id":"EIDcfc89644-0319-43b8-80a7-44dafa8f1b4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDcfc89644-0319-43b8-80a7-44dafa8f1b4f"}},{"type":"ServiceResponse","id":"EIDa1be3c1b-46d6-4059-8b87-d8ca29038945","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDa1be3c1b-46d6-4059-8b87-d8ca29038945"}},{"type":"ServiceEndpoint","id":"EIDe2312b63-7eea-4344-8b8a-49c7e5acbd06","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID48ec6a84-049b-4d3c-8b21-cc361ea1b2e8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDdec08cbd-5d90-4a2a-a0ff-d532d4fe9b94","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDdec08cbd-5d90-4a2a-a0ff-d532d4fe9b94"}},{"type":"GetParameter","id":"EID5df16fb0-c424-431f-8a53-314a7dcf7621","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf6740ffc-ec95-43ec-b074-b54903beb6a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID8191445b-4973-440a-8258-53294f78b7a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID68a26ef8-7451-4c5b-ae8a-4b28b556c409","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID0d4494d1-224d-40b7-aadd-7cf4f43ab1cc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID64f4626b-0989-45f3-b729-c50b4ec587fb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID64f4626b-0989-45f3-b729-c50b4ec587fb"}},{"type":"ServiceEndpoint","id":"EIDee6dd359-48e7-4741-8514-482f729bba9d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID037a1140-c661-4d8c-9b37-07fc2a9609d0","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID037a1140-c661-4d8c-9b37-07fc2a9609d0"}},{"type":"Message","id":"EIDf6560ae5-d3c9-40d8-be79-841d0c04395c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDf6560ae5-d3c9-40d8-be79-841d0c04395c"}},{"type":"Message","id":"EID2556f834-c4a3-43fb-b8bf-11f2f241f7f6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID2556f834-c4a3-43fb-b8bf-11f2f241f7f6"}},{"type":"ServiceEndpoint","id":"EID7df0e65e-4906-421a-9e56-90585596c117","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID02fc067b-7b98-4906-a36b-148e88b859cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID02fc067b-7b98-4906-a36b-148e88b859cd"}},{"type":"ServiceEndpoint","id":"EID3ef91b42-a19c-45bb-9ac6-fb2be1f3c5ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID720df45e-0bdc-4000-bdea-9d53e5c6c996","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfda50a9b-a4d9-44b2-bf5b-8b40d31e9e3a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6363acbe-7109-4c55-b613-88e47df5aa65","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID6363acbe-7109-4c55-b613-88e47df5aa65"}},{"type":"ServiceEndpoint","id":"EID2c1c8d03-75e7-4026-91c1-d3096842e1b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDb9e57fe3-5204-4d77-bd9c-462aa7be1444","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDb9e57fe3-5204-4d77-bd9c-462aa7be1444"}},{"type":"Error","id":"EID12180ee5-f5f2-48bd-b8b1-5359133b1fc2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID12180ee5-f5f2-48bd-b8b1-5359133b1fc2"}},{"type":"GetParameter","id":"EIDda97b4f7-cf02-48d1-b367-fabe8adc2ecc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDfc493ce9-d550-4e3b-9eb9-b73026a9cb3b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDfc493ce9-d550-4e3b-9eb9-b73026a9cb3b"}},{"type":"ServiceResponse","id":"EIDef78c21c-5798-4e84-ba76-e4157746924d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDef78c21c-5798-4e84-ba76-e4157746924d"}},{"type":"ServiceEndpoint","id":"EID3a96fd87-b148-49e7-90a3-732158fff243","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID46e7c85b-223d-41b2-a6c1-dc73e45f9b14","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID46e7c85b-223d-41b2-a6c1-dc73e45f9b14"}},{"type":"LogFile","id":"EID7a059cda-2223-4044-8449-635c34866df4","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EID7a059cda-2223-4044-8449-635c34866df4"}},{"type":"GetParameter","id":"EIDb13d69ee-1ab9-45fe-87d2-983129a2e220","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDe2ef91d7-34f4-43e2-b34c-4eca20946cc1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID5eed026c-ff73-4200-bbea-48d31edbe180","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2622a71c-c7fd-4181-a6c7-136ae2900c38","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfc249b9f-f282-454e-a4bf-abda02f4dd4c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8e9cfa74-a1ea-4070-ad28-b4cbb7fa1237/Attachments/EIDfc249b9f-f282-454e-a4bf-abda02f4dd4c"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:14:39Z","duration":11427,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:15:03.132 [print] EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:15:03.132 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:15:03.133 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:15:03.133 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:15:03.133 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:15:03.133 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:15:03.133 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa0dd5ab7-2a03-4cdd-b5b7-877e15e1ac0f/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:15:03.139 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:15:03.139 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.465
* print "testing url:" + metadata.url 0.000
11:08:48.360 [print] testing url:https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.464
11:08:48.361 request:
1 > HEAD https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:48.825 response time in milliseconds: 464.01
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 6639
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:48 GMT
1 < Etag: "3504314243"
1 < Last-Modified: Tue, 27 Oct 2020 19:17:09 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
0.390
Given url metadata.url 0.000
When method HEAD 0.389
11:08:48.829 request:
1 > HEAD https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:49.218 response time in milliseconds: 388.90
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 6639
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:49 GMT
1 < Etag: "3504314243"
1 < Last-Modified: Tue, 27 Oct 2020 19:17:09 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.481
* print "testing url:" + metadata.url 0.000
11:06:35.131 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.481
11:06:35.134 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:35.613 response time in milliseconds: 478.23
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 5631
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:35 GMT
1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1"
1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422344C5211CD9
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.410
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.410
11:06:35.627 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:36.029 response time in milliseconds: 401.33
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 5631
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:35 GMT
1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1"
1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422344DDD5D19C
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:06:36.030 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.891
* print "testing url:" + metadata.url 0.000
11:11:26.421 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 1.891
11:11:26.422 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:28.313 response time in milliseconds: 1890.77
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 5631
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:11:27 GMT
1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1"
1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 16422388B59FC9B9
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.794
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.794
11:11:28.318 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:29.112 response time in milliseconds: 793.66
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 5631
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:11:28 GMT
1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1"
1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642238914FD5CC6
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:11:29.113 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.402
* print "testing url:" + metadata.url 0.000
11:04:51.582 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.402
11:04:51.583 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:51.983 response time in milliseconds: 398.96
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:51 GMT
1 < ETag: "1840e-5af58ad506ad0-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.421
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.419
11:04:51.994 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:52.411 response time in milliseconds: 416.98
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:04:52 GMT
1 < ETag: "1840e-5af58ad506ad0-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:04:52.414 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:24.895
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:55.028 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.904
11:16:55.029 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:17:01.930 response time in milliseconds: 6149.22
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:17:01 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:16:58 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/8cad374d-433d-40fa-ae43-d99543aa6b86.json","testRuns":{"TestRun":{"id":"EID8cad374d-433d-40fa-ae43-d99543aa6b86","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:58.308Z","testTasks":{"TestTask":{"id":"EID391cc7bb-7e65-4b22-9bd4-a143c780b9ef","parent":{"ref":"EID8cad374d-433d-40fa-ae43-d99543aa6b86"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID11a5285f-41a7-4bc2-8e04-2dd2e7a26e9d"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID11a5285f-41a7-4bc2-8e04-2dd2e7a26e9d","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:16:55.474Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:16:57.72Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:17:01.933 [print] EID8cad374d-433d-40fa-ae43-d99543aa6b86
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:17:01.933 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:17:01.934 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:17:01.934 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/8cad374d-433d-40fa-ae43-d99543aa6b86.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:17:01.934 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:17:01.934 [print] statuspath TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86
* print 'progresspath ', progresspath 0.000
11:17:01.934 [print] progresspath  TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
Given path progresspath 0.000
When method GET 0.551
11:17:01.934 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:02.485 response time in milliseconds: 550.41
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:17:02 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:17:02.485 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)",
    "28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:16:58 - Preparing 1 Test Task:",
    "28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)",
    "28.10.2020 11:16:58 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:16:58 -  with parameters: ",
    "28.10.2020 11:16:58 - etf.testcases = *",
    "28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:16:58 - Setting state to CREATED",
    "28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z",
    "28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:17:00 - Project Properties: ",
    "28.10.2020 11:17:00 - etf.testcases - * ",
    "28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:17:00 - username -  ",
    "28.10.2020 11:17:00 - authUser -  ",
    "28.10.2020 11:17:00 - authMethod - basic ",
    "28.10.2020 11:17:00 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:13.909
11:17:02.486 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:02.996 response time in milliseconds: 510.09
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:17:02 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized"]}

11:17:03.006 retry condition not satisfied: response.val == response.max
11:17:03.006 sleeping before retry #1
11:17:08.007 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:08.537 response time in milliseconds: 527.07
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:17:08 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"68","max":"69","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:17:08.538 retry condition not satisfied: response.val == response.max
11:17:08.538 sleeping before retry #2
11:17:13.539 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:14.065 response time in milliseconds: 526.08
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:17:14 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:17:14.066 retry condition not satisfied: response.val == response.max
11:17:14.072 sleeping before retry #3
11:17:19.073 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:19.586 response time in milliseconds: 513.35
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:17:19 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:17:19.587 retry condition not satisfied: response.val == response.max
11:17:19.587 sleeping before retry #4
11:17:24.588 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:25.102 response time in milliseconds: 514.20
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:17:25 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:17:25.103 retry condition not satisfied: response.val == response.max
11:17:25.103 sleeping before retry #5
11:17:30.104 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:30.623 response time in milliseconds: 518.12
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:17:30 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:17:30.633 retry condition not satisfied: response.val == response.max
11:17:30.633 sleeping before retry #6
11:17:35.633 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:36.150 response time in milliseconds: 516.65
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:17:36 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:17:36.151 retry condition not satisfied: response.val == response.max
11:17:36.151 sleeping before retry #7
11:17:41.151 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:41.675 response time in milliseconds: 523.08
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:17:41 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:17:41.680 retry condition not satisfied: response.val == response.max
11:17:41.681 sleeping before retry #8
11:17:46.681 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:47.204 response time in milliseconds: 522.29
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:17:47 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:17:45 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:17:47.210 retry condition not satisfied: response.val == response.max
11:17:47.210 sleeping before retry #9
11:17:52.211 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:52.726 response time in milliseconds: 514.68
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:17:52 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:17:45 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:17:47 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:17:52.726 retry condition not satisfied: response.val == response.max
11:17:52.726 sleeping before retry #10
11:17:57.727 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:58.237 response time in milliseconds: 509.56
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:17:58 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:17:45 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:17:47 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:17:58.238 retry condition not satisfied: response.val == response.max
11:17:58.238 sleeping before retry #11
11:18:03.239 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:18:03.821 response time in milliseconds: 581.98
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:18:03 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:17:45 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:17:47 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:18:03.822 retry condition not satisfied: response.val == response.max
11:18:03.822 sleeping before retry #12
11:18:08.822 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:18:09.377 response time in milliseconds: 554.08
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:18:09 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:58 UTC 2020)","28.10.2020 11:16:58 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:58 - Preparing 1 Test Task:","28.10.2020 11:16:58 -  TestTask 1 (391cc7bb-7e65-4b22-9bd4-a143c780b9ef)","28.10.2020 11:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:58 -  with parameters: ","28.10.2020 11:16:58 - etf.testcases = *","28.10.2020 11:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:58 - Setting state to CREATED","28.10.2020 11:16:58 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:58 - Starting TestRun.8cad374d-433d-40fa-ae43-d99543aa6b86 at 2020-10-28T11:17:00Z","28.10.2020 11:17:00 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:17:00 - Project Properties: ","28.10.2020 11:17:00 - etf.testcases - * ","28.10.2020 11:17:00 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:17:00 - username -  ","28.10.2020 11:17:00 - authUser -  ","28.10.2020 11:17:00 - authMethod - basic ","28.10.2020 11:17:00 - TestRunTask initialized","28.10.2020 11:17:07 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:17:45 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:17:47 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:18:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:18:09.378 retry condition not satisfied: response.val == response.max
11:18:09.378 sleeping before retry #13
11:18:14.379 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:18:16.394 response time in milliseconds: 2015.46
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:18:16 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:18:16.395 retry condition satisfied
* print response 0.000
11:18:16.395 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.521
11:18:16.396 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:18:19.913 response time in milliseconds: 2459.35
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Cache-Control: public, max-age=120
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:18:18 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Last-Modified: Wed, 28 Oct 2020 11:18:13 GMT
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/8cad374d-433d-40fa-ae43-d99543aa6b86.json","testRuns":{"TestRun":{"id":"EID8cad374d-433d-40fa-ae43-d99543aa6b86","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:58.308Z","testTasks":{"TestTask":{"id":"EID391cc7bb-7e65-4b22-9bd4-a143c780b9ef","parent":{"ref":"EID8cad374d-433d-40fa-ae43-d99543aa6b86"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID11a5285f-41a7-4bc2-8e04-2dd2e7a26e9d"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID98b9bc2e-08a7-49fb-9e46-21b3e464d897"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID11a5285f-41a7-4bc2-8e04-2dd2e7a26e9d","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:16:55.474Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:16:57.72Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID98b9bc2e-08a7-49fb-9e46-21b3e464d897","testObject":{"ref":"EID11a5285f-41a7-4bc2-8e04-2dd2e7a26e9d"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eece5e1-0175-1000-da13-a0604720f795","testCaseResults":{"TestCaseResult":[{"id":"EID6eece5e1-0175-1000-da7f-ce3b299dbeb3","testStepResults":{"TestStepResult":[{"id":"EID6eece5e2-0175-1000-c509-a661a2ef5966","parent":{"ref":"EID6eece5e1-0175-1000-da7f-ce3b299dbeb3"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:17:00Z","duration":19,"status":"PASSED"},{"id":"EID6eece5f5-0175-1000-7262-aac9972497e0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eece7fd-0175-1000-f706-f56021393a71","parent":{"ref":"EID6eece5f5-0175-1000-7262-aac9972497e0"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eece7fd-0175-1000-bbfe-07a795b63597","parent":{"ref":"EID6eece5f5-0175-1000-7262-aac9972497e0"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eece7fd-0175-1000-2678-68bba7122e3d","parent":{"ref":"EID6eece5f5-0175-1000-7262-aac9972497e0"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eece7fd-0175-1000-9bed-36226a7aec15","parent":{"ref":"EID6eece5f5-0175-1000-7262-aac9972497e0"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd08f87b-064c-42d2-87f9-f734b9b772e7"},{"ref":"EID79a34bb9-54d4-4bdf-9c91-3dce14e14126"},{"ref":"EID866a119e-7a08-4029-af94-a859ece133ab"}]},"parent":{"ref":"EID6eece5e1-0175-1000-da7f-ce3b299dbeb3"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:17:00Z","duration":331,"status":"PASSED"}]},"parent":{"ref":"EID6eece5e1-0175-1000-da13-a0604720f795"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:17:00Z","duration":540,"status":"PASSED"},{"id":"EID6eece7fd-0175-1000-ed0e-f3485ea8b631","testStepResults":{"TestStepResult":{"id":"EID6eece7fd-0175-1000-d95b-7cab38494e43","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eece99c-0175-1000-be92-5ef7f92d9936","parent":{"ref":"EID6eece7fd-0175-1000-d95b-7cab38494e43"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eece99c-0175-1000-0971-bfa73e7587f4","parent":{"ref":"EID6eece7fd-0175-1000-d95b-7cab38494e43"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eece99c-0175-1000-20f3-d3d934e6919a","parent":{"ref":"EID6eece7fd-0175-1000-d95b-7cab38494e43"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcf9fbd1e-7e1b-4df4-8616-2d5d6aabf9c1"},{"ref":"EID5caf2af9-8239-4668-9922-8292d970ebbd"},{"ref":"EIDdc3eb5fa-1ba7-4488-abe2-b85b580e08c4"}]},"parent":{"ref":"EID6eece7fd-0175-1000-ed0e-f3485ea8b631"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:17:01Z","duration":324,"status":"PASSED"}},"parent":{"ref":"EID6eece5e1-0175-1000-da13-a0604720f795"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:17:01Z","duration":415,"status":"PASSED"}]},"parent":{"ref":"EID98b9bc2e-08a7-49fb-9e46-21b3e464d897"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:17:00Z","duration":955,"status":"PASSED"},{"id":"EID6eece99c-0175-1000-73b5-638716c5986b","testCaseResults":{"TestCaseResult":[{"id":"EID6eece99c-0175-1000-e38d-5a4192237537","testStepResults":{"TestStepResult":[{"id":"EID6eece99c-0175-1000-99aa-bc14df10311f","parent":{"ref":"EID6eece99c-0175-1000-e38d-5a4192237537"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:17:01Z","duration":324,"status":"PASSED"},{"id":"EID6eece99c-0175-1000-e89a-cc47f39b3bd4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecea36-0175-1000-ae5e-9d1057243cc1","parent":{"ref":"EID6eece99c-0175-1000-e89a-cc47f39b3bd4"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eecea36-0175-1000-d3cb-ea765f2887ca","parent":{"ref":"EID6eece99c-0175-1000-e89a-cc47f39b3bd4"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eecea36-0175-1000-389f-dffad8f3527d","parent":{"ref":"EID6eece99c-0175-1000-e89a-cc47f39b3bd4"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eecea36-0175-1000-1296-87bd793394ea","parent":{"ref":"EID6eece99c-0175-1000-e89a-cc47f39b3bd4"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6eecea36-0175-1000-bdea-f330ffd99980","parent":{"ref":"EID6eece99c-0175-1000-e89a-cc47f39b3bd4"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:17:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdfa67c6e-ecd7-4955-8558-3bafff14e090"},{"ref":"EID2f02c971-95d5-4d35-8994-668d17f3ac7a"},{"ref":"EID98c74e01-72a0-414a-82a5-538dd7b1a20e"}]},"parent":{"ref":"EID6eece99c-0175-1000-e38d-5a4192237537"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:17:01Z","duration":36,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:17:01Z","duration":154,"status":"PASSED"},{"id":"EID6eecea37-0175-1000-e1eb-00a91191b19e","testStepResults":{"TestStepResult":[{"id":"EID6eecea37-0175-1000-6996-c63ce881e0ba","attachments":{"attachment":[{"ref":"EIDb70d1cde-de41-42cb-a0f6-2686fc911ffa"},{"ref":"EIDea78415d-d834-44f7-aa08-8cd3e5c595cd"}]},"parent":{"ref":"EID6eecea37-0175-1000-e1eb-00a91191b19e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:17:01Z","duration":84,"status":"PASSED"},{"id":"EID6eecead3-0175-1000-505c-71d5fa80a64d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecebb6-0175-1000-7cf3-a768458ceee4","parent":{"ref":"EID6eecead3-0175-1000-505c-71d5fa80a64d"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecebb6-0175-1000-96f1-61a0dbe6af04","parent":{"ref":"EID6eecead3-0175-1000-505c-71d5fa80a64d"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecebb6-0175-1000-1701-e692720f4ec4","parent":{"ref":"EID6eecead3-0175-1000-505c-71d5fa80a64d"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecebb6-0175-1000-44e8-d1211c65eb52","parent":{"ref":"EID6eecead3-0175-1000-505c-71d5fa80a64d"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6a9f9437-e6db-44c0-bae9-ec78deb6a95e"},{"ref":"EID6caebae8-4416-40f7-aeff-348f5132d2a1"},{"ref":"EID95c9f4f1-a719-426b-9c91-f61f2f9b4d53"}]},"parent":{"ref":"EID6eecea37-0175-1000-e1eb-00a91191b19e"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:17:01Z","duration":122,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:17:01Z","duration":383,"status":"PASSED"},{"id":"EID6eecebb6-0175-1000-c66f-514512691baf","testStepResults":{"TestStepResult":[{"id":"EID6eecebb6-0175-1000-9f0a-e857c95c6872","attachments":{"attachment":[{"ref":"EID795aa4ee-34ed-482b-97bc-798b34b781ef"},{"ref":"EID90fc0467-ecc8-4c61-b179-83d5ca57c7cc"}]},"parent":{"ref":"EID6eecebb6-0175-1000-c66f-514512691baf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:17:02Z","duration":563,"status":"PASSED"},{"id":"EID6eecee12-0175-1000-ebe7-dc075a2f924f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecefa6-0175-1000-a8db-b1a57cd829af","parent":{"ref":"EID6eecee12-0175-1000-ebe7-dc075a2f924f"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecefa6-0175-1000-56b7-0cef5b1869a6","parent":{"ref":"EID6eecee12-0175-1000-ebe7-dc075a2f924f"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecefa6-0175-1000-b879-987d1f18d304","parent":{"ref":"EID6eecee12-0175-1000-ebe7-dc075a2f924f"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:17:03Z","duration":1,"status":"PASSED"},{"id":"EID6eecefa7-0175-1000-af7c-fb79c1533852","parent":{"ref":"EID6eecee12-0175-1000-ebe7-dc075a2f924f"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecefa7-0175-1000-4c58-9f5a6eaeda02","parent":{"ref":"EID6eecee12-0175-1000-ebe7-dc075a2f924f"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc40611e1-122e-4508-bb15-1780ffbade7f"},{"ref":"EID98f585eb-0c4a-42e4-80bd-d1a82fe8d420"},{"ref":"EID03979b6e-6926-454b-badd-e460c34d6eb3"}]},"parent":{"ref":"EID6eecebb6-0175-1000-c66f-514512691baf"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:17:02Z","duration":276,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:17:02Z","duration":1009,"status":"PASSED"},{"id":"EID6eecefa7-0175-1000-3d92-f99d85bd6a12","testStepResults":{"TestStepResult":[{"id":"EID6eecefa7-0175-1000-67a6-80f200e260f6","attachments":{"attachment":[{"ref":"EIDda9fb6a5-d73a-4b66-8e3e-4363d3a40204"},{"ref":"EID0d634d0b-4d90-40b0-a331-7e9a2232d0e2"}]},"parent":{"ref":"EID6eecefa7-0175-1000-3d92-f99d85bd6a12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:17:03Z","duration":118,"status":"PASSED"},{"id":"EID6eecf047-0175-1000-b8e9-3a1e9a218988","parent":{"ref":"EID6eecefa7-0175-1000-3d92-f99d85bd6a12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:17:03Z","duration":7,"status":"PASSED"},{"id":"EID6eecf04f-0175-1000-be33-30abda0a204a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf105-0175-1000-1ce8-08219f7ae240","parent":{"ref":"EID6eecf04f-0175-1000-be33-30abda0a204a"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf105-0175-1000-e67c-6e4f651d022b","parent":{"ref":"EID6eecf04f-0175-1000-be33-30abda0a204a"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf105-0175-1000-9674-63fece42bef1","parent":{"ref":"EID6eecf04f-0175-1000-be33-30abda0a204a"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf105-0175-1000-0732-60fbe94f546c","parent":{"ref":"EID6eecf04f-0175-1000-be33-30abda0a204a"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID453ea488-144a-4e32-80a3-a5653435e1ba"},{"ref":"EID567ed727-ab44-45c3-9784-b752788495b2"},{"ref":"EID968ef8e8-a137-4985-8eaf-eb998706ebcc"}]},"parent":{"ref":"EID6eecefa7-0175-1000-3d92-f99d85bd6a12"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:17:03Z","duration":94,"status":"PASSED"},{"id":"EID6eecf105-0175-1000-88e1-195b5d5cc801","attachments":{"attachment":{"ref":"EIDb380608b-d9fd-4fac-b698-c5f93d7e6c64"}},"parent":{"ref":"EID6eecefa7-0175-1000-3d92-f99d85bd6a12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:17:03Z","duration":1,"status":"PASSED"},{"id":"EID6eecf113-0175-1000-a076-6d5e3e36b4a9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf1c7-0175-1000-7092-a273a98c464e","parent":{"ref":"EID6eecf113-0175-1000-a076-6d5e3e36b4a9"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:17:03Z","duration":1,"status":"PASSED"},{"id":"EID6eecf1c8-0175-1000-3774-bb1f68fe1aaf","parent":{"ref":"EID6eecf113-0175-1000-a076-6d5e3e36b4a9"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf1c8-0175-1000-dfad-6cbdedb44e2b","parent":{"ref":"EID6eecf113-0175-1000-a076-6d5e3e36b4a9"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf1c8-0175-1000-900c-1d9ca1e5a51b","parent":{"ref":"EID6eecf113-0175-1000-a076-6d5e3e36b4a9"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf1c8-0175-1000-868b-52ae8fc116a8","parent":{"ref":"EID6eecf113-0175-1000-a076-6d5e3e36b4a9"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID45c41682-fd77-490b-b608-e8da68c56faa"},{"ref":"EID5f46832c-c749-4a83-9916-c6ba8f97167a"},{"ref":"EIDb78f1b99-924f-4d91-98a2-2e932c29da10"}]},"parent":{"ref":"EID6eecefa7-0175-1000-3d92-f99d85bd6a12"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:17:03Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:17:03Z","duration":556,"status":"PASSED"},{"id":"EID6eecf1d3-0175-1000-7b3f-53dc86e00c40","testStepResults":{"TestStepResult":[{"id":"EID6eecf1d3-0175-1000-d82e-5ed76f390116","attachments":{"attachment":[{"ref":"EID58ca5bfb-63fb-4deb-9901-dfae3ccd3902"},{"ref":"EIDa1eb3534-fdce-433e-ae34-df9663a49d89"}]},"parent":{"ref":"EID6eecf1d3-0175-1000-7b3f-53dc86e00c40"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:17:03Z","duration":544,"status":"PASSED"},{"id":"EID6eecf470-0175-1000-fd65-d3bea0d9df4d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf5a8-0175-1000-5fb4-2c31955814c9","parent":{"ref":"EID6eecf470-0175-1000-fd65-d3bea0d9df4d"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf5a8-0175-1000-0bc1-9472eb54efaf","parent":{"ref":"EID6eecf470-0175-1000-fd65-d3bea0d9df4d"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf5a8-0175-1000-d82e-77c17b80f31f","parent":{"ref":"EID6eecf470-0175-1000-fd65-d3bea0d9df4d"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf5a8-0175-1000-7182-8c2b73c48eb4","parent":{"ref":"EID6eecf470-0175-1000-fd65-d3bea0d9df4d"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID840c839b-eb55-4549-a180-4669dc1bb901"},{"ref":"EIDaf6a1970-e8e1-4849-b5f7-74adda5e9930"},{"ref":"EID8111cdf6-db9a-4956-b3ec-8fa221303ff2"}]},"parent":{"ref":"EID6eecf1d3-0175-1000-7b3f-53dc86e00c40"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:17:04Z","duration":216,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:17:03Z","duration":992,"status":"PASSED"},{"id":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1","testStepResults":{"TestStepResult":[{"id":"EID6eecf5b4-0175-1000-9797-d511fdbd8170","attachments":{"attachment":[{"ref":"EIDdefa1412-7def-411e-953c-4f231958c3b7"},{"ref":"EID186f56c0-a5b3-4403-abd7-942801e65b46"}]},"parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:17:04Z","duration":121,"status":"PASSED"},{"id":"EID6eecf658-0175-1000-dbfb-c9af92a1f928","parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf658-0175-1000-2c39-ad7a9cd6cee4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf6e0-0175-1000-07b6-13c757ac9d63","parent":{"ref":"EID6eecf658-0175-1000-2c39-ad7a9cd6cee4"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf6e0-0175-1000-ae16-c75c8346cc5b","parent":{"ref":"EID6eecf658-0175-1000-2c39-ad7a9cd6cee4"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf6e0-0175-1000-5a7f-9f675e0df716","parent":{"ref":"EID6eecf658-0175-1000-2c39-ad7a9cd6cee4"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6eecf6e0-0175-1000-0ec2-9afe9f1a0c17","parent":{"ref":"EID6eecf658-0175-1000-2c39-ad7a9cd6cee4"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:17:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf5cb8533-b204-4070-a45c-cb11484a27e8"},{"ref":"EID6f937cab-eed2-4874-b227-110eb9b7de41"},{"ref":"EID9dbf1235-5db1-4183-a2f5-b4425d4876e5"}]},"parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:17:04Z","duration":45,"status":"PASSED"},{"id":"EID6eecf6e0-0175-1000-b1fb-0f02ddd1fec5","attachments":{"attachment":{"ref":"EID9db8be32-e05c-4ff9-9cac-3ac687ad9820"}},"parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:17:04Z","duration":1,"status":"PASSED"},{"id":"EID6eecf6ee-0175-1000-4fa9-b0eead98122d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf792-0175-1000-1a2d-7ac1b0fc3c52","parent":{"ref":"EID6eecf6ee-0175-1000-4fa9-b0eead98122d"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6eecf792-0175-1000-b7ac-1737f743f3ad","parent":{"ref":"EID6eecf6ee-0175-1000-4fa9-b0eead98122d"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6eecf792-0175-1000-55ec-8ade738074c4","parent":{"ref":"EID6eecf6ee-0175-1000-4fa9-b0eead98122d"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a52738a-1779-49af-95fb-24f2520f3abe"},{"ref":"EID9b45cada-cb64-434d-9f91-e9fc0bbd33d4"},{"ref":"EID0c729bb7-a357-4c6f-8830-98f69fb1ea09"}]},"parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:17:04Z","duration":107,"status":"PASSED"},{"id":"EID6eecf792-0175-1000-04cd-75d31d254405","attachments":{"attachment":{"ref":"EID0f319149-b271-4f81-b2ae-5fa376e2ecbf"}},"parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6eecf7ec-0175-1000-5c63-632de4f1f049","attachments":{"attachment":{"ref":"EIDf87046dd-b080-482f-803b-38a99101e451"}},"parent":{"ref":"EID6eecf5b4-0175-1000-f17a-b7566ffa87c1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:17:04Z","duration":580,"status":"PASSED"},{"id":"EID6eecf7f8-0175-1000-806d-765d13e7f4a6","testStepResults":{"TestStepResult":[{"id":"EID6eecf7f8-0175-1000-4bc2-340054d29c7d","attachments":{"attachment":[{"ref":"EID140a3f4c-373a-4010-8386-4c62af1ba226"},{"ref":"EID70f27343-a031-470f-a8ac-8f815a65193d"}]},"parent":{"ref":"EID6eecf7f8-0175-1000-806d-765d13e7f4a6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:17:05Z","duration":400,"status":"PASSED"},{"id":"EID6eecf9ca-0175-1000-c472-730a51280ae7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecfa5e-0175-1000-1e15-842bb13b8eec","parent":{"ref":"EID6eecf9ca-0175-1000-c472-730a51280ae7"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6eecfa5e-0175-1000-27fb-a0d92528502a","parent":{"ref":"EID6eecf9ca-0175-1000-c472-730a51280ae7"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6eecfa5e-0175-1000-977f-8864d32cabd5","parent":{"ref":"EID6eecf9ca-0175-1000-c472-730a51280ae7"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6eecfa5e-0175-1000-81cf-29097d81603d","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eecf9ca-0175-1000-c472-730a51280ae7"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:17:05Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID4f33a761-bdd1-4771-aedc-3dd136708cd6"},{"ref":"EIDb91da086-981f-48c1-91c8-9ed05702b61f"},{"ref":"EID2828722c-3d8f-44b1-a61f-368acffb058b"}]},"parent":{"ref":"EID6eecf7f8-0175-1000-806d-765d13e7f4a6"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:17:05Z","duration":56,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:17:05Z","duration":614,"status":"PASSED_MANUAL"},{"id":"EID6eecfa5f-0175-1000-6ddf-1bd1e4697531","testStepResults":{"TestStepResult":{"id":"EID6eecfa5f-0175-1000-390b-e5c9be48ba01","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecfbbb-0175-1000-6695-2ddb84a545f3","parent":{"ref":"EID6eecfa5f-0175-1000-390b-e5c9be48ba01"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6eecfbbb-0175-1000-70ed-b637c505b650","parent":{"ref":"EID6eecfa5f-0175-1000-390b-e5c9be48ba01"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6eecfbbb-0175-1000-00d2-b94977217d90","parent":{"ref":"EID6eecfa5f-0175-1000-390b-e5c9be48ba01"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6eecfbbc-0175-1000-a5ee-9d846dc4891c","parent":{"ref":"EID6eecfa5f-0175-1000-390b-e5c9be48ba01"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6578592f-5b1b-4562-b74f-96834dc09810"},{"ref":"EID3425a24f-3af5-48e7-9c08-dc47debc15a2"},{"ref":"EID36da8638-8d6a-4563-92ed-cb6693ce2162"}]},"parent":{"ref":"EID6eecfa5f-0175-1000-6ddf-1bd1e4697531"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:17:05Z","duration":227,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:17:05Z","duration":349,"status":"PASSED"},{"id":"EID6eecfbbc-0175-1000-76e6-9888b3045fc0","testStepResults":{"TestStepResult":{"id":"EID6eecfbbc-0175-1000-f07e-217464f5b0d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecfe56-0175-1000-40a3-cb5047d7ac86","parent":{"ref":"EID6eecfbbc-0175-1000-f07e-217464f5b0d3"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6eecfe56-0175-1000-a72b-9c0ca2ca780a","parent":{"ref":"EID6eecfbbc-0175-1000-f07e-217464f5b0d3"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6eecfe56-0175-1000-716e-0163810a346e","parent":{"ref":"EID6eecfbbc-0175-1000-f07e-217464f5b0d3"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6eecfe56-0175-1000-8eb7-748d74a56d59","parent":{"ref":"EID6eecfbbc-0175-1000-f07e-217464f5b0d3"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:17:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID24bc8ec4-0adb-4706-aac0-02fca0998f2b"},{"ref":"EIDdbd7f528-b2dd-4155-90b4-7469db0be945"},{"ref":"EIDaecfa59b-fd4c-4afb-8490-9546f6cc2f75"}]},"parent":{"ref":"EID6eecfbbc-0175-1000-76e6-9888b3045fc0"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:17:06Z","duration":475,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:17:06Z","duration":676,"status":"PASSED"},{"id":"EID6eecfe60-0175-1000-0703-7eb76f3fed15","testStepResults":{"TestStepResult":[{"id":"EID6eecfe60-0175-1000-a54a-739e713ff583","attachments":{"attachment":[{"ref":"EID012200c5-f89d-4db3-a69d-6dfc2732ded4"},{"ref":"EID6bd39e77-2a80-4d5d-af40-74775712ab06"},{"ref":"EID0a6aa751-80f0-48f3-89f4-7d850776ec61"},{"ref":"EID12b41b52-5e50-42a7-bb88-ef4ad42bd015"},{"ref":"EIDf57ae985-8a9b-40f6-b6b5-cdcbc4551d86"},{"ref":"EID7ca02dd7-df93-47fe-b458-3cce3b42fddd"},{"ref":"EIDef12b222-e642-4f61-8d6f-d889e1dcb403"},{"ref":"EIDf65fb1c3-0c76-4831-86d7-9a5b5652f5c2"},{"ref":"EID59a0100f-29db-42f3-aa37-7bddc9ffbed4"},{"ref":"EIDde59579e-0242-47ef-852b-d490fa3cc21d"},{"ref":"EID601d65c1-3f22-4434-bdfa-9e6524bd8aed"},{"ref":"EID7129a3ba-c543-4567-8b83-006274b452a7"}]},"parent":{"ref":"EID6eecfe60-0175-1000-0703-7eb76f3fed15"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:17:06Z","duration":547,"status":"PASSED"},{"id":"EID6eed0167-0175-1000-8ff8-acb7a0f049ee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed029b-0175-1000-ce51-a6c97a945bda","parent":{"ref":"EID6eed0167-0175-1000-8ff8-acb7a0f049ee"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6eed029b-0175-1000-1b4a-ece4858add42","parent":{"ref":"EID6eed0167-0175-1000-8ff8-acb7a0f049ee"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6eed029b-0175-1000-d970-872807ae04e1","parent":{"ref":"EID6eed0167-0175-1000-8ff8-acb7a0f049ee"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6eed029b-0175-1000-9ab5-80a423568578","messages":{"message":{"ref":"TR.incorrectFeedSelfReference","translationArguments":{"argument":[{"token":"actual","$":"http://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"},{"token":"element","$":"/atom:feed/atom:link with @rel='self'"},{"token":"expected","$":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href"}]}}},"parent":{"ref":"EID6eed0167-0175-1000-8ff8-acb7a0f049ee"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:17:07Z","duration":0,"status":"FAILED"},{"id":"EID6eed029b-0175-1000-27e2-575f3e77a732","parent":{"ref":"EID6eed0167-0175-1000-8ff8-acb7a0f049ee"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:17:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDefbaed55-1677-496f-8e27-5379a0f8894b"},{"ref":"EID43cbeb72-00fc-4bb1-879b-ac721fb00fe0"},{"ref":"EIDaf173e47-988a-463f-89d1-20278a323cff"}]},"parent":{"ref":"EID6eecfe60-0175-1000-0703-7eb76f3fed15"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:17:07Z","duration":130,"status":"FAILED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:17:06Z","duration":1094,"status":"FAILED"},{"id":"EID6eed02a6-0175-1000-50cc-9a5360bfaa96","testStepResults":{"TestStepResult":{"id":"EID6eed02a6-0175-1000-5bbe-eccbf4b9aea2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed03f3-0175-1000-678f-eb9cda0e5007","parent":{"ref":"EID6eed02a6-0175-1000-5bbe-eccbf4b9aea2"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed03f3-0175-1000-4326-57fcedf92da2","parent":{"ref":"EID6eed02a6-0175-1000-5bbe-eccbf4b9aea2"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed03f3-0175-1000-d567-450eccc4fe9e","parent":{"ref":"EID6eed02a6-0175-1000-5bbe-eccbf4b9aea2"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed03f3-0175-1000-899a-2061ac0a00e8","parent":{"ref":"EID6eed02a6-0175-1000-5bbe-eccbf4b9aea2"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7036f4a0-fdd2-448b-8b0b-dc9c2d4b1c0a"},{"ref":"EIDfbb91a02-3c67-47e7-b45f-1b34ab3b3681"},{"ref":"EIDe2a96202-a373-494f-8f98-e0b2c439ef3e"}]},"parent":{"ref":"EID6eed02a6-0175-1000-50cc-9a5360bfaa96"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:17:07Z","duration":246,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:17:07Z","duration":333,"status":"PASSED"},{"id":"EID6eed03f3-0175-1000-8a91-1aea0675cada","testStepResults":{"TestStepResult":{"id":"EID6eed03f4-0175-1000-8b02-0742e02d094d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed04cb-0175-1000-d934-033a7deafb6b","parent":{"ref":"EID6eed03f4-0175-1000-8b02-0742e02d094d"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed04cb-0175-1000-0945-85f314bd9ff9","parent":{"ref":"EID6eed03f4-0175-1000-8b02-0742e02d094d"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed04cb-0175-1000-d3c1-81268f5513f5","parent":{"ref":"EID6eed03f4-0175-1000-8b02-0742e02d094d"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed04cb-0175-1000-0e42-7b4601ffa8bc","parent":{"ref":"EID6eed03f4-0175-1000-8b02-0742e02d094d"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed04cb-0175-1000-3969-b18a07084813","parent":{"ref":"EID6eed03f4-0175-1000-8b02-0742e02d094d"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed04cb-0175-1000-337c-bc3f4dd1e6bf","parent":{"ref":"EID6eed03f4-0175-1000-8b02-0742e02d094d"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb8b4fe2b-9245-4776-a710-ae3a5236aa7a"},{"ref":"EID4daef962-bf86-41b5-b8cf-cafda41b4502"},{"ref":"EID5957fd82-0c38-4197-b47a-707150557533"}]},"parent":{"ref":"EID6eed03f3-0175-1000-8a91-1aea0675cada"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:17:08Z","duration":77,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:17:08Z","duration":224,"status":"PASSED"},{"id":"EID6eed04d3-0175-1000-8c44-acc2c66f9a9e","testStepResults":{"TestStepResult":{"id":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed0638-0175-1000-41cf-b1c8ec7c2d2e","parent":{"ref":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed0638-0175-1000-56f4-bf383f1d9748","parent":{"ref":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed0638-0175-1000-21a9-6e81da3b83e0","parent":{"ref":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed0638-0175-1000-fd0e-4e16f11d15fa","parent":{"ref":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed0638-0175-1000-e959-f95405a7c159","parent":{"ref":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6eed0638-0175-1000-1cee-da84ffc11b47","parent":{"ref":"EID6eed04d3-0175-1000-1669-7c0e3c1e775b"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:17:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf3dd11a6-7ae0-4f81-ade9-f643892b9469"},{"ref":"EIDf6f043fe-5eec-4d7c-b36a-f129b735e65a"},{"ref":"EID8a1af29e-e23d-4060-8105-51f9ee734417"}]},"parent":{"ref":"EID6eed04d3-0175-1000-8c44-acc2c66f9a9e"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:17:08Z","duration":152,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:17:08Z","duration":357,"status":"PASSED"},{"id":"EID6eed0638-0175-1000-13a8-4ffb6c711f0b","testStepResults":{"TestStepResult":{"id":"EID6eed0638-0175-1000-8f9d-4cd408d9234c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed07bb-0175-1000-27c8-6f9c3eb025b6","parent":{"ref":"EID6eed0638-0175-1000-8f9d-4cd408d9234c"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6eed07bb-0175-1000-5147-6bff952e5491","parent":{"ref":"EID6eed0638-0175-1000-8f9d-4cd408d9234c"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6eed07bb-0175-1000-85ca-5a1a6a646a32","parent":{"ref":"EID6eed0638-0175-1000-8f9d-4cd408d9234c"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6eed07bb-0175-1000-c080-5526dc5e946b","parent":{"ref":"EID6eed0638-0175-1000-8f9d-4cd408d9234c"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:17:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID06019364-968d-4c67-b22c-b32bd68a5c0a"},{"ref":"EID4ce4a6df-9410-41a4-a8cc-b89f6adcd57e"},{"ref":"EID21072406-b254-45ce-b672-52569fd8daf0"}]},"parent":{"ref":"EID6eed0638-0175-1000-13a8-4ffb6c711f0b"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:17:08Z","duration":214,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:17:08Z","duration":399,"status":"PASSED"},{"id":"EID6eed07c7-0175-1000-2363-9ca8749bd26b","testStepResults":{"TestStepResult":[{"id":"EID6eed07c7-0175-1000-73aa-76391029fda1","attachments":{"attachment":[{"ref":"EID350560ce-3af8-4b4b-96a4-0738288051e1"},{"ref":"EID4fcebc70-fbbf-4cad-b6f5-80b0876e6e62"},{"ref":"EID9aaf8e52-4bd4-4ef2-bdfa-5670c50ecb70"},{"ref":"EIDadf2be2b-b5df-425e-8e21-1fda2394614d"}]},"parent":{"ref":"EID6eed07c7-0175-1000-2363-9ca8749bd26b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:17:09Z","duration":862,"status":"PASSED"},{"id":"EID6eed0b9c-0175-1000-cbb2-2ba0305aa6ab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed0d06-0175-1000-7bf9-ffeabbce9d52","parent":{"ref":"EID6eed0b9c-0175-1000-cbb2-2ba0305aa6ab"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0d06-0175-1000-ff30-a791961cf31e","parent":{"ref":"EID6eed0b9c-0175-1000-cbb2-2ba0305aa6ab"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0d06-0175-1000-c2d8-02ef97689a16","parent":{"ref":"EID6eed0b9c-0175-1000-cbb2-2ba0305aa6ab"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0d06-0175-1000-a401-5f9e354dfd93","parent":{"ref":"EID6eed0b9c-0175-1000-cbb2-2ba0305aa6ab"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7713bfc5-cc70-4478-b9d3-7ce1d5528eab"},{"ref":"EID3f67fe2c-4dd5-493e-9ed2-d633ddfdf35b"},{"ref":"EIDab7209ee-96fc-43d5-81e1-4350b702e71a"}]},"parent":{"ref":"EID6eed07c7-0175-1000-2363-9ca8749bd26b"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:17:10Z","duration":119,"status":"PASSED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:17:09Z","duration":1351,"status":"PASSED"},{"id":"EID6eed0d0f-0175-1000-363d-ac6ab60b2962","testStepResults":{"TestStepResult":{"id":"EID6eed0d0f-0175-1000-0336-a5066b9ad380","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed0e35-0175-1000-e622-559d81a8f730","parent":{"ref":"EID6eed0d0f-0175-1000-0336-a5066b9ad380"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0e35-0175-1000-9b14-43fdf8d13448","parent":{"ref":"EID6eed0d0f-0175-1000-0336-a5066b9ad380"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0e35-0175-1000-2f8e-5ae6c028e3de","parent":{"ref":"EID6eed0d0f-0175-1000-0336-a5066b9ad380"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0e35-0175-1000-b1af-35c6694c5bbf","parent":{"ref":"EID6eed0d0f-0175-1000-0336-a5066b9ad380"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7e425ac7-2967-42fa-94ba-dbb1aeeecf63"},{"ref":"EIDd09f80de-e98f-4707-8acb-f200921fab4d"},{"ref":"EIDad156935-8395-4018-aefc-3ba7a514b486"}]},"parent":{"ref":"EID6eed0d0f-0175-1000-363d-ac6ab60b2962"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:17:10Z","duration":80,"status":"PASSED"}},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:17:10Z","duration":302,"status":"PASSED"},{"id":"EID6eed0e3d-0175-1000-f48f-eded3b6e3c56","testStepResults":{"TestStepResult":[{"id":"EID6eed0e3d-0175-1000-3c0d-dff9b10570ed","parent":{"ref":"EID6eed0e3d-0175-1000-f48f-eded3b6e3c56"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6eed0e3d-0175-1000-7a6e-571658e9d06e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed0f05-0175-1000-1d3c-7527b6759d11","parent":{"ref":"EID6eed0e3d-0175-1000-7a6e-571658e9d06e"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0f05-0175-1000-5c4b-5a3c56bb8b92","parent":{"ref":"EID6eed0e3d-0175-1000-7a6e-571658e9d06e"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0f05-0175-1000-4bee-4aa342d40ee9","parent":{"ref":"EID6eed0e3d-0175-1000-7a6e-571658e9d06e"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0f06-0175-1000-8729-b29f4ac273a0","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eed0e3d-0175-1000-7a6e-571658e9d06e"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3d6a7a8d-8e81-4ea6-8483-6faceeb5bd3c"},{"ref":"EIDe979cc1c-e7da-4f86-8f57-1c437b3e5235"},{"ref":"EIDa7e2c2c2-46ea-4b5a-b4ae-932ae84f996b"}]},"parent":{"ref":"EID6eed0e3d-0175-1000-f48f-eded3b6e3c56"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:17:10Z","duration":39,"status":"FAILED"}]},"parent":{"ref":"EID6eece99c-0175-1000-73b5-638716c5986b"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:17:10Z","duration":209,"status":"FAILED"}]},"parent":{"ref":"EID98b9bc2e-08a7-49fb-9e46-21b3e464d897"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:17:01Z","duration":9586,"status":"FAILED"},{"id":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30","testCaseResults":{"TestCaseResult":[{"id":"EID6eed0f0f-0175-1000-184a-da1bcd733213","testStepResults":{"TestStepResult":[{"id":"EID6eed0f0f-0175-1000-47ad-515b62de8368","parent":{"ref":"EID6eed0f0f-0175-1000-184a-da1bcd733213"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0f0f-0175-1000-5745-8f9f3d2b8b62","parent":{"ref":"EID6eed0f0f-0175-1000-184a-da1bcd733213"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:17:11Z","duration":80,"status":"PASSED"},{"id":"EID6eed0f0f-0175-1000-90a0-990d2db817d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed0fb9-0175-1000-b559-d0d5313b68aa","parent":{"ref":"EID6eed0f0f-0175-1000-90a0-990d2db817d9"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0fb9-0175-1000-c393-6e5b59d651d8","parent":{"ref":"EID6eed0f0f-0175-1000-90a0-990d2db817d9"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0fb9-0175-1000-829e-3b265c42578a","parent":{"ref":"EID6eed0f0f-0175-1000-90a0-990d2db817d9"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3374376c-6a54-457c-ac8c-484460bcf60b"},{"ref":"EID119bb62c-5cf8-40a9-8dca-d960d43883a7"},{"ref":"EID644c3224-4546-48db-9b46-8d65c0224395"}]},"parent":{"ref":"EID6eed0f0f-0175-1000-184a-da1bcd733213"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:17:11Z","duration":41,"status":"PASSED"},{"id":"EID6eed0fc7-0175-1000-d1bd-db9f22d8114c","attachments":{"attachment":{"ref":"EID825e64de-51dd-4d0f-87bb-4f9f1f7af156"}},"parent":{"ref":"EID6eed0f0f-0175-1000-184a-da1bcd733213"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed0fd4-0175-1000-e2ee-07e23e0aa44e","parent":{"ref":"EID6eed0f0f-0175-1000-184a-da1bcd733213"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:17:11Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:17:11Z","duration":219,"status":"PASSED"},{"id":"EID6eed0feb-0175-1000-174b-0f2dcb2f106e","testStepResults":{"TestStepResult":[{"id":"EID6eed0feb-0175-1000-e73e-17b97bf9724e","parent":{"ref":"EID6eed0feb-0175-1000-174b-0f2dcb2f106e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:17:11Z","duration":335,"status":"PASSED"},{"id":"EID6eed0ff6-0175-1000-ed2d-95f0b88dcccf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1044-0175-1000-af72-c17006bd7698","parent":{"ref":"EID6eed0ff6-0175-1000-ed2d-95f0b88dcccf"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1044-0175-1000-f764-2b34095c7c9f","parent":{"ref":"EID6eed0ff6-0175-1000-ed2d-95f0b88dcccf"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1044-0175-1000-3437-57d1c25c38cc","parent":{"ref":"EID6eed0ff6-0175-1000-ed2d-95f0b88dcccf"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1044-0175-1000-251b-31bcac31942b","parent":{"ref":"EID6eed0ff6-0175-1000-ed2d-95f0b88dcccf"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1044-0175-1000-1af3-9ae2bd57fe47","parent":{"ref":"EID6eed0ff6-0175-1000-ed2d-95f0b88dcccf"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID29555e22-a1cb-4809-a34e-41ccf56ddf3d"},{"ref":"EID414030f7-5f62-4790-93c5-4aa59c77dc81"},{"ref":"EIDdc35dc17-7c73-49f9-a4ad-f0aa95cbe99b"}]},"parent":{"ref":"EID6eed0feb-0175-1000-174b-0f2dcb2f106e"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:17:11Z","duration":2,"status":"PASSED"}]},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:17:11Z","duration":89,"status":"PASSED"},{"id":"EID6eed1045-0175-1000-3a44-2a1ff70e9fa7","testStepResults":{"TestStepResult":[{"id":"EID6eed1045-0175-1000-7f0a-885b12a6c384","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed108f-0175-1000-89fd-ba50d0ea752d","parent":{"ref":"EID6eed1045-0175-1000-7f0a-885b12a6c384"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed108f-0175-1000-5e51-3f51ead4e7be","parent":{"ref":"EID6eed1045-0175-1000-7f0a-885b12a6c384"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed108f-0175-1000-0bbc-1a7b311e0305","parent":{"ref":"EID6eed1045-0175-1000-7f0a-885b12a6c384"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe35d5e4d-d80f-4a22-a23a-21999e977431"},{"ref":"EID969bc0f2-79cf-4413-b0d3-f753b0dfc9b2"},{"ref":"EIDaeb92673-020d-4fb7-942b-456b2efda68e"}]},"parent":{"ref":"EID6eed1045-0175-1000-3a44-2a1ff70e9fa7"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:17:11Z","duration":1,"status":"PASSED"},{"id":"EID6eed108f-0175-1000-ba63-eb3729346ed8","attachments":{"attachment":{"ref":"EIDc65933bb-2007-40a5-a3d4-7915f046e282"}},"parent":{"ref":"EID6eed1045-0175-1000-3a44-2a1ff70e9fa7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed10c8-0175-1000-03ca-fb0f05d93e26","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1183-0175-1000-2069-ea05c4a3fd81","parent":{"ref":"EID6eed10c8-0175-1000-03ca-fb0f05d93e26"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1183-0175-1000-3fbf-381e4119f4fd","parent":{"ref":"EID6eed10c8-0175-1000-03ca-fb0f05d93e26"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1183-0175-1000-3439-a1b99686f393","parent":{"ref":"EID6eed10c8-0175-1000-03ca-fb0f05d93e26"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1183-0175-1000-29ff-edeaa2f68a6c","parent":{"ref":"EID6eed10c8-0175-1000-03ca-fb0f05d93e26"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed1183-0175-1000-d5df-b8ff303a48bc","parent":{"ref":"EID6eed10c8-0175-1000-03ca-fb0f05d93e26"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID758d7cea-4ea3-4916-8f9d-d09849977a0e"},{"ref":"EID36d19e02-4518-4307-89c7-8c787a78a1cf"},{"ref":"EID24b91122-86bf-4914-9190-7f3697d3ba9b"}]},"parent":{"ref":"EID6eed1045-0175-1000-3a44-2a1ff70e9fa7"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:17:11Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:17:11Z","duration":328,"status":"PASSED"},{"id":"EID6eed118d-0175-1000-49f3-c2bbe4aadd15","testStepResults":{"TestStepResult":[{"id":"EID6eed118d-0175-1000-3894-a72a8de80f5f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed122d-0175-1000-d1d8-79efb9f5ded7","parent":{"ref":"EID6eed118d-0175-1000-3894-a72a8de80f5f"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed122d-0175-1000-b366-cf6eef55c1bc","parent":{"ref":"EID6eed118d-0175-1000-3894-a72a8de80f5f"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed122d-0175-1000-9d18-24560a3aa098","parent":{"ref":"EID6eed118d-0175-1000-3894-a72a8de80f5f"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed122d-0175-1000-958e-9b48ca67bd4d","parent":{"ref":"EID6eed118d-0175-1000-3894-a72a8de80f5f"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf50e06c0-0e39-4fd7-a94a-2476ab665441"},{"ref":"EID9bce396b-d7a6-45ba-8282-a5260d9c4360"},{"ref":"EID51f94298-ac56-4709-b4d0-ccc662f43539"}]},"parent":{"ref":"EID6eed118d-0175-1000-49f3-c2bbe4aadd15"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:17:11Z","duration":1,"status":"PASSED"},{"id":"EID6eed122d-0175-1000-0b50-81bb20bfd645","attachments":{"attachment":{"ref":"EID2003de40-344d-4211-8a22-429c31706c6e"}},"parent":{"ref":"EID6eed118d-0175-1000-49f3-c2bbe4aadd15"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:17:11Z","duration":1,"status":"PASSED"},{"id":"EID6eed1252-0175-1000-edc5-483c61d69073","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed12b5-0175-1000-da76-67c3ff951716","parent":{"ref":"EID6eed1252-0175-1000-edc5-483c61d69073"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6eed12b5-0175-1000-044e-5cc2a338fe51","parent":{"ref":"EID6eed1252-0175-1000-edc5-483c61d69073"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8e5af624-994c-4079-aa4d-d1a7f587e6c7"},{"ref":"EID78c81b16-f9c9-4d0b-9550-6cc5c47cd2e3"}]},"parent":{"ref":"EID6eed118d-0175-1000-49f3-c2bbe4aadd15"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:17:11Z","duration":93,"status":"PASSED"},{"id":"EID6eed12b5-0175-1000-fec8-41fd9b555e16","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1319-0175-1000-7dee-f882444fdcf8","parent":{"ref":"EID6eed12b5-0175-1000-fec8-41fd9b555e16"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1319-0175-1000-46df-ff3373728ee2","parent":{"ref":"EID6eed12b5-0175-1000-fec8-41fd9b555e16"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1319-0175-1000-6a0d-73bec6af31c4","parent":{"ref":"EID6eed12b5-0175-1000-fec8-41fd9b555e16"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1319-0175-1000-be65-fffea32e02b0","parent":{"ref":"EID6eed12b5-0175-1000-fec8-41fd9b555e16"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfa5fb96b-1dc9-404e-9203-823b1df1679b"},{"ref":"EID64d0a802-a36e-414a-b548-aacce1d791fa"},{"ref":"EID92b4e76c-d950-4381-acb2-1eec0e658517"}]},"parent":{"ref":"EID6eed118d-0175-1000-49f3-c2bbe4aadd15"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:17:11Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:17:11Z","duration":396,"status":"PASSED"},{"id":"EID6eed131a-0175-1000-42e7-020ed4b23005","testStepResults":{"TestStepResult":{"id":"EID6eed131a-0175-1000-6feb-daa2571e6192","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1353-0175-1000-7b70-4c53f95dfde0","parent":{"ref":"EID6eed131a-0175-1000-6feb-daa2571e6192"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1353-0175-1000-a78f-08163a634bfc","parent":{"ref":"EID6eed131a-0175-1000-6feb-daa2571e6192"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1353-0175-1000-2651-35e5d0b16377","parent":{"ref":"EID6eed131a-0175-1000-6feb-daa2571e6192"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbc922cbb-57b3-487b-b64b-7ada01eec537"},{"ref":"EID4ec7e9a3-bbd1-4e15-ab0c-ac7783ef1b3f"},{"ref":"EID58830630-7e38-47c3-8f3b-cd622daffade"}]},"parent":{"ref":"EID6eed131a-0175-1000-42e7-020ed4b23005"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:17:12Z","duration":57,"status":"PASSED"},{"id":"EID6eed1353-0175-1000-c970-ce6461ab9883","testStepResults":{"TestStepResult":{"id":"EID6eed1353-0175-1000-8bbb-410ea51dc848","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed138f-0175-1000-6211-fc31f13b29e7","parent":{"ref":"EID6eed1353-0175-1000-8bbb-410ea51dc848"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed138f-0175-1000-dbdd-46bcd3c822d2","parent":{"ref":"EID6eed1353-0175-1000-8bbb-410ea51dc848"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed138f-0175-1000-5076-499ff269a153","parent":{"ref":"EID6eed1353-0175-1000-8bbb-410ea51dc848"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9c98e9db-8a56-4ec6-a481-b060724934ed"},{"ref":"EIDa3fc6d43-8a64-46d4-8198-c3cdfc01536b"},{"ref":"EID93c27415-b1f4-454a-af40-5614866aa0b0"}]},"parent":{"ref":"EID6eed1353-0175-1000-c970-ce6461ab9883"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:17:12Z","duration":68,"status":"PASSED"},{"id":"EID6eed1397-0175-1000-38ae-7571f9f6be7d","testStepResults":{"TestStepResult":{"id":"EID6eed1397-0175-1000-e3dc-7254c4e370e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed13f7-0175-1000-eef5-cb7db4fafbbb","parent":{"ref":"EID6eed1397-0175-1000-e3dc-7254c4e370e2"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed13f7-0175-1000-ee15-5cd4548b1265","parent":{"ref":"EID6eed1397-0175-1000-e3dc-7254c4e370e2"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed13f7-0175-1000-3312-806fe1346e69","parent":{"ref":"EID6eed1397-0175-1000-e3dc-7254c4e370e2"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed13f7-0175-1000-2155-e312c6706663","parent":{"ref":"EID6eed1397-0175-1000-e3dc-7254c4e370e2"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed13f7-0175-1000-155d-11c9a6bcfe7b","parent":{"ref":"EID6eed1397-0175-1000-e3dc-7254c4e370e2"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3aadfd54-ba60-4ae1-809b-c4bd2f053eae"},{"ref":"EID360524b9-07cc-4955-8bed-ca49d417193a"},{"ref":"EID4700e693-a95f-4494-892d-f27547158f9f"}]},"parent":{"ref":"EID6eed1397-0175-1000-38ae-7571f9f6be7d"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:17:12Z","duration":96,"status":"PASSED"},{"id":"EID6eed13f8-0175-1000-6a04-104df2307f60","testStepResults":{"TestStepResult":{"id":"EID6eed13f8-0175-1000-9b3f-e6f30923eed8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed143e-0175-1000-3bb9-e81789705d62","parent":{"ref":"EID6eed13f8-0175-1000-9b3f-e6f30923eed8"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed143e-0175-1000-28a1-c0710597ee83","parent":{"ref":"EID6eed13f8-0175-1000-9b3f-e6f30923eed8"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed143e-0175-1000-39c5-0ab1d9495db0","parent":{"ref":"EID6eed13f8-0175-1000-9b3f-e6f30923eed8"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8a8970a8-814c-4b0f-9619-a1927de636aa"},{"ref":"EID56a78e05-1dcc-42cc-a61b-e56cfb7b303a"},{"ref":"EIDf00e2e18-3b15-46f3-9fc6-61d22d3f3b7b"}]},"parent":{"ref":"EID6eed13f8-0175-1000-6a04-104df2307f60"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:17:12Z","duration":70,"status":"PASSED"},{"id":"EID6eed143e-0175-1000-482b-6656de3e97fa","testStepResults":{"TestStepResult":{"id":"EID6eed143e-0175-1000-100b-ca9f31a662dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1485-0175-1000-bb95-49faf47a02e2","parent":{"ref":"EID6eed143e-0175-1000-100b-ca9f31a662dd"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1485-0175-1000-5eb5-877710fcf904","parent":{"ref":"EID6eed143e-0175-1000-100b-ca9f31a662dd"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1485-0175-1000-d6c1-0eec5cc34be3","parent":{"ref":"EID6eed143e-0175-1000-100b-ca9f31a662dd"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID79e154ea-072d-480b-8199-12b5ac67e533"},{"ref":"EID4004947c-d206-4d2b-a3dc-dcaa38ed8b50"},{"ref":"EID613a77d4-021a-4442-b810-535603e8e382"}]},"parent":{"ref":"EID6eed143e-0175-1000-482b-6656de3e97fa"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:17:12Z","duration":2,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:17:12Z","duration":71,"status":"PASSED"},{"id":"EID6eed1485-0175-1000-027d-61fa97bdfa54","testStepResults":{"TestStepResult":{"id":"EID6eed1485-0175-1000-fc2e-2f221fcb36d1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed14da-0175-1000-d273-9d68a28d77ce","parent":{"ref":"EID6eed1485-0175-1000-fc2e-2f221fcb36d1"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed14da-0175-1000-8e98-2e7744004f0c","parent":{"ref":"EID6eed1485-0175-1000-fc2e-2f221fcb36d1"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed14da-0175-1000-c363-42126509ea4d","parent":{"ref":"EID6eed1485-0175-1000-fc2e-2f221fcb36d1"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed14da-0175-1000-7580-115642ac2a28","parent":{"ref":"EID6eed1485-0175-1000-fc2e-2f221fcb36d1"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc67f805d-6905-46d6-8567-012864e5b5c5"},{"ref":"EIDaab90cee-5e87-4ff1-a789-fb2855aa44d4"},{"ref":"EIDb0336f09-88a7-49c0-b6b6-597099bdf276"}]},"parent":{"ref":"EID6eed1485-0175-1000-027d-61fa97bdfa54"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:17:12Z","duration":85,"status":"PASSED"},{"id":"EID6eed14db-0175-1000-b656-d528e4e6efc6","testStepResults":{"TestStepResult":{"id":"EID6eed14db-0175-1000-004a-0ab15acfb0cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1567-0175-1000-9410-39dc36a018d1","parent":{"ref":"EID6eed14db-0175-1000-004a-0ab15acfb0cf"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1567-0175-1000-50b3-9538540091e6","parent":{"ref":"EID6eed14db-0175-1000-004a-0ab15acfb0cf"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1567-0175-1000-97f5-0fa78e4c8a68","parent":{"ref":"EID6eed14db-0175-1000-004a-0ab15acfb0cf"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1567-0175-1000-c0f5-6bc7230843ee","parent":{"ref":"EID6eed14db-0175-1000-004a-0ab15acfb0cf"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID958c4c0a-5f9d-4541-b2cb-c5dafb9a4e09"},{"ref":"EID23e8dcda-a8df-43ac-a619-738aebbfe3d4"},{"ref":"EIDb8715d63-cfa4-4b39-8cb2-fc5463fd2b18"}]},"parent":{"ref":"EID6eed14db-0175-1000-b656-d528e4e6efc6"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:17:12Z","duration":192,"status":"PASSED"},{"id":"EID6eed159b-0175-1000-4332-21e8d06477ed","testStepResults":{"TestStepResult":[{"id":"EID6eed159b-0175-1000-e728-151e932738ac","parent":{"ref":"EID6eed159b-0175-1000-4332-21e8d06477ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed159b-0175-1000-a1ed-bcb04bd5b971","parent":{"ref":"EID6eed159b-0175-1000-4332-21e8d06477ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:17:12Z","duration":359,"status":"PASSED"},{"id":"EID6eed159b-0175-1000-cdb8-f6d78fe5270c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1626-0175-1000-b189-fad828d50232","parent":{"ref":"EID6eed159b-0175-1000-cdb8-f6d78fe5270c"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1626-0175-1000-d329-239606818f42","parent":{"ref":"EID6eed159b-0175-1000-cdb8-f6d78fe5270c"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1626-0175-1000-7d75-615b22ad7b66","parent":{"ref":"EID6eed159b-0175-1000-cdb8-f6d78fe5270c"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1626-0175-1000-f12e-587a11a5dd32","parent":{"ref":"EID6eed159b-0175-1000-cdb8-f6d78fe5270c"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3119c6d4-cfc6-42ac-bd86-f66d4645ef7b"},{"ref":"EID865054f9-411d-4fee-af34-1cca61537a4d"},{"ref":"EIDc394297b-85d8-4a5f-a781-42ae9073a3cd"}]},"parent":{"ref":"EID6eed159b-0175-1000-4332-21e8d06477ed"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:17:12Z","duration":48,"status":"PASSED"},{"id":"EID6eed1627-0175-1000-3119-5be09ea8c736","attachments":{"attachment":{"ref":"EID2f5cd7a4-3ef0-497b-b560-2bba83ad9ea5"}},"parent":{"ref":"EID6eed159b-0175-1000-4332-21e8d06477ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"},{"id":"EID6eed1638-0175-1000-2fe1-dddb602ccd12","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1698-0175-1000-fe5b-6e98ab45b00c","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-fc30-3f358ee8f64c","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-7a1f-314bf9940811","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-6478-0e61a78ea0a8","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-7084-67af4af07cf1","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-c275-2606b28347aa","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-427d-caf7efc363e1","parent":{"ref":"EID6eed1638-0175-1000-2fe1-dddb602ccd12"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67db3b08-ed10-45af-aaa4-c70488ef0eac"},{"ref":"EID2ccd4907-389e-45af-a794-be207ee591fa"},{"ref":"EID9fa66b72-9fb9-45b0-9c50-f17d3d3f994f"}]},"parent":{"ref":"EID6eed159b-0175-1000-4332-21e8d06477ed"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:17:12Z","duration":2,"status":"PASSED"}]},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:17:12Z","duration":253,"status":"PASSED"},{"id":"EID6eed1698-0175-1000-a979-1f5178977038","testStepResults":{"TestStepResult":[{"id":"EID6eed1698-0175-1000-8312-58b2ec91c1e2","parent":{"ref":"EID6eed1698-0175-1000-a979-1f5178977038"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1,"status":"PASSED"},{"id":"EID6eed1699-0175-1000-92c8-eedf4ad5b480","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1809-0175-1000-bd64-3ad4c9e01446","parent":{"ref":"EID6eed1699-0175-1000-92c8-eedf4ad5b480"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1809-0175-1000-7302-dd0123dc2a18","parent":{"ref":"EID6eed1699-0175-1000-92c8-eedf4ad5b480"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1809-0175-1000-5ab5-9d115d5a9d73","parent":{"ref":"EID6eed1699-0175-1000-92c8-eedf4ad5b480"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1809-0175-1000-51ef-4d2355e38666","parent":{"ref":"EID6eed1699-0175-1000-92c8-eedf4ad5b480"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa07619cb-6ace-45fe-aeb3-b9859d396f40"},{"ref":"EID7a270cd7-17c5-48fc-b321-7162a48a82eb"},{"ref":"EIDbd2821ee-871f-4c5b-bb5e-f6540d5ea68d"}]},"parent":{"ref":"EID6eed1698-0175-1000-a979-1f5178977038"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:17:12Z","duration":149,"status":"PASSED"},{"id":"EID6eed1809-0175-1000-6a55-036a67af39e6","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eed182a-0175-1000-6d95-2769a6a6b51d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1935-0175-1000-81d5-d9c501ae2df7","parent":{"ref":"EID6eed182a-0175-1000-6d95-2769a6a6b51d"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1935-0175-1000-1196-8dc68e4a7a62","parent":{"ref":"EID6eed182a-0175-1000-6d95-2769a6a6b51d"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1935-0175-1000-1afa-af49d77a433d","parent":{"ref":"EID6eed182a-0175-1000-6d95-2769a6a6b51d"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf45e0e80-6b0b-47c2-98cb-ffdcbcb190b2"},{"ref":"EID7e90d2f5-e498-42af-a5fe-840a27539f4f"},{"ref":"EIDd6a00ad7-b11c-4926-b0d8-f49c979cb09b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:17:13Z","duration":151,"status":"PASSED"},{"id":"EID6eed1936-0175-1000-bbff-becdc7e6d147","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1a24-0175-1000-585e-4872364ab6db","parent":{"ref":"EID6eed1936-0175-1000-bbff-becdc7e6d147"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1a24-0175-1000-1cdf-47ac7821ab96","parent":{"ref":"EID6eed1936-0175-1000-bbff-becdc7e6d147"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1a24-0175-1000-c1f4-bb15cc62cc86","parent":{"ref":"EID6eed1936-0175-1000-bbff-becdc7e6d147"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDedf74373-50bc-4ce3-8e60-8f10530d4ab6"},{"ref":"EID383ace1b-a19a-4fd3-bd22-bf87f8cd3e6d"},{"ref":"EIDab677507-f958-41f5-b781-b9cade6a4bae"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:17:13Z","duration":178,"status":"PASSED"},{"id":"EID6eed1a25-0175-1000-e6bd-9405ac3fcb70","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1a7c-0175-1000-2800-1f038766b614","parent":{"ref":"EID6eed1a25-0175-1000-e6bd-9405ac3fcb70"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1a7c-0175-1000-cfd2-07a610bf99d6","parent":{"ref":"EID6eed1a25-0175-1000-e6bd-9405ac3fcb70"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6eed1a7c-0175-1000-de54-025d399fcb6e","parent":{"ref":"EID6eed1a25-0175-1000-e6bd-9405ac3fcb70"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfebcb325-0ade-4251-b01d-bb1a5200381e"},{"ref":"EID44b8ebb3-0852-4b99-bbeb-f2e396901d91"},{"ref":"EID8055d2a6-9297-48f5-a51d-8168541da60d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:17:13Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6eed1698-0175-1000-a979-1f5178977038"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:17:13Z","duration":627,"status":"PASSED"},{"id":"EID6eed1a7d-0175-1000-0d52-08837ce9a541","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1ab8-0175-1000-49df-f6095ec1017b","parent":{"ref":"EID6eed1a7d-0175-1000-0d52-08837ce9a541"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1ab8-0175-1000-7679-0029bbab55d8","parent":{"ref":"EID6eed1a7d-0175-1000-0d52-08837ce9a541"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1ab8-0175-1000-a3e4-1650579e38ea","parent":{"ref":"EID6eed1a7d-0175-1000-0d52-08837ce9a541"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1ab8-0175-1000-04a0-ba18ae7391d2","parent":{"ref":"EID6eed1a7d-0175-1000-0d52-08837ce9a541"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID60c6a444-513d-40c4-af53-83b504f8233f"},{"ref":"EID7319d248-4677-4de3-994d-0e7aa5f32eca"},{"ref":"EID2a41aff8-d923-4cca-8b99-964d1581f772"}]},"parent":{"ref":"EID6eed1698-0175-1000-a979-1f5178977038"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:17:13Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:17:12Z","duration":1056,"status":"PASSED"},{"id":"EID6eed1ab8-0175-1000-0ad3-f12db3255794","testStepResults":{"TestStepResult":{"id":"EID6eed1ab8-0175-1000-e315-ddc0a68482b6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1aff-0175-1000-4fc6-22b3ebce2580","parent":{"ref":"EID6eed1ab8-0175-1000-e315-ddc0a68482b6"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1aff-0175-1000-647e-93b7fe40f98d","parent":{"ref":"EID6eed1ab8-0175-1000-e315-ddc0a68482b6"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1aff-0175-1000-1cca-9ee7e6d8359f","parent":{"ref":"EID6eed1ab8-0175-1000-e315-ddc0a68482b6"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1aff-0175-1000-042d-aca9df833cc6","parent":{"ref":"EID6eed1ab8-0175-1000-e315-ddc0a68482b6"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1c61d85d-69e3-47fa-9ec1-7115f46dfb9b"},{"ref":"EID28e35f45-f3b5-4f91-bb32-a2f078c76844"},{"ref":"EID941e1d00-00f2-46b8-b396-abbee8f2a7e2"}]},"parent":{"ref":"EID6eed1ab8-0175-1000-0ad3-f12db3255794"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:17:14Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6eed0f0e-0175-1000-7d7e-3796251a6e30"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:17:14Z","duration":71,"status":"PASSED"}]},"parent":{"ref":"EID98b9bc2e-08a7-49fb-9e46-21b3e464d897"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:17:11Z","duration":3057,"status":"PASSED"},{"id":"EID6eed1b00-0175-1000-eb0b-33d937704057","testCaseResults":{"TestCaseResult":[{"id":"EID6eed1b00-0175-1000-760c-c38d04f85058","testStepResults":{"TestStepResult":[{"id":"EID6eed1b00-0175-1000-12a9-98f35b72223e","parent":{"ref":"EID6eed1b00-0175-1000-760c-c38d04f85058"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:17:14Z","duration":265,"status":"PASSED"},{"id":"EID6eed1b00-0175-1000-a4c9-cf1793251c2d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1b77-0175-1000-ee9e-9f93a7858326","parent":{"ref":"EID6eed1b00-0175-1000-a4c9-cf1793251c2d"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1b77-0175-1000-67c7-d674802d14be","parent":{"ref":"EID6eed1b00-0175-1000-a4c9-cf1793251c2d"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1b77-0175-1000-3703-58de27af6959","parent":{"ref":"EID6eed1b00-0175-1000-a4c9-cf1793251c2d"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4b54361-b973-4ac4-8de7-413ee12c2a1b"},{"ref":"EID62143091-6a7c-4090-bebf-a3a4f0feb801"},{"ref":"EID500c3cc9-54fa-4da2-b5c2-3ebc6bcf8088"}]},"parent":{"ref":"EID6eed1b00-0175-1000-760c-c38d04f85058"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:17:14Z","duration":39,"status":"PASSED"},{"id":"EID6eed1b80-0175-1000-a619-bd3468c849fa","attachments":{"attachment":{"ref":"EIDb7290e9b-ff51-41be-87f3-32eda5e99fec"}},"parent":{"ref":"EID6eed1b00-0175-1000-760c-c38d04f85058"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:17:14Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:17:14Z","duration":140,"status":"PASSED"},{"id":"EID6eed1b8c-0175-1000-3166-44ce7a533d25","testStepResults":{"TestStepResult":[{"id":"EID6eed1b8c-0175-1000-34c9-5a828f51006c","parent":{"ref":"EID6eed1b8c-0175-1000-3166-44ce7a533d25"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:17:14Z","duration":265,"status":"PASSED"},{"id":"EID6eed1b8c-0175-1000-e65b-de8cb242009a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1c76-0175-1000-241c-4f9be5af389b","parent":{"ref":"EID6eed1b8c-0175-1000-e65b-de8cb242009a"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1c76-0175-1000-7e9b-1a05b11ebf91","parent":{"ref":"EID6eed1b8c-0175-1000-e65b-de8cb242009a"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1c76-0175-1000-34ab-517dde6ac8b4","parent":{"ref":"EID6eed1b8c-0175-1000-e65b-de8cb242009a"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1c76-0175-1000-65eb-a6b78a4b7bf0","parent":{"ref":"EID6eed1b8c-0175-1000-e65b-de8cb242009a"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID992f8e5a-87f4-4473-a328-4c504a35df98"},{"ref":"EID6066b446-404e-4cba-af43-b1d94fcdd1d1"},{"ref":"EID8dc4b373-8919-4305-9c00-4595f1c57d26"}]},"parent":{"ref":"EID6eed1b8c-0175-1000-3166-44ce7a533d25"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:17:14Z","duration":135,"status":"PASSED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:17:14Z","duration":234,"status":"PASSED"},{"id":"EID6eed1c76-0175-1000-9937-d9deaa92ec66","testStepResults":{"TestStepResult":[{"id":"EID6eed1c76-0175-1000-1035-0bcc38021a2d","parent":{"ref":"EID6eed1c76-0175-1000-9937-d9deaa92ec66"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:17:14Z","duration":265,"status":"PASSED"},{"id":"EID6eed1c76-0175-1000-f877-735ffbb46f0d","parent":{"ref":"EID6eed1c76-0175-1000-9937-d9deaa92ec66"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1c76-0175-1000-ca5a-f169e4711210","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed1d36-0175-1000-41cb-15023905d412","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1d37-0175-1000-fe84-2b46e7ebe7bc","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1d37-0175-1000-7c4c-40d7d7832190","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1d37-0175-1000-b72f-58824fbbb0ef","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1d37-0175-1000-5800-d9fd9429313b","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1d37-0175-1000-ff51-2cafb71c2a88","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6eed1d37-0175-1000-40a1-e5c9381aab7d","parent":{"ref":"EID6eed1c76-0175-1000-ca5a-f169e4711210"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID70fa5ec0-d531-4f1e-b436-4299daba59c9"},{"ref":"EID0ab5d121-009a-488e-802e-84e3906e8cc1"},{"ref":"EID3698e39c-771f-4a52-b419-46625decb7bc"}]},"parent":{"ref":"EID6eed1c76-0175-1000-9937-d9deaa92ec66"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:17:14Z","duration":89,"status":"PASSED"},{"id":"EID6eed1d3f-0175-1000-5ce5-b634a9b62249","invokedTests":{"":null,"TestStepResult":{"id":"EID6eed1d61-0175-1000-823f-5ce8a5a37919","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed9423-0175-1000-f08e-ef00f76dafc7","parent":{"ref":"EID6eed1d61-0175-1000-823f-5ce8a5a37919"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-28T11:17:45Z","duration":0,"status":"PASSED"},{"id":"EID6eed9423-0175-1000-007f-1d4071ce3a23","parent":{"ref":"EID6eed1d61-0175-1000-823f-5ce8a5a37919"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-28T11:17:45Z","duration":0,"status":"PASSED"},{"id":"EID6eed9423-0175-1000-027b-994b5d97573c","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"parent":{"ref":"EID6eed1d61-0175-1000-823f-5ce8a5a37919"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-28T11:17:45Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9637b9cf-dc4f-4a6a-96d9-4276b668163d"},{"ref":"EID62b73d4c-219b-4793-be83-8370a5c69b2f"},{"ref":"EID1794fe0a-663a-4f06-b6c0-a89484db222b"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-28T11:17:14Z","duration":22542,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EIDff764767-ffc5-4dd9-b05a-857d5dec74ae"},{"ref":"EID16973d9c-f303-409e-8e08-e1ee8f7240a6"}]},"parent":{"ref":"EID6eed1c76-0175-1000-9937-d9deaa92ec66"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-28T11:17:14Z","duration":32524,"status":"FAILED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:17:14Z","duration":32752,"status":"FAILED"},{"id":"EID6eed9c67-0175-1000-bf70-ac3f3e7710e1","testStepResults":{"TestStepResult":[{"id":"EID6eed9c67-0175-1000-001f-35d4e4b038de","parent":{"ref":"EID6eed9c67-0175-1000-bf70-ac3f3e7710e1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:17:47Z","duration":265,"status":"PASSED"},{"id":"EID6eed9c67-0175-1000-9158-ebc8bd4e75b4","parent":{"ref":"EID6eed9c67-0175-1000-bf70-ac3f3e7710e1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6eed9c67-0175-1000-20f2-5b8a157b401e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eed9d4b-0175-1000-5f56-1425cca2d3e9","parent":{"ref":"EID6eed9c67-0175-1000-20f2-5b8a157b401e"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6eed9d4b-0175-1000-4068-fc972c0fb990","parent":{"ref":"EID6eed9c67-0175-1000-20f2-5b8a157b401e"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6eed9d4b-0175-1000-1bfc-bca2ea12173d","parent":{"ref":"EID6eed9c67-0175-1000-20f2-5b8a157b401e"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6eed9d4b-0175-1000-c821-96dbbda6392f","parent":{"ref":"EID6eed9c67-0175-1000-20f2-5b8a157b401e"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6eed9d4b-0175-1000-b968-c98783d2479b","parent":{"ref":"EID6eed9c67-0175-1000-20f2-5b8a157b401e"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6eed9d4b-0175-1000-91f3-356c154cb071","parent":{"ref":"EID6eed9c67-0175-1000-20f2-5b8a157b401e"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:17:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb373085b-17c8-46a1-ae1e-f9843f5fd462"},{"ref":"EID4a5875ec-8e22-4b1e-8e45-c53457e489f6"},{"ref":"EID4b1540d4-16f8-4e9e-b6fe-4cf8c7d13832"}]},"parent":{"ref":"EID6eed9c67-0175-1000-bf70-ac3f3e7710e1"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:17:47Z","duration":126,"status":"PASSED"},{"id":"EID6eed9d55-0175-1000-f9e3-f4d48c5b75c0","parent":{"ref":"EID6eed9c67-0175-1000-bf70-ac3f3e7710e1"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-28T11:17:47Z","duration":34,"status":"PASSED"},{"id":"EID6eed9d77-0175-1000-d112-8a5c7556e585","parent":{"ref":"EID6eed9c67-0175-1000-bf70-ac3f3e7710e1"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-28T11:17:47Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:17:47Z","duration":273,"status":"UNDEFINED"},{"id":"EID6eed9d78-0175-1000-429f-ae2e3fb14e22","testStepResults":{"TestStepResult":[{"id":"EID6eed9d78-0175-1000-4e8e-51dd47c89adc","parent":{"ref":"EID6eed9d78-0175-1000-429f-ae2e3fb14e22"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:17:47Z","duration":265,"status":"PASSED"},{"id":"EID6eed9d78-0175-1000-7e18-8611c5f8760e","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"attachments":{"attachment":[{"ref":"EIDd4a76ac1-1900-4095-b4d7-12189ffd5929"},{"ref":"EID76b1566c-53c2-49d1-bda8-c64ce868e54f"},{"ref":"EID416f09bf-049e-45b3-bd85-7d8aebad55e2"},{"ref":"EID3d1e8c39-3460-48b2-a060-b55b5f78a784"},{"ref":"EID308b7433-67f2-45de-b66b-3cf802491fa1"},{"ref":"EID739013f5-36b6-4f75-b5ef-c48beb375a97"},{"ref":"EIDa0648bec-3ea7-4eec-93bf-bc28357fb2ce"},{"ref":"EIDbf580d50-063e-4a97-bfb3-b4368024e397"},{"ref":"EID76356c6c-d611-4b2b-bbe5-7fd304c862c1"},{"ref":"EID488e7fd4-99a3-47d2-9e3f-3db9bb224824"},{"ref":"EIDc0bb313b-150a-4150-a99c-2265b14a13f8"},{"ref":"EID513a1626-bfa6-4ad5-8bbc-3eef05aff352"},{"ref":"EID0df52c6a-441a-4212-880c-c29446583595"},{"ref":"EIDb0cf8ae3-e87f-49be-b4bd-7f0248f05306"},{"ref":"EID6425eb2c-e075-4d3e-ba88-fb38fbc0a80c"},{"ref":"EIDca59f1db-0091-450b-9cfd-d8a8579b078d"},{"ref":"EIDdd8c0953-594f-4249-aeb8-5c8d1cee34ff"},{"ref":"EIDedeb70c4-e998-45e0-a117-dface4bf9811"},{"ref":"EIDdc399bbf-0515-4c4b-ae76-e2164f9f5ba0"}]},"parent":{"ref":"EID6eed9d78-0175-1000-429f-ae2e3fb14e22"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:17:47Z","duration":21396,"status":"SKIPPED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:17:47Z","duration":21813,"status":"SKIPPED"},{"id":"EID6eedf2af-0175-1000-e9c6-528ce0bc2aeb","testStepResults":{"TestStepResult":[{"id":"EID6eedf2be-0175-1000-a268-98532b22170f","parent":{"ref":"EID6eedf2af-0175-1000-e9c6-528ce0bc2aeb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:18:09Z","duration":265,"status":"PASSED"},{"id":"EID6eedf2be-0175-1000-63e1-8f095cb09c2e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eedf3bb-0175-1000-6a31-a9c1eb3a3c96","parent":{"ref":"EID6eedf2be-0175-1000-63e1-8f095cb09c2e"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf3bb-0175-1000-107d-7cc5a9d6716f","parent":{"ref":"EID6eedf2be-0175-1000-63e1-8f095cb09c2e"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf3bb-0175-1000-441e-ed28ac8be7d7","parent":{"ref":"EID6eedf2be-0175-1000-63e1-8f095cb09c2e"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf3bb-0175-1000-8f19-54210f22ba47","parent":{"ref":"EID6eedf2be-0175-1000-63e1-8f095cb09c2e"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92b5926f-cc17-4337-ba4f-81c2c0f55b58"},{"ref":"EID0bdfe68f-39fb-4729-beb4-b6a768160581"},{"ref":"EIDeb9e2ee7-68bc-459d-9f9b-6ed8ba8971a0"}]},"parent":{"ref":"EID6eedf2af-0175-1000-e9c6-528ce0bc2aeb"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:18:09Z","duration":175,"status":"PASSED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:18:09Z","duration":268,"status":"PASSED"},{"id":"EID6eedf3bb-0175-1000-a889-a37d6697fdf0","testStepResults":{"TestStepResult":[{"id":"EID6eedf3bb-0175-1000-fd5d-cdb46a6427e5","parent":{"ref":"EID6eedf3bb-0175-1000-a889-a37d6697fdf0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:18:09Z","duration":266,"status":"PASSED"},{"id":"EID6eedf3bc-0175-1000-95cb-0b54450a7450","parent":{"ref":"EID6eedf3bb-0175-1000-a889-a37d6697fdf0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf3bc-0175-1000-8392-e0e9d00e2a0e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eedf467-0175-1000-4d79-5393d2ab5f56","parent":{"ref":"EID6eedf3bc-0175-1000-8392-e0e9d00e2a0e"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf467-0175-1000-e79a-57d5602a5864","parent":{"ref":"EID6eedf3bc-0175-1000-8392-e0e9d00e2a0e"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf467-0175-1000-e674-856d07ffc738","parent":{"ref":"EID6eedf3bc-0175-1000-8392-e0e9d00e2a0e"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf467-0175-1000-40df-4c3db420abea","parent":{"ref":"EID6eedf3bc-0175-1000-8392-e0e9d00e2a0e"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID405b684d-d0dc-4c76-98d2-66b1bbe42feb"},{"ref":"EIDae060a5e-5126-446f-acd6-39d92e9a8cc2"},{"ref":"EID2728032c-0b69-4687-8715-ada7c109112e"}]},"parent":{"ref":"EID6eedf3bb-0175-1000-a889-a37d6697fdf0"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:18:09Z","duration":99,"status":"PASSED"},{"id":"EID6eedf467-0175-1000-6c83-998786286726","attachments":{"attachment":{"ref":"EIDc1620120-e6b1-409e-a28b-7d9ce13ca5e7"}},"parent":{"ref":"EID6eedf3bb-0175-1000-a889-a37d6697fdf0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:18:09Z","duration":12,"status":"PASSED"},{"id":"EID6eedf480-0175-1000-9617-e1fcb50b4cc7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eedf485-0175-1000-1591-2c7fbecabaae","parent":{"ref":"EID6eedf480-0175-1000-9617-e1fcb50b4cc7"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf485-0175-1000-4db7-d28b6a52f849","parent":{"ref":"EID6eedf480-0175-1000-9617-e1fcb50b4cc7"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6eedf485-0175-1000-419a-8690dfb2fd62","parent":{"ref":"EID6eedf480-0175-1000-9617-e1fcb50b4cc7"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID53d5b6b1-d21e-4a9b-9556-ef60ca16fae6"},{"ref":"EID9ad0814b-12b7-4143-8b77-d92157b90863"}]},"parent":{"ref":"EID6eedf3bb-0175-1000-a889-a37d6697fdf0"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:18:09Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eed1b00-0175-1000-eb0b-33d937704057"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:18:09Z","duration":202,"status":"PASSED"}]},"parent":{"ref":"EID98b9bc2e-08a7-49fb-9e46-21b3e464d897"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:17:14Z","duration":55685,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID62b73d4c-219b-4793-be83-8370a5c69b2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID62b73d4c-219b-4793-be83-8370a5c69b2f"}},{"type":"ServiceResponse","id":"EID9bce396b-d7a6-45ba-8282-a5260d9c4360","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID9bce396b-d7a6-45ba-8282-a5260d9c4360"}},{"type":"ServiceEndpoint","id":"EID7036f4a0-fdd2-448b-8b0b-dc9c2d4b1c0a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDbd2821ee-871f-4c5b-bb5e-f6540d5ea68d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDd6a00ad7-b11c-4926-b0d8-f49c979cb09b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID4f33a761-bdd1-4771-aedc-3dd136708cd6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID865054f9-411d-4fee-af34-1cca61537a4d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID865054f9-411d-4fee-af34-1cca61537a4d"}},{"type":"ServiceResponse","id":"EID6f937cab-eed2-4874-b227-110eb9b7de41","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID6f937cab-eed2-4874-b227-110eb9b7de41"}},{"type":"Message","id":"EIDb7290e9b-ff51-41be-87f3-32eda5e99fec","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDb7290e9b-ff51-41be-87f3-32eda5e99fec"}},{"type":"ServiceEndpoint","id":"EIDefbaed55-1677-496f-8e27-5379a0f8894b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDb8b4fe2b-9245-4776-a710-ae3a5236aa7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID8a1af29e-e23d-4060-8105-51f9ee734417","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDf50e06c0-0e39-4fd7-a94a-2476ab665441","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID758d7cea-4ea3-4916-8f9d-d09849977a0e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID12b41b52-5e50-42a7-bb88-ef4ad42bd015","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID12b41b52-5e50-42a7-bb88-ef4ad42bd015"}},{"type":"ServiceEndpoint","id":"EIDfebcb325-0ade-4251-b01d-bb1a5200381e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID825e64de-51dd-4d0f-87bb-4f9f1f7af156","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID825e64de-51dd-4d0f-87bb-4f9f1f7af156"}},{"type":"Message","id":"EID739013f5-36b6-4f75-b5ef-c48beb375a97","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID739013f5-36b6-4f75-b5ef-c48beb375a97"}},{"type":"GetParameter","id":"EID2728032c-0b69-4687-8715-ada7c109112e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID53d5b6b1-d21e-4a9b-9556-ef60ca16fae6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EIDb0336f09-88a7-49c0-b6b6-597099bdf276","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID4daef962-bf86-41b5-b8cf-cafda41b4502","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID4daef962-bf86-41b5-b8cf-cafda41b4502"}},{"type":"ServiceResponse","id":"EID4ce4a6df-9410-41a4-a8cc-b89f6adcd57e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID4ce4a6df-9410-41a4-a8cc-b89f6adcd57e"}},{"type":"Message","id":"EID2f5cd7a4-3ef0-497b-b560-2bba83ad9ea5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID2f5cd7a4-3ef0-497b-b560-2bba83ad9ea5"}},{"type":"Message","id":"EIDa1eb3534-fdce-433e-ae34-df9663a49d89","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDa1eb3534-fdce-433e-ae34-df9663a49d89"}},{"type":"GetParameter","id":"EIDb8715d63-cfa4-4b39-8cb2-fc5463fd2b18","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID5caf2af9-8239-4668-9922-8292d970ebbd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID5caf2af9-8239-4668-9922-8292d970ebbd"}},{"type":"Message","id":"EID0f319149-b271-4f81-b2ae-5fa376e2ecbf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID0f319149-b271-4f81-b2ae-5fa376e2ecbf"}},{"type":"ServiceResponse","id":"EID969bc0f2-79cf-4413-b0d3-f753b0dfc9b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID969bc0f2-79cf-4413-b0d3-f753b0dfc9b2"}},{"type":"GetParameter","id":"EID968ef8e8-a137-4985-8eaf-eb998706ebcc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID8e5af624-994c-4079-aa4d-d1a7f587e6c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2Rvd25sb2Fkcy9pbnNwaXJlLXB2LXBzLm5scHMtd2F2LnppcA=="},{"type":"ServiceEndpoint","id":"EID992f8e5a-87f4-4473-a328-4c504a35df98","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID9ad0814b-12b7-4143-8b77-d92157b90863","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID36d19e02-4518-4307-89c7-8c787a78a1cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID36d19e02-4518-4307-89c7-8c787a78a1cf"}},{"type":"GetParameter","id":"EID4700e693-a95f-4494-892d-f27547158f9f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID0df52c6a-441a-4212-880c-c29446583595","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID0df52c6a-441a-4212-880c-c29446583595"}},{"type":"GetParameter","id":"EID51f94298-ac56-4709-b4d0-ccc662f43539","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID45c41682-fd77-490b-b608-e8da68c56faa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID958c4c0a-5f9d-4541-b2cb-c5dafb9a4e09","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDcd08f87b-064c-42d2-87f9-f734b9b772e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3119c6d4-cfc6-42ac-bd86-f66d4645ef7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID488e7fd4-99a3-47d2-9e3f-3db9bb224824","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID488e7fd4-99a3-47d2-9e3f-3db9bb224824"}},{"type":"GetParameter","id":"EIDab677507-f958-41f5-b781-b9cade6a4bae","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDb70d1cde-de41-42cb-a0f6-2686fc911ffa","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDb70d1cde-de41-42cb-a0f6-2686fc911ffa"}},{"type":"ServiceEndpoint","id":"EIDe35d5e4d-d80f-4a22-a23a-21999e977431","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID56a78e05-1dcc-42cc-a61b-e56cfb7b303a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID56a78e05-1dcc-42cc-a61b-e56cfb7b303a"}},{"type":"ServiceEndpoint","id":"EID9c98e9db-8a56-4ec6-a481-b060724934ed","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID3aadfd54-ba60-4ae1-809b-c4bd2f053eae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID98f585eb-0c4a-42e4-80bd-d1a82fe8d420","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID98f585eb-0c4a-42e4-80bd-d1a82fe8d420"}},{"type":"ServiceEndpoint","id":"EIDf3dd11a6-7ae0-4f81-ade9-f643892b9469","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID3698e39c-771f-4a52-b419-46625decb7bc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDadf2be2b-b5df-425e-8e21-1fda2394614d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDadf2be2b-b5df-425e-8e21-1fda2394614d"}},{"type":"Message","id":"EID012200c5-f89d-4db3-a69d-6dfc2732ded4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID012200c5-f89d-4db3-a69d-6dfc2732ded4"}},{"type":"ServiceEndpoint","id":"EID840c839b-eb55-4549-a180-4669dc1bb901","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDfbb91a02-3c67-47e7-b45f-1b34ab3b3681","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDfbb91a02-3c67-47e7-b45f-1b34ab3b3681"}},{"type":"Message","id":"EIDf65fb1c3-0c76-4831-86d7-9a5b5652f5c2","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDf65fb1c3-0c76-4831-86d7-9a5b5652f5c2"}},{"type":"GetParameter","id":"EIDb78f1b99-924f-4d91-98a2-2e932c29da10","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDef12b222-e642-4f61-8d6f-d889e1dcb403","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDef12b222-e642-4f61-8d6f-d889e1dcb403"}},{"type":"ServiceEndpoint","id":"EIDf45e0e80-6b0b-47c2-98cb-ffdcbcb190b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID4a5875ec-8e22-4b1e-8e45-c53457e489f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID4a5875ec-8e22-4b1e-8e45-c53457e489f6"}},{"type":"GetParameter","id":"EIDaecfa59b-fd4c-4afb-8490-9546f6cc2f75","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID64d0a802-a36e-414a-b548-aacce1d791fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID64d0a802-a36e-414a-b548-aacce1d791fa"}},{"type":"Message","id":"EIDb380608b-d9fd-4fac-b698-c5f93d7e6c64","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDb380608b-d9fd-4fac-b698-c5f93d7e6c64"}},{"type":"ServiceResponse","id":"EID2f02c971-95d5-4d35-8994-668d17f3ac7a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID2f02c971-95d5-4d35-8994-668d17f3ac7a"}},{"type":"ServiceResponse","id":"EID119bb62c-5cf8-40a9-8dca-d960d43883a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID119bb62c-5cf8-40a9-8dca-d960d43883a7"}},{"type":"ServiceResponse","id":"EID414030f7-5f62-4790-93c5-4aa59c77dc81","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID414030f7-5f62-4790-93c5-4aa59c77dc81"}},{"type":"ServiceEndpoint","id":"EID06019364-968d-4c67-b22c-b32bd68a5c0a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3374376c-6a54-457c-ac8c-484460bcf60b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDca59f1db-0091-450b-9cfd-d8a8579b078d","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDca59f1db-0091-450b-9cfd-d8a8579b078d"}},{"type":"ServiceEndpoint","id":"EID92b5926f-cc17-4337-ba4f-81c2c0f55b58","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID29555e22-a1cb-4809-a34e-41ccf56ddf3d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID2ccd4907-389e-45af-a794-be207ee591fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID2ccd4907-389e-45af-a794-be207ee591fa"}},{"type":"GetParameter","id":"EID866a119e-7a08-4029-af94-a859ece133ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe979cc1c-e7da-4f86-8f57-1c437b3e5235","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDe979cc1c-e7da-4f86-8f57-1c437b3e5235"}},{"type":"Message","id":"EIDdc399bbf-0515-4c4b-ae76-e2164f9f5ba0","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDdc399bbf-0515-4c4b-ae76-e2164f9f5ba0"}},{"type":"Message","id":"EID186f56c0-a5b3-4403-abd7-942801e65b46","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID186f56c0-a5b3-4403-abd7-942801e65b46"}},{"type":"Message","id":"EIDf57ae985-8a9b-40f6-b6b5-cdcbc4551d86","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDf57ae985-8a9b-40f6-b6b5-cdcbc4551d86"}},{"type":"ServiceResponse","id":"EID0ab5d121-009a-488e-802e-84e3906e8cc1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID0ab5d121-009a-488e-802e-84e3906e8cc1"}},{"type":"GetParameter","id":"EIDab7209ee-96fc-43d5-81e1-4350b702e71a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDedeb70c4-e998-45e0-a117-dface4bf9811","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDedeb70c4-e998-45e0-a117-dface4bf9811"}},{"type":"ServiceResponse","id":"EID79a34bb9-54d4-4bdf-9c91-3dce14e14126","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID79a34bb9-54d4-4bdf-9c91-3dce14e14126"}},{"type":"Message","id":"EID795aa4ee-34ed-482b-97bc-798b34b781ef","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID795aa4ee-34ed-482b-97bc-798b34b781ef"}},{"type":"ServiceResponse","id":"EID0bdfe68f-39fb-4729-beb4-b6a768160581","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID0bdfe68f-39fb-4729-beb4-b6a768160581"}},{"type":"ServiceEndpoint","id":"EIDc67f805d-6905-46d6-8567-012864e5b5c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EIDaf173e47-988a-463f-89d1-20278a323cff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDeb9e2ee7-68bc-459d-9f9b-6ed8ba8971a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID9dbf1235-5db1-4183-a2f5-b4425d4876e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDf87046dd-b080-482f-803b-38a99101e451","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDf87046dd-b080-482f-803b-38a99101e451"}},{"type":"GetParameter","id":"EID1794fe0a-663a-4f06-b6c0-a89484db222b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2Rvd25sb2Fkcy9pbnNwaXJlLXB2LXBzLnppcA=="},{"type":"ServiceResponse","id":"EID383ace1b-a19a-4fd3-bd22-bf87f8cd3e6d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID383ace1b-a19a-4fd3-bd22-bf87f8cd3e6d"}},{"type":"Message","id":"EID9aaf8e52-4bd4-4ef2-bdfa-5670c50ecb70","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID9aaf8e52-4bd4-4ef2-bdfa-5670c50ecb70"}},{"type":"GetParameter","id":"EID8dc4b373-8919-4305-9c00-4595f1c57d26","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDaf6a1970-e8e1-4849-b5f7-74adda5e9930","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDaf6a1970-e8e1-4849-b5f7-74adda5e9930"}},{"type":"LogFile","id":"EID8f61d885-b9aa-44b0-a729-18e09da65515","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID8f61d885-b9aa-44b0-a729-18e09da65515"}},{"type":"ServiceEndpoint","id":"EIDcf9fbd1e-7e1b-4df4-8616-2d5d6aabf9c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7a270cd7-17c5-48fc-b321-7162a48a82eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID7a270cd7-17c5-48fc-b321-7162a48a82eb"}},{"type":"Message","id":"EID4fcebc70-fbbf-4cad-b6f5-80b0876e6e62","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID4fcebc70-fbbf-4cad-b6f5-80b0876e6e62"}},{"type":"GetParameter","id":"EID644c3224-4546-48db-9b46-8d65c0224395","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID44b8ebb3-0852-4b99-bbeb-f2e396901d91","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID44b8ebb3-0852-4b99-bbeb-f2e396901d91"}},{"type":"Message","id":"EIDdefa1412-7def-411e-953c-4f231958c3b7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDdefa1412-7def-411e-953c-4f231958c3b7"}},{"type":"Message","id":"EID58ca5bfb-63fb-4deb-9901-dfae3ccd3902","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID58ca5bfb-63fb-4deb-9901-dfae3ccd3902"}},{"type":"Message","id":"EIDbf580d50-063e-4a97-bfb3-b4368024e397","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDbf580d50-063e-4a97-bfb3-b4368024e397"}},{"type":"ServiceEndpoint","id":"EID7713bfc5-cc70-4478-b9d3-7ce1d5528eab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID7e425ac7-2967-42fa-94ba-dbb1aeeecf63","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDc65933bb-2007-40a5-a3d4-7915f046e282","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDc65933bb-2007-40a5-a3d4-7915f046e282"}},{"type":"ServiceResponse","id":"EIDa3fc6d43-8a64-46d4-8198-c3cdfc01536b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDa3fc6d43-8a64-46d4-8198-c3cdfc01536b"}},{"type":"Message","id":"EID76b1566c-53c2-49d1-bda8-c64ce868e54f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID76b1566c-53c2-49d1-bda8-c64ce868e54f"}},{"type":"GetParameter","id":"EIDdc35dc17-7c73-49f9-a4ad-f0aa95cbe99b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa4b54361-b973-4ac4-8de7-413ee12c2a1b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID43cbeb72-00fc-4bb1-879b-ac721fb00fe0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID43cbeb72-00fc-4bb1-879b-ac721fb00fe0"}},{"type":"GetParameter","id":"EIDa7e2c2c2-46ea-4b5a-b4ae-932ae84f996b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID613a77d4-021a-4442-b810-535603e8e382","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID9637b9cf-dc4f-4a6a-96d9-4276b668163d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"Message","id":"EID0d634d0b-4d90-40b0-a331-7e9a2232d0e2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID0d634d0b-4d90-40b0-a331-7e9a2232d0e2"}},{"type":"ServiceResponse","id":"EID9b45cada-cb64-434d-9f91-e9fc0bbd33d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID9b45cada-cb64-434d-9f91-e9fc0bbd33d4"}},{"type":"ServiceEndpoint","id":"EID24bc8ec4-0adb-4706-aac0-02fca0998f2b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID513a1626-bfa6-4ad5-8bbc-3eef05aff352","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID513a1626-bfa6-4ad5-8bbc-3eef05aff352"}},{"type":"ServiceResponse","id":"EIDae060a5e-5126-446f-acd6-39d92e9a8cc2","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDae060a5e-5126-446f-acd6-39d92e9a8cc2"}},{"type":"Message","id":"EID350560ce-3af8-4b4b-96a4-0738288051e1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID350560ce-3af8-4b4b-96a4-0738288051e1"}},{"type":"ServiceEndpoint","id":"EID6578592f-5b1b-4562-b74f-96834dc09810","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID601d65c1-3f22-4434-bdfa-9e6524bd8aed","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID601d65c1-3f22-4434-bdfa-9e6524bd8aed"}},{"type":"GetParameter","id":"EID8055d2a6-9297-48f5-a51d-8168541da60d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDa07619cb-6ace-45fe-aeb3-b9859d396f40","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EIDd4a76ac1-1900-4095-b4d7-12189ffd5929","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDd4a76ac1-1900-4095-b4d7-12189ffd5929"}},{"type":"ServiceResponse","id":"EID7319d248-4677-4de3-994d-0e7aa5f32eca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID7319d248-4677-4de3-994d-0e7aa5f32eca"}},{"type":"GetParameter","id":"EID78c81b16-f9c9-4d0b-9550-6cc5c47cd2e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2Rvd25sb2Fkcy9pbnNwaXJlLXB2LXBzLm5scHMtd2F2LnppcA=="},{"type":"Message","id":"EIDdd8c0953-594f-4249-aeb8-5c8d1cee34ff","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDdd8c0953-594f-4249-aeb8-5c8d1cee34ff"}},{"type":"ServiceEndpoint","id":"EID453ea488-144a-4e32-80a3-a5653435e1ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3d6a7a8d-8e81-4ea6-8483-6faceeb5bd3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDde59579e-0242-47ef-852b-d490fa3cc21d","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDde59579e-0242-47ef-852b-d490fa3cc21d"}},{"type":"GetParameter","id":"EID8111cdf6-db9a-4956-b3ec-8fa221303ff2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDa0648bec-3ea7-4eec-93bf-bc28357fb2ce","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDa0648bec-3ea7-4eec-93bf-bc28357fb2ce"}},{"type":"GetParameter","id":"EIDe2a96202-a373-494f-8f98-e0b2c439ef3e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDb0cf8ae3-e87f-49be-b4bd-7f0248f05306","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDb0cf8ae3-e87f-49be-b4bd-7f0248f05306"}},{"type":"Message","id":"EID6425eb2c-e075-4d3e-ba88-fb38fbc0a80c","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID6425eb2c-e075-4d3e-ba88-fb38fbc0a80c"}},{"type":"GetParameter","id":"EID21072406-b254-45ce-b672-52569fd8daf0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID60c6a444-513d-40c4-af53-83b504f8233f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID79e154ea-072d-480b-8199-12b5ac67e533","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID62143091-6a7c-4090-bebf-a3a4f0feb801","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID62143091-6a7c-4090-bebf-a3a4f0feb801"}},{"type":"ServiceEndpoint","id":"EIDc40611e1-122e-4508-bb15-1780ffbade7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID416f09bf-049e-45b3-bd85-7d8aebad55e2","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID416f09bf-049e-45b3-bd85-7d8aebad55e2"}},{"type":"Message","id":"EID7ca02dd7-df93-47fe-b458-3cce3b42fddd","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID7ca02dd7-df93-47fe-b458-3cce3b42fddd"}},{"type":"Message","id":"EID76356c6c-d611-4b2b-bbe5-7fd304c862c1","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID76356c6c-d611-4b2b-bbe5-7fd304c862c1"}},{"type":"ServiceEndpoint","id":"EID405b684d-d0dc-4c76-98d2-66b1bbe42feb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID95c9f4f1-a719-426b-9c91-f61f2f9b4d53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID360524b9-07cc-4955-8bed-ca49d417193a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID360524b9-07cc-4955-8bed-ca49d417193a"}},{"type":"Message","id":"EID6bd39e77-2a80-4d5d-af40-74775712ab06","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID6bd39e77-2a80-4d5d-af40-74775712ab06"}},{"type":"ServiceResponse","id":"EIDf6f043fe-5eec-4d7c-b36a-f129b735e65a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDf6f043fe-5eec-4d7c-b36a-f129b735e65a"}},{"type":"ServiceResponse","id":"EID3425a24f-3af5-48e7-9c08-dc47debc15a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID3425a24f-3af5-48e7-9c08-dc47debc15a2"}},{"type":"GetParameter","id":"EID2828722c-3d8f-44b1-a61f-368acffb058b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID941e1d00-00f2-46b8-b396-abbee8f2a7e2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID4004947c-d206-4d2b-a3dc-dcaa38ed8b50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID4004947c-d206-4d2b-a3dc-dcaa38ed8b50"}},{"type":"GetParameter","id":"EID4b1540d4-16f8-4e9e-b6fe-4cf8c7d13832","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDdbd7f528-b2dd-4155-90b4-7469db0be945","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDdbd7f528-b2dd-4155-90b4-7469db0be945"}},{"type":"ServiceEndpoint","id":"EIDf5cb8533-b204-4070-a45c-cb11484a27e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID92b4e76c-d950-4381-acb2-1eec0e658517","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EIDdc3eb5fa-1ba7-4488-abe2-b85b580e08c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDbc922cbb-57b3-487b-b64b-7ada01eec537","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDc0bb313b-150a-4150-a99c-2265b14a13f8","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDc0bb313b-150a-4150-a99c-2265b14a13f8"}},{"type":"Message","id":"EID140a3f4c-373a-4010-8386-4c62af1ba226","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID140a3f4c-373a-4010-8386-4c62af1ba226"}},{"type":"Message","id":"EID3d1e8c39-3460-48b2-a060-b55b5f78a784","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID3d1e8c39-3460-48b2-a060-b55b5f78a784"}},{"type":"Message","id":"EIDda9fb6a5-d73a-4b66-8e3e-4363d3a40204","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDda9fb6a5-d73a-4b66-8e3e-4363d3a40204"}},{"type":"ServiceResponse","id":"EIDb91da086-981f-48c1-91c8-9ed05702b61f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDb91da086-981f-48c1-91c8-9ed05702b61f"}},{"type":"ServiceResponse","id":"EID23e8dcda-a8df-43ac-a619-738aebbfe3d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID23e8dcda-a8df-43ac-a619-738aebbfe3d4"}},{"type":"ServiceResponse","id":"EID3f67fe2c-4dd5-493e-9ed2-d633ddfdf35b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID3f67fe2c-4dd5-493e-9ed2-d633ddfdf35b"}},{"type":"Message","id":"EIDea78415d-d834-44f7-aa08-8cd3e5c595cd","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDea78415d-d834-44f7-aa08-8cd3e5c595cd"}},{"type":"Message","id":"EID0a6aa751-80f0-48f3-89f4-7d850776ec61","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID0a6aa751-80f0-48f3-89f4-7d850776ec61"}},{"type":"Message","id":"EID59a0100f-29db-42f3-aa37-7bddc9ffbed4","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID59a0100f-29db-42f3-aa37-7bddc9ffbed4"}},{"type":"GetParameter","id":"EID9fa66b72-9fb9-45b0-9c50-f17d3d3f994f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID0c729bb7-a357-4c6f-8830-98f69fb1ea09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb373085b-17c8-46a1-ae1e-f9843f5fd462","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDc1620120-e6b1-409e-a28b-7d9ce13ca5e7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDc1620120-e6b1-409e-a28b-7d9ce13ca5e7"}},{"type":"Message","id":"EID70f27343-a031-470f-a8ac-8f815a65193d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID70f27343-a031-470f-a8ac-8f815a65193d"}},{"type":"GetParameter","id":"EIDf00e2e18-3b15-46f3-9fc6-61d22d3f3b7b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID2003de40-344d-4211-8a22-429c31706c6e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID2003de40-344d-4211-8a22-429c31706c6e"}},{"type":"ServiceEndpoint","id":"EID6a9f9437-e6db-44c0-bae9-ec78deb6a95e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID5957fd82-0c38-4197-b47a-707150557533","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDc394297b-85d8-4a5f-a781-42ae9073a3cd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID567ed727-ab44-45c3-9784-b752788495b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID567ed727-ab44-45c3-9784-b752788495b2"}},{"type":"Message","id":"EID16973d9c-f303-409e-8e08-e1ee8f7240a6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID16973d9c-f303-409e-8e08-e1ee8f7240a6"}},{"type":"ServiceResponse","id":"EID28e35f45-f3b5-4f91-bb32-a2f078c76844","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID28e35f45-f3b5-4f91-bb32-a2f078c76844"}},{"type":"Message","id":"EID90fc0467-ecc8-4c61-b179-83d5ca57c7cc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID90fc0467-ecc8-4c61-b179-83d5ca57c7cc"}},{"type":"ServiceEndpoint","id":"EIDedf74373-50bc-4ce3-8e60-8f10530d4ab6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID93c27415-b1f4-454a-af40-5614866aa0b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID0a52738a-1779-49af-95fb-24f2520f3abe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDdfa67c6e-ecd7-4955-8558-3bafff14e090","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID98c74e01-72a0-414a-82a5-538dd7b1a20e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID9db8be32-e05c-4ff9-9cac-3ac687ad9820","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID9db8be32-e05c-4ff9-9cac-3ac687ad9820"}},{"type":"ServiceResponse","id":"EIDd09f80de-e98f-4707-8acb-f200921fab4d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDd09f80de-e98f-4707-8acb-f200921fab4d"}},{"type":"GetParameter","id":"EID36da8638-8d6a-4563-92ed-cb6693ce2162","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID03979b6e-6926-454b-badd-e460c34d6eb3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID6066b446-404e-4cba-af43-b1d94fcdd1d1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID6066b446-404e-4cba-af43-b1d94fcdd1d1"}},{"type":"GetParameter","id":"EIDad156935-8395-4018-aefc-3ba7a514b486","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID24b91122-86bf-4914-9190-7f3697d3ba9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDfa5fb96b-1dc9-404e-9203-823b1df1679b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID5f46832c-c749-4a83-9916-c6ba8f97167a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID5f46832c-c749-4a83-9916-c6ba8f97167a"}},{"type":"ServiceResponse","id":"EID4ec7e9a3-bbd1-4e15-ab0c-ac7783ef1b3f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID4ec7e9a3-bbd1-4e15-ab0c-ac7783ef1b3f"}},{"type":"GetParameter","id":"EID2a41aff8-d923-4cca-8b99-964d1581f772","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID500c3cc9-54fa-4da2-b5c2-3ebc6bcf8088","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID308b7433-67f2-45de-b66b-3cf802491fa1","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID308b7433-67f2-45de-b66b-3cf802491fa1"}},{"type":"ServiceEndpoint","id":"EID8a8970a8-814c-4b0f-9619-a1927de636aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EIDaab90cee-5e87-4ff1-a789-fb2855aa44d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDaab90cee-5e87-4ff1-a789-fb2855aa44d4"}},{"type":"ServiceEndpoint","id":"EID67db3b08-ed10-45af-aaa4-c70488ef0eac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID7129a3ba-c543-4567-8b83-006274b452a7","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID7129a3ba-c543-4567-8b83-006274b452a7"}},{"type":"ServiceEndpoint","id":"EID70fa5ec0-d531-4f1e-b436-4299daba59c9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID6caebae8-4416-40f7-aeff-348f5132d2a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID6caebae8-4416-40f7-aeff-348f5132d2a1"}},{"type":"GetParameter","id":"EIDaeb92673-020d-4fb7-942b-456b2efda68e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDff764767-ffc5-4dd9-b05a-857d5dec74ae","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EIDff764767-ffc5-4dd9-b05a-857d5dec74ae"}},{"type":"ServiceResponse","id":"EID7e90d2f5-e498-42af-a5fe-840a27539f4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID98b9bc2e-08a7-49fb-9e46-21b3e464d897/Attachments/EID7e90d2f5-e498-42af-a5fe-840a27539f4f"}},{"type":"ServiceEndpoint","id":"EID1c61d85d-69e3-47fa-9ec1-7115f46dfb9b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID58830630-7e38-47c3-8f3b-cd622daffade","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:17:00Z","duration":69327,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:18:19.918 [print] EID8cad374d-433d-40fa-ae43-d99543aa6b86
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:18:19.918 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:18:19.918 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:18:19.918 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:18:19.918 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/8cad374d-433d-40fa-ae43-d99543aa6b86.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:18:19.918 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/8cad374d-433d-40fa-ae43-d99543aa6b86.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:18:19.918 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8cad374d-433d-40fa-ae43-d99543aa6b86/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:18:19.924 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
11:18:19.924 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:18.673
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:46.489 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 27.614
11:12:46.490 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}

11:13:14.101 response time in milliseconds: 26863.78
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:13 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:13:09 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/af8cc361-24da-4d8f-895b-272c97733cb6.json","testRuns":{"TestRun":{"id":"EIDaf8cc361-24da-4d8f-895b-272c97733cb6","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:13:06.116Z","testTasks":{"TestTask":{"id":"EID920e052e-308c-4b12-be05-bac51b505931","parent":{"ref":"EIDaf8cc361-24da-4d8f-895b-272c97733cb6"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID2452c4f2-50a0-4247-b7a1-b217efe45d5c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID2452c4f2-50a0-4247-b7a1-b217efe45d5c","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:12:46.93Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:12:51.593Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:13:14.104 [print] EIDaf8cc361-24da-4d8f-895b-272c97733cb6
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:13:14.104 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.007
11:13:14.111 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:13:14.111 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/af8cc361-24da-4d8f-895b-272c97733cb6.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:13:14.111 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:13:14.112 [print] statuspath TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6
* print 'progresspath ', progresspath 0.000
11:13:14.112 [print] progresspath  TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
Given path progresspath 0.000
When method GET 0.530
11:13:14.119 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:14.642 response time in milliseconds: 522.55
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:13:14 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"38","max":"39","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:13:14.642 [print] {
  "val": "38",
  "max": "39",
  "log": [
    "28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)",
    "28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:13:06 - Preparing 1 Test Task:",
    "28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)",
    "28.10.2020 11:13:06 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:13:06 -  with parameters: ",
    "28.10.2020 11:13:06 - etf.testcases = *",
    "28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:13:06 - Setting state to CREATED",
    "28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z",
    "28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:13:10 - Project Properties: ",
    "28.10.2020 11:13:10 - etf.testcases - * ",
    "28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ",
    "28.10.2020 11:13:10 - username -  ",
    "28.10.2020 11:13:10 - authUser -  ",
    "28.10.2020 11:13:10 - authMethod - basic ",
    "28.10.2020 11:13:10 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 46.178
11:13:14.643 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:15.150 response time in milliseconds: 506.72
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:13:15 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized"]}

11:13:15.151 retry condition not satisfied: response.val == response.max
11:13:15.151 sleeping before retry #1
11:13:20.151 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:20.668 response time in milliseconds: 515.61
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:13:20 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"93","max":"94","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:13:20.674 retry condition not satisfied: response.val == response.max
11:13:20.674 sleeping before retry #2
11:13:25.675 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:26.191 response time in milliseconds: 514.94
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:13:26 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:13:26.191 retry condition not satisfied: response.val == response.max
11:13:26.191 sleeping before retry #3
11:13:31.192 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:31.708 response time in milliseconds: 514.83
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:13:31 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:13:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:13:30 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:13:31.708 retry condition not satisfied: response.val == response.max
11:13:31.708 sleeping before retry #4
11:13:36.709 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:37.230 response time in milliseconds: 520.66
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:13:37 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:13:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:13:30 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:13:37 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:13:37.230 retry condition not satisfied: response.val == response.max
11:13:37.230 sleeping before retry #5
11:13:42.231 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:42.751 response time in milliseconds: 519.23
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:13:42 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:13:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:13:30 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:13:37 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:13:42.761 retry condition not satisfied: response.val == response.max
11:13:42.761 sleeping before retry #6
11:13:47.762 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:48.272 response time in milliseconds: 510.08
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:13:48 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:13:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:13:30 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:13:37 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:13:48.273 retry condition not satisfied: response.val == response.max
11:13:48.273 sleeping before retry #7
11:13:53.274 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:53.814 response time in milliseconds: 539.40
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:13:53 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:13:06 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:06 UTC 2020)","28.10.2020 11:13:06 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:06 - Preparing 1 Test Task:","28.10.2020 11:13:06 -  TestTask 1 (920e052e-308c-4b12-be05-bac51b505931)","28.10.2020 11:13:06 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:06 -  with parameters: ","28.10.2020 11:13:06 - etf.testcases = *","28.10.2020 11:13:06 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:06 - Setting state to CREATED","28.10.2020 11:13:06 - Changed state from CREATED to INITIALIZING","28.10.2020 11:13:09 - Starting TestRun.af8cc361-24da-4d8f-895b-272c97733cb6 at 2020-10-28T11:13:10Z","28.10.2020 11:13:10 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:13:10 - Project Properties: ","28.10.2020 11:13:10 - etf.testcases - * ","28.10.2020 11:13:10 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:13:10 - username -  ","28.10.2020 11:13:10 - authUser -  ","28.10.2020 11:13:10 - authMethod - basic ","28.10.2020 11:13:10 - TestRunTask initialized","28.10.2020 11:13:19 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:13:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:13:30 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:13:37 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:13:53.814 retry condition not satisfied: response.val == response.max
11:13:53.814 sleeping before retry #8
11:13:58.815 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:00.821 response time in milliseconds: 2005.39
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:14:00 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:14:00.821 retry condition satisfied
* print response 0.000
11:14:00.821 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.323
11:14:00.822 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:05.141 response time in milliseconds: 3260.44
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Cache-Control: public, max-age=120
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:14:04 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Last-Modified: Wed, 28 Oct 2020 11:14:00 GMT
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/af8cc361-24da-4d8f-895b-272c97733cb6.json","testRuns":{"TestRun":{"id":"EIDaf8cc361-24da-4d8f-895b-272c97733cb6","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:13:06.116Z","testTasks":{"TestTask":{"id":"EID920e052e-308c-4b12-be05-bac51b505931","parent":{"ref":"EIDaf8cc361-24da-4d8f-895b-272c97733cb6"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID2452c4f2-50a0-4247-b7a1-b217efe45d5c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID2452c4f2-50a0-4247-b7a1-b217efe45d5c","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:12:46.93Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:12:51.593Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0","testObject":{"ref":"EID2452c4f2-50a0-4247-b7a1-b217efe45d5c"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee963cb-0175-1000-9626-9b776eb570c8","testCaseResults":{"TestCaseResult":[{"id":"EID6ee963cb-0175-1000-9656-2bb0f59be69a","testStepResults":{"TestStepResult":[{"id":"EID6ee963cc-0175-1000-3425-0b7ec9017e32","parent":{"ref":"EID6ee963cb-0175-1000-9656-2bb0f59be69a"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:13:10Z","duration":17,"status":"PASSED"},{"id":"EID6ee963dd-0175-1000-d74b-1e7eda8989d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9650d-0175-1000-c30a-06b65438e9bc","parent":{"ref":"EID6ee963dd-0175-1000-d74b-1e7eda8989d3"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:13:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee9650d-0175-1000-1d6e-32c7b318ecf3","parent":{"ref":"EID6ee963dd-0175-1000-d74b-1e7eda8989d3"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:13:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee9650d-0175-1000-e7b7-86850f89ad19","parent":{"ref":"EID6ee963dd-0175-1000-d74b-1e7eda8989d3"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:13:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee9650d-0175-1000-55e8-48ebd1bbe7a5","parent":{"ref":"EID6ee963dd-0175-1000-d74b-1e7eda8989d3"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:13:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID988488d0-d320-41c7-a187-078a9bf65062"},{"ref":"EIDe4198276-405d-495a-8611-88bb492d6193"},{"ref":"EID11bd429b-027f-4e41-968b-d68a54dc279c"}]},"parent":{"ref":"EID6ee963cb-0175-1000-9656-2bb0f59be69a"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:13:10Z","duration":51,"status":"PASSED"}]},"parent":{"ref":"EID6ee963cb-0175-1000-9626-9b776eb570c8"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:13:10Z","duration":330,"status":"PASSED"},{"id":"EID6ee9651e-0175-1000-589c-cde628a3612d","testStepResults":{"TestStepResult":{"id":"EID6ee9651e-0175-1000-45ed-2f2fb41e93ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee96638-0175-1000-3ce7-a75d7647d6f0","parent":{"ref":"EID6ee9651e-0175-1000-45ed-2f2fb41e93ae"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee96638-0175-1000-4dd9-92d193eeea75","parent":{"ref":"EID6ee9651e-0175-1000-45ed-2f2fb41e93ae"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee96638-0175-1000-d6b7-0e2787d1da98","parent":{"ref":"EID6ee9651e-0175-1000-45ed-2f2fb41e93ae"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8387c9ac-53a8-4143-8639-907bdfb4ba16"},{"ref":"EID910e82ec-dcef-4a83-aa60-2e45b042bb6f"},{"ref":"EID48a5b751-ba72-4b58-9082-fe1075b81664"}]},"parent":{"ref":"EID6ee9651e-0175-1000-589c-cde628a3612d"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:13:10Z","duration":146,"status":"PASSED"}},"parent":{"ref":"EID6ee963cb-0175-1000-9626-9b776eb570c8"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:13:10Z","duration":282,"status":"PASSED"}]},"parent":{"ref":"EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:13:10Z","duration":621,"status":"PASSED"},{"id":"EID6ee96638-0175-1000-3616-6e5c864236c6","testCaseResults":{"TestCaseResult":[{"id":"EID6ee96638-0175-1000-de32-b6b4f5c284f7","testStepResults":{"TestStepResult":[{"id":"EID6ee96638-0175-1000-3294-893de0395ed2","parent":{"ref":"EID6ee96638-0175-1000-de32-b6b4f5c284f7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:13:11Z","duration":160,"status":"PASSED"},{"id":"EID6ee96646-0175-1000-a9ae-2a52a587bf21","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee966d2-0175-1000-abc7-dc9672114a7a","parent":{"ref":"EID6ee96646-0175-1000-a9ae-2a52a587bf21"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee966d2-0175-1000-4e35-6a2bd0b4dc51","parent":{"ref":"EID6ee96646-0175-1000-a9ae-2a52a587bf21"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee966d2-0175-1000-c233-f150b8dce9cc","parent":{"ref":"EID6ee96646-0175-1000-a9ae-2a52a587bf21"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee966d2-0175-1000-674c-4d72f0106e0c","parent":{"ref":"EID6ee96646-0175-1000-a9ae-2a52a587bf21"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee966d2-0175-1000-9917-8b75aefa9fcd","parent":{"ref":"EID6ee96646-0175-1000-a9ae-2a52a587bf21"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:13:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID52b4742d-b2fc-495e-859a-9f26b31d73ac"},{"ref":"EIDce7ea91c-c303-4f36-9a70-3c091c547e16"},{"ref":"EID59e20234-637a-48ea-8c03-0a54c1baf7f2"}]},"parent":{"ref":"EID6ee96638-0175-1000-de32-b6b4f5c284f7"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:13:11Z","duration":45,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:13:11Z","duration":154,"status":"PASSED"},{"id":"EID6ee966d2-0175-1000-bb89-0ed8ab68b687","testStepResults":{"TestStepResult":[{"id":"EID6ee966db-0175-1000-7ed7-36bfac2f1578","attachments":{"attachment":[{"ref":"EIDbd4e3c19-dbb3-4c3a-ae74-f41a994fb2f3"},{"ref":"EIDbfe68ade-1fe5-4ece-8a37-cd1d4da8a890"}]},"parent":{"ref":"EID6ee966d2-0175-1000-bb89-0ed8ab68b687"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:13:11Z","duration":442,"status":"PASSED"},{"id":"EID6ee96905-0175-1000-c145-bd43c2525d45","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee96a83-0175-1000-1bab-886e5c6bb907","parent":{"ref":"EID6ee96905-0175-1000-c145-bd43c2525d45"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96a83-0175-1000-522b-83c18e0b4a04","parent":{"ref":"EID6ee96905-0175-1000-c145-bd43c2525d45"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96a83-0175-1000-1211-2a5747e76d70","parent":{"ref":"EID6ee96905-0175-1000-c145-bd43c2525d45"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96a83-0175-1000-1115-fcbb6bf5c9d9","parent":{"ref":"EID6ee96905-0175-1000-c145-bd43c2525d45"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb640cedb-6e4a-4e5d-84fe-3d094d1c8e5e"},{"ref":"EIDfae84761-1a60-4a88-9486-30f6f2948e24"},{"ref":"EID5ae9cbb2-d104-4870-8e1f-9e532af87f0d"}]},"parent":{"ref":"EID6ee966d2-0175-1000-bb89-0ed8ab68b687"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:13:11Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:13:11Z","duration":945,"status":"PASSED"},{"id":"EID6ee96a8b-0175-1000-6dc6-033f8c942e32","testStepResults":{"TestStepResult":[{"id":"EID6ee96a8b-0175-1000-02fc-0465a0be6299","attachments":{"attachment":[{"ref":"EIDc203f2bf-b936-4b4f-bcdd-643f37c944b7"},{"ref":"EIDfecb158a-e41f-48b3-a1e3-ec613fc81990"}]},"parent":{"ref":"EID6ee96a8b-0175-1000-6dc6-033f8c942e32"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:13:12Z","duration":172,"status":"PASSED"},{"id":"EID6ee96b61-0175-1000-ef00-10711864ab50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee96ce4-0175-1000-346e-be7e4880f87b","parent":{"ref":"EID6ee96b61-0175-1000-ef00-10711864ab50"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96ce4-0175-1000-953f-c4850981219d","parent":{"ref":"EID6ee96b61-0175-1000-ef00-10711864ab50"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96ce4-0175-1000-8116-c333c66829fb","parent":{"ref":"EID6ee96b61-0175-1000-ef00-10711864ab50"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96ce4-0175-1000-c0e8-ff8275baf33a","parent":{"ref":"EID6ee96b61-0175-1000-ef00-10711864ab50"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee96ce4-0175-1000-6ca2-a767188c0600","parent":{"ref":"EID6ee96b61-0175-1000-ef00-10711864ab50"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:13:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb6009123-2e2f-4c58-8a0c-717a6457b167"},{"ref":"EIDcbbf2844-4e18-4ad3-a10a-9b7d5e542d1e"},{"ref":"EIDeba7704b-4e78-47e1-a201-efada057e7cd"}]},"parent":{"ref":"EID6ee96a8b-0175-1000-6dc6-033f8c942e32"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:13:12Z","duration":265,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:13:12Z","duration":616,"status":"PASSED"},{"id":"EID6ee96cf3-0175-1000-21ea-f4292182c45d","testStepResults":{"TestStepResult":[{"id":"EID6ee96cf3-0175-1000-a419-541119838040","attachments":{"attachment":[{"ref":"EIDf329fbdc-47e6-4c0d-b466-53c03e8a5385"},{"ref":"EID0d5ad8c9-09ea-45c7-a8a0-8059d61373fa"}]},"parent":{"ref":"EID6ee96cf3-0175-1000-21ea-f4292182c45d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:13:12Z","duration":198,"status":"PASSED"},{"id":"EID6ee96dee-0175-1000-5570-8e8e089d2053","parent":{"ref":"EID6ee96cf3-0175-1000-21ea-f4292182c45d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96def-0175-1000-16b5-e104526e47e3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee96eab-0175-1000-4218-2fe9b40deac7","parent":{"ref":"EID6ee96def-0175-1000-16b5-e104526e47e3"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96eab-0175-1000-7599-e6d6b472e466","parent":{"ref":"EID6ee96def-0175-1000-16b5-e104526e47e3"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96eab-0175-1000-baca-d3af61732144","parent":{"ref":"EID6ee96def-0175-1000-16b5-e104526e47e3"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96eab-0175-1000-5cfe-7c19aa073cc2","parent":{"ref":"EID6ee96def-0175-1000-16b5-e104526e47e3"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID72bbe2b0-df6c-4c5e-b1c6-dd23069cb3b5"},{"ref":"EID74192ec8-3de4-44d4-9b25-2a676211a937"},{"ref":"EIDf3474882-fade-4377-a700-3bd337d9673e"}]},"parent":{"ref":"EID6ee96cf3-0175-1000-21ea-f4292182c45d"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:13:13Z","duration":91,"status":"PASSED"},{"id":"EID6ee96eab-0175-1000-d137-f1dbec8bb0f8","attachments":{"attachment":{"ref":"EID705c4041-8f8c-423e-b95a-eb66e50820e0"}},"parent":{"ref":"EID6ee96cf3-0175-1000-21ea-f4292182c45d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:13:13Z","duration":1,"status":"PASSED"},{"id":"EID6ee96eb8-0175-1000-ef5b-51d01d17eccc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee96f4e-0175-1000-3b7c-b292342f64ba","parent":{"ref":"EID6ee96eb8-0175-1000-ef5b-51d01d17eccc"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96f4e-0175-1000-767e-a31da1850cdf","parent":{"ref":"EID6ee96eb8-0175-1000-ef5b-51d01d17eccc"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96f4e-0175-1000-c9d2-46e694c92f4d","parent":{"ref":"EID6ee96eb8-0175-1000-ef5b-51d01d17eccc"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96f4e-0175-1000-d707-ec3f21b14fb7","parent":{"ref":"EID6ee96eb8-0175-1000-ef5b-51d01d17eccc"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee96f4e-0175-1000-ba88-7af9cbb555e6","parent":{"ref":"EID6ee96eb8-0175-1000-ef5b-51d01d17eccc"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID43b23d0d-1b19-4004-bfa6-5033e5f91085"},{"ref":"EIDdba24ea9-2545-4a6e-8dfb-3c9f6e38fec4"},{"ref":"EID4ee55359-eccb-44c6-a0c1-8539db0d5143"}]},"parent":{"ref":"EID6ee96cf3-0175-1000-21ea-f4292182c45d"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:13:13Z","duration":49,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:13:12Z","duration":611,"status":"PASSED"},{"id":"EID6ee96f56-0175-1000-a362-9cb98f4a9a9f","testStepResults":{"TestStepResult":[{"id":"EID6ee96f56-0175-1000-b14e-d546acf93eeb","attachments":{"attachment":[{"ref":"EID800321f2-a8a3-4699-870a-61d0d8d580a4"},{"ref":"EID490df209-7d03-416e-ba97-d70377fd7971"}]},"parent":{"ref":"EID6ee96f56-0175-1000-a362-9cb98f4a9a9f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:13:13Z","duration":88,"status":"PASSED"},{"id":"EID6ee97005-0175-1000-337d-38d6f3417bcf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9707b-0175-1000-b41f-d73c0fe2e8fd","parent":{"ref":"EID6ee97005-0175-1000-337d-38d6f3417bcf"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee9707b-0175-1000-d94c-9e4e2757230e","parent":{"ref":"EID6ee97005-0175-1000-337d-38d6f3417bcf"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee9707b-0175-1000-2947-330c037a4e38","parent":{"ref":"EID6ee97005-0175-1000-337d-38d6f3417bcf"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee9707b-0175-1000-8ef2-6041cfffc09f","parent":{"ref":"EID6ee97005-0175-1000-337d-38d6f3417bcf"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:13:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb32d4e6-8fde-41a6-972e-92727bca9fc3"},{"ref":"EIDfc72bf0a-ae4b-4932-b110-cd715fe33cdb"},{"ref":"EIDfdecd16d-ee45-4017-874a-21ecacd2a706"}]},"parent":{"ref":"EID6ee96f56-0175-1000-a362-9cb98f4a9a9f"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:13:13Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:13:13Z","duration":302,"status":"PASSED"},{"id":"EID6ee97084-0175-1000-d035-0ac2098f37b9","testStepResults":{"TestStepResult":[{"id":"EID6ee97084-0175-1000-fd58-6e6d40d16e5a","attachments":{"attachment":[{"ref":"EIDcd1118b5-37fc-4a3b-a3ab-56211972e872"},{"ref":"EID2159bf2e-0882-4009-9ba3-118d7de73b56"}]},"parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:13:13Z","duration":115,"status":"PASSED"},{"id":"EID6ee97120-0175-1000-cf5d-8c97dad24560","parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee97120-0175-1000-9883-7b9a9e960718","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97232-0175-1000-8585-808928102dd6","parent":{"ref":"EID6ee97120-0175-1000-9883-7b9a9e960718"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee97232-0175-1000-9d00-d75c42989054","parent":{"ref":"EID6ee97120-0175-1000-9883-7b9a9e960718"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee97232-0175-1000-f9d1-9b2448927ad1","parent":{"ref":"EID6ee97120-0175-1000-9883-7b9a9e960718"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee97232-0175-1000-beeb-aef4712d1a0e","parent":{"ref":"EID6ee97120-0175-1000-9883-7b9a9e960718"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1d652d89-36fc-4979-b151-75b98205d3e6"},{"ref":"EID1b5faac4-fde4-43a8-bf24-e5494ac72ec9"},{"ref":"EIDad3a9c25-ab7c-4d72-a51e-815273774bea"}]},"parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:13:14Z","duration":168,"status":"PASSED"},{"id":"EID6ee97241-0175-1000-c4f7-a9a1ac194596","attachments":{"attachment":{"ref":"EID27680afb-0f98-4d09-b88d-817d6aea5f88"}},"parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:13:14Z","duration":1,"status":"PASSED"},{"id":"EID6ee9724e-0175-1000-5250-e9965bfc38f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee973a6-0175-1000-ac4d-eb39dc15b7bf","parent":{"ref":"EID6ee9724e-0175-1000-5250-e9965bfc38f2"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee973a6-0175-1000-0d78-13d105897eba","parent":{"ref":"EID6ee9724e-0175-1000-5250-e9965bfc38f2"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee973a6-0175-1000-0666-2bb38405543e","parent":{"ref":"EID6ee9724e-0175-1000-5250-e9965bfc38f2"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7eeef2d9-43a5-422a-9299-bdfceafa5dd2"},{"ref":"EID61065365-0cb0-4860-97ea-8111de8892b8"},{"ref":"EID1c346e24-61d2-4af4-a9a5-bfff4653e9d0"}]},"parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:13:14Z","duration":215,"status":"PASSED"},{"id":"EID6ee973a6-0175-1000-630b-0e4a70fe94cf","attachments":{"attachment":{"ref":"EID38f0ab56-0d4f-48fd-847f-0dfc5d46f1d1"}},"parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:13:14Z","duration":1,"status":"PASSED"},{"id":"EID6ee973b5-0175-1000-55a7-733c484a4ca1","attachments":{"attachment":{"ref":"EID5813f820-6ead-44d5-95cf-fb66e602d9a0"}},"parent":{"ref":"EID6ee97084-0175-1000-d035-0ac2098f37b9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:13:14Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:13:13Z","duration":829,"status":"PASSED"},{"id":"EID6ee973c8-0175-1000-eb7d-73aafdbadd36","testStepResults":{"TestStepResult":[{"id":"EID6ee973c8-0175-1000-5932-5f7795dd6696","attachments":{"attachment":[{"ref":"EID927799f3-8331-41a1-82cf-82650547aa1b"},{"ref":"EID5cd2c0cd-3e24-47f8-a918-8e3e0d4b2881"}]},"parent":{"ref":"EID6ee973c8-0175-1000-eb7d-73aafdbadd36"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:13:14Z","duration":118,"status":"PASSED"},{"id":"EID6ee9746d-0175-1000-b5af-e9db6bc1bdaa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97516-0175-1000-8489-79dc3ffa35b2","parent":{"ref":"EID6ee9746d-0175-1000-b5af-e9db6bc1bdaa"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee97516-0175-1000-5dda-d26ebb1ff904","parent":{"ref":"EID6ee9746d-0175-1000-b5af-e9db6bc1bdaa"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee97516-0175-1000-4c38-1f3bebaead6d","parent":{"ref":"EID6ee9746d-0175-1000-b5af-e9db6bc1bdaa"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee97516-0175-1000-ea8f-0e5f7702bae3","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee9746d-0175-1000-b5af-e9db6bc1bdaa"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID1115fb27-4e57-4a98-b8f2-36b92d952d5a"},{"ref":"EIDb06d05b5-154c-45a3-a8c1-d851fe49f1a7"},{"ref":"EID16cb4d4d-af17-453a-a783-a1101517a127"}]},"parent":{"ref":"EID6ee973c8-0175-1000-eb7d-73aafdbadd36"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:13:14Z","duration":54,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:13:14Z","duration":348,"status":"PASSED_MANUAL"},{"id":"EID6ee97524-0175-1000-c647-cca270434f71","testStepResults":{"TestStepResult":{"id":"EID6ee97525-0175-1000-1152-c8fc7bc13988","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97614-0175-1000-99fc-e56177017a13","parent":{"ref":"EID6ee97525-0175-1000-1152-c8fc7bc13988"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee97614-0175-1000-424b-7e217fc41201","parent":{"ref":"EID6ee97525-0175-1000-1152-c8fc7bc13988"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee97614-0175-1000-5051-466989319b21","parent":{"ref":"EID6ee97525-0175-1000-1152-c8fc7bc13988"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee97614-0175-1000-c3c5-afa89843c289","parent":{"ref":"EID6ee97525-0175-1000-1152-c8fc7bc13988"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5806b538-3994-48c0-82f9-ab7128d4b7c6"},{"ref":"EID6d65dae2-0a8d-4e75-befa-bac77a385869"},{"ref":"EID43219905-d953-4f5b-bc63-db7202646e2b"}]},"parent":{"ref":"EID6ee97524-0175-1000-c647-cca270434f71"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:13:15Z","duration":142,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:13:15Z","duration":249,"status":"PASSED"},{"id":"EID6ee9761d-0175-1000-8734-3add28834ade","testStepResults":{"TestStepResult":{"id":"EID6ee9761d-0175-1000-fe7d-fe203e89e72e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee976b9-0175-1000-e9fc-a5e290ad934a","parent":{"ref":"EID6ee9761d-0175-1000-fe7d-fe203e89e72e"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee976b9-0175-1000-9996-98bb86f71cb4","parent":{"ref":"EID6ee9761d-0175-1000-fe7d-fe203e89e72e"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee976b9-0175-1000-caf3-75b9e935e7a5","parent":{"ref":"EID6ee9761d-0175-1000-fe7d-fe203e89e72e"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee976b9-0175-1000-145f-388cf2c9adb9","parent":{"ref":"EID6ee9761d-0175-1000-fe7d-fe203e89e72e"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:13:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0d158982-3c8b-48a4-ac47-51cabdfd48e2"},{"ref":"EIDe0d9a1e4-64d8-4f73-af63-8a0c198c5a7f"},{"ref":"EIDf4c4561a-03c0-4d6f-afaa-c26a0c73b8c5"}]},"parent":{"ref":"EID6ee9761d-0175-1000-8734-3add28834ade"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:13:15Z","duration":54,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:13:15Z","duration":156,"status":"PASSED"},{"id":"EID6ee976ba-0175-1000-c9a9-b41150309036","testStepResults":{"TestStepResult":[{"id":"EID6ee976ba-0175-1000-8bc5-1af296bf6e19","attachments":{"attachment":[{"ref":"EIDcf040976-882a-4ecf-8356-e07698f97f31"},{"ref":"EID666b5b50-2cae-4f44-bc78-d028bc930bfb"},{"ref":"EID0bc15d36-4e4d-478c-bf43-56ab447c6fab"},{"ref":"EID165c7154-be1f-479d-bf6d-bd98db7f464d"},{"ref":"EID2c0251a3-d887-4d1a-8374-d88d805f2de5"},{"ref":"EID14d7e6e7-d3b3-4f4a-b3a6-5dda9531a6c8"},{"ref":"EID7520f071-31db-4960-a208-e7eb1fa464a9"},{"ref":"EID11176a7d-72dc-42c0-8f47-a4a655c350e4"},{"ref":"EID40a0768e-9225-4899-b5f7-8d476fae39bf"},{"ref":"EIDfe2ea799-6032-4be2-b334-09415abd1d1b"},{"ref":"EIDeedfc7d3-d9a9-4994-8bf1-3dd7544815b1"},{"ref":"EID30a801e6-0563-4701-b34a-f5ea917d939d"}]},"parent":{"ref":"EID6ee976ba-0175-1000-c9a9-b41150309036"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:13:15Z","duration":448,"status":"PASSED"},{"id":"EID6ee9799e-0175-1000-a92e-c7949ab58e48","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97b0b-0175-1000-5ca3-af50ed6f6893","parent":{"ref":"EID6ee9799e-0175-1000-a92e-c7949ab58e48"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97b0b-0175-1000-bd70-baca89f13c74","parent":{"ref":"EID6ee9799e-0175-1000-a92e-c7949ab58e48"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97b0b-0175-1000-6285-ebff2ade42ac","parent":{"ref":"EID6ee9799e-0175-1000-a92e-c7949ab58e48"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97b0b-0175-1000-a159-9c1fa4682f26","parent":{"ref":"EID6ee9799e-0175-1000-a92e-c7949ab58e48"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97b0b-0175-1000-e6f3-7e84019a7ad3","parent":{"ref":"EID6ee9799e-0175-1000-a92e-c7949ab58e48"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6a50c33a-f359-4a18-868e-7734fdc6a900"},{"ref":"EID7440299b-4e52-46cc-83dd-fd0c1f04e4a9"},{"ref":"EID850fa7d1-a619-40a2-8999-c586a19334e4"}]},"parent":{"ref":"EID6ee976ba-0175-1000-c9a9-b41150309036"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:13:16Z","duration":231,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:13:15Z","duration":1114,"status":"PASSED"},{"id":"EID6ee97b14-0175-1000-04da-4b3cc67a1959","testStepResults":{"TestStepResult":{"id":"EID6ee97b14-0175-1000-9f64-4b049edbe4c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97bb8-0175-1000-b444-479fbba7b9a4","parent":{"ref":"EID6ee97b14-0175-1000-9f64-4b049edbe4c5"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97bb8-0175-1000-baa7-eef6f4f40832","parent":{"ref":"EID6ee97b14-0175-1000-9f64-4b049edbe4c5"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97bb8-0175-1000-b659-5467f7dc137a","parent":{"ref":"EID6ee97b14-0175-1000-9f64-4b049edbe4c5"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee97bb8-0175-1000-5136-3b1ae01345a0","parent":{"ref":"EID6ee97b14-0175-1000-9f64-4b049edbe4c5"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:13:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2754d1eb-b4db-446e-ac84-c5fd32dae33d"},{"ref":"EIDce25bc19-9fd7-4ff8-b7a3-4a498069f801"},{"ref":"EID4626dd16-9822-4f14-bbc2-75ded8c18580"}]},"parent":{"ref":"EID6ee97b14-0175-1000-04da-4b3cc67a1959"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:13:16Z","duration":57,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:13:16Z","duration":173,"status":"PASSED"},{"id":"EID6ee97bc2-0175-1000-cd91-056e853978ad","testStepResults":{"TestStepResult":{"id":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97d60-0175-1000-6881-899ce3ef2734","parent":{"ref":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97d60-0175-1000-0b6d-8dd138a275de","parent":{"ref":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97d60-0175-1000-4e5a-467b66a47f2d","parent":{"ref":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97d60-0175-1000-4e03-d5581b11196d","parent":{"ref":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97d60-0175-1000-1c34-190643531524","parent":{"ref":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97d60-0175-1000-218f-bda4bdc1ae03","parent":{"ref":"EID6ee97bc2-0175-1000-19b8-d8ac1340e590"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd0115e7-4ab4-4825-b5ad-92935f049aab"},{"ref":"EID2f2dbe14-4575-4743-9ec4-f148f7a09434"},{"ref":"EID142b6e13-04b0-4301-ac8e-43b01afd5970"}]},"parent":{"ref":"EID6ee97bc2-0175-1000-cd91-056e853978ad"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:13:16Z","duration":243,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:13:16Z","duration":414,"status":"PASSED"},{"id":"EID6ee97d61-0175-1000-0fe4-4fc55e392495","testStepResults":{"TestStepResult":{"id":"EID6ee97d61-0175-1000-2457-42e7d3aeec70","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97e56-0175-1000-123c-b21cc72226af","parent":{"ref":"EID6ee97d61-0175-1000-2457-42e7d3aeec70"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97e56-0175-1000-d6de-988d51c2e6f6","parent":{"ref":"EID6ee97d61-0175-1000-2457-42e7d3aeec70"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97e56-0175-1000-7674-28e400db915a","parent":{"ref":"EID6ee97d61-0175-1000-2457-42e7d3aeec70"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97e56-0175-1000-7beb-15f7beaf89e4","parent":{"ref":"EID6ee97d61-0175-1000-2457-42e7d3aeec70"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97e56-0175-1000-4c18-dc32c388027b","parent":{"ref":"EID6ee97d61-0175-1000-2457-42e7d3aeec70"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97e56-0175-1000-697b-ba72303c0283","parent":{"ref":"EID6ee97d61-0175-1000-2457-42e7d3aeec70"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID85bdfcd8-114d-4180-badb-5ca050eb0a15"},{"ref":"EIDb4fa8678-6eaf-4bc0-88a7-b6d520d686af"},{"ref":"EID18884f9e-948d-4899-9947-321f91daa27e"}]},"parent":{"ref":"EID6ee97d61-0175-1000-0fe4-4fc55e392495"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:13:17Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:13:17Z","duration":245,"status":"PASSED"},{"id":"EID6ee97e56-0175-1000-55a5-da7ecce35b76","testStepResults":{"TestStepResult":{"id":"EID6ee97e56-0175-1000-bc31-7c5c81c73036","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee97f05-0175-1000-f4e3-9cea11ae90f4","parent":{"ref":"EID6ee97e56-0175-1000-bc31-7c5c81c73036"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97f06-0175-1000-bf90-d7ae891d83dc","parent":{"ref":"EID6ee97e56-0175-1000-bc31-7c5c81c73036"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97f06-0175-1000-78db-fcd6d9a232e6","parent":{"ref":"EID6ee97e56-0175-1000-bc31-7c5c81c73036"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee97f06-0175-1000-9629-4f9cd7c2f178","parent":{"ref":"EID6ee97e56-0175-1000-bc31-7c5c81c73036"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:13:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7a8a143d-8299-4ce0-80be-58a64546c22b"},{"ref":"EIDe9f3d152-bbc1-4c24-8f92-d0c52a38027c"},{"ref":"EID53fb178d-4816-400b-b759-52e6dac8bdd3"}]},"parent":{"ref":"EID6ee97e56-0175-1000-55a5-da7ecce35b76"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:13:17Z","duration":84,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:13:17Z","duration":176,"status":"PASSED"},{"id":"EID6ee97f06-0175-1000-d49f-6ebad7b2f0c8","testStepResults":{"TestStepResult":[{"id":"EID6ee97f06-0175-1000-0446-d795c5b7d814","attachments":{"attachment":[{"ref":"EID68830de5-4ced-498a-8602-fc8cf5bbe58f"},{"ref":"EIDc7231a94-4bb9-4e79-bc24-5589fc176cfb"},{"ref":"EIDdf7ec732-c096-4aaa-81cd-e14cc8f1ac87"},{"ref":"EID4b2d7bf3-89d9-4308-a265-e05026535dd7"}]},"parent":{"ref":"EID6ee97f06-0175-1000-d49f-6ebad7b2f0c8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:13:17Z","duration":615,"status":"PASSED"},{"id":"EID6ee981ed-0175-1000-9ba2-96398b639e2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9836a-0175-1000-319c-577211ca03e1","parent":{"ref":"EID6ee981ed-0175-1000-9ba2-96398b639e2a"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:13:18Z","duration":1,"status":"PASSED"},{"id":"EID6ee9836b-0175-1000-3d58-877249947b6b","parent":{"ref":"EID6ee981ed-0175-1000-9ba2-96398b639e2a"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:13:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee9836b-0175-1000-b195-beeab0f12ea3","parent":{"ref":"EID6ee981ed-0175-1000-9ba2-96398b639e2a"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:13:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee9836b-0175-1000-7f1f-49915bf7c6c8","parent":{"ref":"EID6ee981ed-0175-1000-9ba2-96398b639e2a"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:13:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd36f7708-ff68-4255-92f2-237f7713d84d"},{"ref":"EIDce260578-c88c-4c17-b389-73148d5b9ec2"},{"ref":"EIDf7d980a0-d8b8-454f-9b74-5d184385d310"}]},"parent":{"ref":"EID6ee97f06-0175-1000-d49f-6ebad7b2f0c8"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:13:18Z","duration":274,"status":"PASSED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:13:17Z","duration":1138,"status":"PASSED"},{"id":"EID6ee98379-0175-1000-c9f3-5c4b7448a24b","testStepResults":{"TestStepResult":{"id":"EID6ee98379-0175-1000-96d9-6ead224fd994","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98540-0175-1000-5b37-6a66e22de1e5","parent":{"ref":"EID6ee98379-0175-1000-96d9-6ead224fd994"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98540-0175-1000-92e8-d4d2f81b55c8","parent":{"ref":"EID6ee98379-0175-1000-96d9-6ead224fd994"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98540-0175-1000-c98a-09cb05267cb4","parent":{"ref":"EID6ee98379-0175-1000-96d9-6ead224fd994"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98540-0175-1000-caeb-e45f889827be","parent":{"ref":"EID6ee98379-0175-1000-96d9-6ead224fd994"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfd2dcf77-4711-49a4-9a78-2ec1bbba8a1e"},{"ref":"EIDd1b6f159-9742-4fc0-b344-8f5f912bf18f"},{"ref":"EID66857e15-2562-43a7-abb7-87fe16b4bbc6"}]},"parent":{"ref":"EID6ee98379-0175-1000-c9f3-5c4b7448a24b"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:13:18Z","duration":273,"status":"PASSED"}},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:13:18Z","duration":456,"status":"PASSED"},{"id":"EID6ee98541-0175-1000-0e47-193678ad6f9a","testStepResults":{"TestStepResult":[{"id":"EID6ee98541-0175-1000-58df-df8eea4e6039","parent":{"ref":"EID6ee98541-0175-1000-0e47-193678ad6f9a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98541-0175-1000-a5ac-a147b32ab8bd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98735-0175-1000-5960-17534ee02aa8","parent":{"ref":"EID6ee98541-0175-1000-a5ac-a147b32ab8bd"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98735-0175-1000-4057-c7796b5e0168","parent":{"ref":"EID6ee98541-0175-1000-a5ac-a147b32ab8bd"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98735-0175-1000-44e3-1966cbec63ab","parent":{"ref":"EID6ee98541-0175-1000-a5ac-a147b32ab8bd"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee98735-0175-1000-18a9-7c4d18af822e","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee98541-0175-1000-a5ac-a147b32ab8bd"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:13:19Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd3c316e7-b906-4795-930c-8ad4f3af8ed6"},{"ref":"EID40cf9e6f-e0ab-47aa-b165-39bfc8752c3c"},{"ref":"EID374394b0-7bd9-4335-8c46-419f4ebebb8a"}]},"parent":{"ref":"EID6ee98541-0175-1000-0e47-193678ad6f9a"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:13:19Z","duration":413,"status":"FAILED"}]},"parent":{"ref":"EID6ee96638-0175-1000-3616-6e5c864236c6"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:13:19Z","duration":501,"status":"FAILED"}]},"parent":{"ref":"EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:13:11Z","duration":8446,"status":"FAILED"},{"id":"EID6ee98736-0175-1000-c854-2ba202a593d6","testCaseResults":{"TestCaseResult":[{"id":"EID6ee98736-0175-1000-180b-58c56f688554","testStepResults":{"TestStepResult":[{"id":"EID6ee9873e-0175-1000-5a78-a88f7d9752b4","parent":{"ref":"EID6ee98736-0175-1000-180b-58c56f688554"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:13:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee9873e-0175-1000-daa0-5f187e072b70","parent":{"ref":"EID6ee98736-0175-1000-180b-58c56f688554"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:13:19Z","duration":273,"status":"PASSED"},{"id":"EID6ee9873e-0175-1000-7a76-113d0b30560d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98aac-0175-1000-5074-92a2bdf7564d","parent":{"ref":"EID6ee9873e-0175-1000-7a76-113d0b30560d"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98aac-0175-1000-33c6-e8523847b16c","parent":{"ref":"EID6ee9873e-0175-1000-7a76-113d0b30560d"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98aac-0175-1000-a4f9-9b1d2a34de11","parent":{"ref":"EID6ee9873e-0175-1000-7a76-113d0b30560d"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc19706eb-c406-44fd-b80a-90ffccecc173"},{"ref":"EIDb3e7fa20-d7a7-4823-9cac-28d06bec1fb5"},{"ref":"EIDfc59b8ea-4d13-48e2-84ae-c5048e8716c2"}]},"parent":{"ref":"EID6ee98736-0175-1000-180b-58c56f688554"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:13:19Z","duration":726,"status":"PASSED"},{"id":"EID6ee98aad-0175-1000-b239-aa662c3809db","attachments":{"attachment":{"ref":"EID0e83ce8d-447d-4728-b0bb-674a02b44660"}},"parent":{"ref":"EID6ee98736-0175-1000-180b-58c56f688554"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98aba-0175-1000-17cd-e70dcff974a1","parent":{"ref":"EID6ee98736-0175-1000-180b-58c56f688554"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:13:20Z","duration":12,"status":"PASSED"}]},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:13:19Z","duration":913,"status":"PASSED"},{"id":"EID6ee98ac7-0175-1000-6e76-778d6093c1f0","testStepResults":{"TestStepResult":[{"id":"EID6ee98ac7-0175-1000-1faf-018082dadb44","parent":{"ref":"EID6ee98ac7-0175-1000-6e76-778d6093c1f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:13:20Z","duration":146,"status":"PASSED"},{"id":"EID6ee98ac7-0175-1000-ae3d-42351d21620d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98b91-0175-1000-114f-0ef87ce44e86","parent":{"ref":"EID6ee98ac7-0175-1000-ae3d-42351d21620d"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98b91-0175-1000-b457-9731e5ffc0e2","parent":{"ref":"EID6ee98ac7-0175-1000-ae3d-42351d21620d"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98b91-0175-1000-52d0-a59ef6804c5e","parent":{"ref":"EID6ee98ac7-0175-1000-ae3d-42351d21620d"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98b91-0175-1000-5856-531689c5b036","parent":{"ref":"EID6ee98ac7-0175-1000-ae3d-42351d21620d"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee98b91-0175-1000-112b-74c4c7b61893","parent":{"ref":"EID6ee98ac7-0175-1000-ae3d-42351d21620d"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:13:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb4bcf95b-371b-40bd-8cce-4c7ca63f923b"},{"ref":"EIDa259d6a7-78d4-4ea2-ad04-021c2791c6ca"},{"ref":"EIDc15acc3f-5ccd-440e-9921-a693eb2618b7"}]},"parent":{"ref":"EID6ee98ac7-0175-1000-6e76-778d6093c1f0"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:13:20Z","duration":103,"status":"PASSED"}]},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:13:20Z","duration":202,"status":"PASSED"},{"id":"EID6ee98b98-0175-1000-b6e4-d8c6a06931e7","testStepResults":{"TestStepResult":[{"id":"EID6ee98b98-0175-1000-59ef-6f872e90a35a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98d00-0175-1000-f600-9d4abdf6792f","parent":{"ref":"EID6ee98b98-0175-1000-59ef-6f872e90a35a"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98d00-0175-1000-4103-6ecd0bbab644","parent":{"ref":"EID6ee98b98-0175-1000-59ef-6f872e90a35a"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98d00-0175-1000-7dfd-1ce48ddf3c28","parent":{"ref":"EID6ee98b98-0175-1000-59ef-6f872e90a35a"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0e6066c3-e77f-4b01-8ce8-302417498bac"},{"ref":"EIDfe9c0c41-ed70-4305-adef-1878bec0b75b"},{"ref":"EIDd3f48cca-3189-4610-afb6-8f8675c376c5"}]},"parent":{"ref":"EID6ee98b98-0175-1000-b6e4-d8c6a06931e7"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:13:20Z","duration":292,"status":"PASSED"},{"id":"EID6ee98d00-0175-1000-6257-7e7990b68b56","attachments":{"attachment":{"ref":"EIDbdb7327e-f54d-4605-8aef-1c20afce3433"}},"parent":{"ref":"EID6ee98b98-0175-1000-b6e4-d8c6a06931e7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98d3a-0175-1000-a629-8d64712f1991","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98ed1-0175-1000-1a52-49df28d53279","parent":{"ref":"EID6ee98d3a-0175-1000-a629-8d64712f1991"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98ed1-0175-1000-5b6e-e1b90b7a16d2","parent":{"ref":"EID6ee98d3a-0175-1000-a629-8d64712f1991"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98ed1-0175-1000-7044-5b6fa9746914","parent":{"ref":"EID6ee98d3a-0175-1000-a629-8d64712f1991"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98ed1-0175-1000-3d91-f2c9a4267a3d","parent":{"ref":"EID6ee98d3a-0175-1000-a629-8d64712f1991"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98ed1-0175-1000-0ba3-23b8c54fc7f7","parent":{"ref":"EID6ee98d3a-0175-1000-a629-8d64712f1991"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5ed0842b-2ea6-4911-aa7b-d8caf01ee7f5"},{"ref":"EID971d2bc1-76b9-4a9e-82d2-44182cecc51f"},{"ref":"EID3ff96cf5-b9b3-4c1f-963e-429369762709"}]},"parent":{"ref":"EID6ee98b98-0175-1000-b6e4-d8c6a06931e7"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:13:21Z","duration":284,"status":"PASSED"}]},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:13:20Z","duration":833,"status":"PASSED"},{"id":"EID6ee98ed9-0175-1000-ae2e-e18524038596","testStepResults":{"TestStepResult":[{"id":"EID6ee98ed9-0175-1000-0278-fb91b41c6b7a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee98fc0-0175-1000-4040-06384632d4d5","parent":{"ref":"EID6ee98ed9-0175-1000-0278-fb91b41c6b7a"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98fc0-0175-1000-ac96-9590b97479e5","parent":{"ref":"EID6ee98ed9-0175-1000-0278-fb91b41c6b7a"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98fc0-0175-1000-6154-011fd7826529","parent":{"ref":"EID6ee98ed9-0175-1000-0278-fb91b41c6b7a"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee98fc0-0175-1000-6ee5-92bf168a2c12","parent":{"ref":"EID6ee98ed9-0175-1000-0278-fb91b41c6b7a"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:13:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa259d82e-7118-42eb-a0c6-c3aa22535090"},{"ref":"EID012c0e02-eea2-4f84-aa71-a61e12ce5480"},{"ref":"EID9600893e-0e51-4d2f-9af8-a1bb49370688"}]},"parent":{"ref":"EID6ee98ed9-0175-1000-ae2e-e18524038596"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:13:21Z","duration":155,"status":"PASSED"},{"id":"EID6ee98fc0-0175-1000-4bbb-c03f64b18840","attachments":{"attachment":{"ref":"EID453c88b8-14a5-46a1-8152-b0db4448a44c"}},"parent":{"ref":"EID6ee98ed9-0175-1000-ae2e-e18524038596"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:13:21Z","duration":9,"status":"PASSED"},{"id":"EID6ee98fd5-0175-1000-1c03-2e8f3f703c51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee990ad-0175-1000-bc32-8e71cefb47c5","parent":{"ref":"EID6ee98fd5-0175-1000-1c03-2e8f3f703c51"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:13:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee990ad-0175-1000-be45-360b513fdf8b","parent":{"ref":"EID6ee98fd5-0175-1000-1c03-2e8f3f703c51"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:13:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID393c257c-23f0-4a88-b71e-5e8813bf452c"},{"ref":"EID4010a32a-de32-4529-861f-72da4d5f2911"}]},"parent":{"ref":"EID6ee98ed9-0175-1000-ae2e-e18524038596"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:13:21Z","duration":212,"status":"PASSED"},{"id":"EID6ee990ad-0175-1000-430f-7fc1fae4fd2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee992f8-0175-1000-82ba-be4f9042aca9","parent":{"ref":"EID6ee990ad-0175-1000-430f-7fc1fae4fd2a"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:13:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee992f8-0175-1000-aa30-cefa47f821a6","parent":{"ref":"EID6ee990ad-0175-1000-430f-7fc1fae4fd2a"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:13:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee992f8-0175-1000-dfdd-4e3b96c91636","parent":{"ref":"EID6ee990ad-0175-1000-430f-7fc1fae4fd2a"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:13:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee992f8-0175-1000-f2c7-007814fa9a81","parent":{"ref":"EID6ee990ad-0175-1000-430f-7fc1fae4fd2a"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:13:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5826254b-171b-4b50-9804-e328090b8340"},{"ref":"EIDe7937a55-433e-41de-8d83-a7dfd69391e2"},{"ref":"EID0ba86731-74fe-4e43-a752-f3af9ca3b22d"}]},"parent":{"ref":"EID6ee98ed9-0175-1000-ae2e-e18524038596"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:13:22Z","duration":518,"status":"PASSED"}]},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:13:21Z","duration":1064,"status":"PASSED"},{"id":"EID6ee99301-0175-1000-bcbe-6f652cbc5a42","testStepResults":{"TestStepResult":{"id":"EID6ee99301-0175-1000-1a2e-de4823a9058f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee99474-0175-1000-49c8-da4bf7850c8a","parent":{"ref":"EID6ee99301-0175-1000-1a2e-de4823a9058f"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee99474-0175-1000-b066-a16ddd2ac9f9","parent":{"ref":"EID6ee99301-0175-1000-1a2e-de4823a9058f"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee99474-0175-1000-d9eb-b1d22fcd9ed5","parent":{"ref":"EID6ee99301-0175-1000-1a2e-de4823a9058f"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4ef47b6d-ff92-414f-99d4-c4727db20d3b"},{"ref":"EIDf9b6506e-b7d2-4bce-a521-9712caffd526"},{"ref":"EID1b8879a6-dfa3-449a-a71d-07850fdeff90"}]},"parent":{"ref":"EID6ee99301-0175-1000-bcbe-6f652cbc5a42"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:13:22Z","duration":300,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:13:22Z","duration":371,"status":"PASSED"},{"id":"EID6ee99474-0175-1000-769b-dc81edaff142","testStepResults":{"TestStepResult":{"id":"EID6ee99474-0175-1000-7d79-81e9d13a8ba0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee994e6-0175-1000-ae14-fb8256250c89","parent":{"ref":"EID6ee99474-0175-1000-7d79-81e9d13a8ba0"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee994e6-0175-1000-7e6b-f58eada806fd","parent":{"ref":"EID6ee99474-0175-1000-7d79-81e9d13a8ba0"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee994e6-0175-1000-8092-6ce35ee9aa0b","parent":{"ref":"EID6ee99474-0175-1000-7d79-81e9d13a8ba0"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd905f860-2fa4-4cb6-ab5a-ba56116709f1"},{"ref":"EID759c4a28-fb85-48cd-819e-d709f9bab41d"},{"ref":"EID9e906da6-3a2d-4446-97d0-52f5af985b2a"}]},"parent":{"ref":"EID6ee99474-0175-1000-769b-dc81edaff142"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:13:23Z","duration":50,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:13:23Z","duration":124,"status":"PASSED"},{"id":"EID6ee994f0-0175-1000-7358-77f7fc1759b7","testStepResults":{"TestStepResult":{"id":"EID6ee994f1-0175-1000-5870-c7e8fa3a1eec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9963a-0175-1000-2a71-350a51744aba","parent":{"ref":"EID6ee994f1-0175-1000-5870-c7e8fa3a1eec"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee9963a-0175-1000-0996-843858c5a936","parent":{"ref":"EID6ee994f1-0175-1000-5870-c7e8fa3a1eec"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee9963a-0175-1000-a3b1-2d0e00fd3ab1","parent":{"ref":"EID6ee994f1-0175-1000-5870-c7e8fa3a1eec"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee9963a-0175-1000-19cd-16a932f62e21","parent":{"ref":"EID6ee994f1-0175-1000-5870-c7e8fa3a1eec"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee9963a-0175-1000-1809-4fa3219ed5f0","parent":{"ref":"EID6ee994f1-0175-1000-5870-c7e8fa3a1eec"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a585700-bc7c-4f92-a226-a1ff56eeb594"},{"ref":"EIDfdfac563-52a8-4c18-b13b-df51abcde5ce"},{"ref":"EID67c48081-0fdc-4773-a376-3487acc2d980"}]},"parent":{"ref":"EID6ee994f0-0175-1000-7358-77f7fc1759b7"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:13:23Z","duration":193,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:13:23Z","duration":331,"status":"PASSED"},{"id":"EID6ee9963b-0175-1000-20ce-876095ff1894","testStepResults":{"TestStepResult":{"id":"EID6ee9963b-0175-1000-3e4f-d1f67f3e8095","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee99782-0175-1000-4b4d-d51fa11d1bec","parent":{"ref":"EID6ee9963b-0175-1000-3e4f-d1f67f3e8095"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee99782-0175-1000-ad12-342e90fce0e9","parent":{"ref":"EID6ee9963b-0175-1000-3e4f-d1f67f3e8095"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee99782-0175-1000-49d1-b9d655c8defb","parent":{"ref":"EID6ee9963b-0175-1000-3e4f-d1f67f3e8095"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:13:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57d990fc-a0f0-4721-899a-d182398982ff"},{"ref":"EID1d9b4c79-a9cd-41a1-a1c9-60ffb1ce789c"},{"ref":"EIDfdecd752-f84f-4ab5-91f6-fd67bfe1d09a"}]},"parent":{"ref":"EID6ee9963b-0175-1000-20ce-876095ff1894"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:13:23Z","duration":273,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:13:23Z","duration":327,"status":"PASSED"},{"id":"EID6ee99782-0175-1000-257d-aa2dca2c2c0b","testStepResults":{"TestStepResult":{"id":"EID6ee99782-0175-1000-f19e-a47b793ad352","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee998b9-0175-1000-7698-db75c94c18cf","parent":{"ref":"EID6ee99782-0175-1000-f19e-a47b793ad352"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee998b9-0175-1000-3c65-fc1f16bebcc3","parent":{"ref":"EID6ee99782-0175-1000-f19e-a47b793ad352"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee998b9-0175-1000-6c45-2e68b1179ce3","parent":{"ref":"EID6ee99782-0175-1000-f19e-a47b793ad352"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3d61cee7-a16e-4677-9fab-1bfa2d1358bd"},{"ref":"EIDa39c8124-236f-44d9-b633-4895977ac5f3"},{"ref":"EIDb6c7fb91-5358-4a91-ad03-f3992be4b43b"}]},"parent":{"ref":"EID6ee99782-0175-1000-257d-aa2dca2c2c0b"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:13:23Z","duration":242,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:13:23Z","duration":328,"status":"PASSED"},{"id":"EID6ee998ca-0175-1000-203e-003fcd39ad21","testStepResults":{"TestStepResult":{"id":"EID6ee998ca-0175-1000-422d-12b569ced833","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee99a08-0175-1000-7dc6-da5b0f2d7849","parent":{"ref":"EID6ee998ca-0175-1000-422d-12b569ced833"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99a08-0175-1000-6b27-ff0e56a9d28e","parent":{"ref":"EID6ee998ca-0175-1000-422d-12b569ced833"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99a08-0175-1000-8396-b4c577b0e466","parent":{"ref":"EID6ee998ca-0175-1000-422d-12b569ced833"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99a08-0175-1000-30f4-161ccb06ef89","parent":{"ref":"EID6ee998ca-0175-1000-422d-12b569ced833"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa122b725-7b3c-4fad-a544-07eeed366a1d"},{"ref":"EID637e7d8b-7d12-4ad2-a52b-05c52b959893"},{"ref":"EID0d439692-5b11-45c5-ac82-702176dc0b98"}]},"parent":{"ref":"EID6ee998ca-0175-1000-203e-003fcd39ad21"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:13:24Z","duration":246,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:13:24Z","duration":318,"status":"PASSED"},{"id":"EID6ee99a08-0175-1000-dd4f-eaba70841a6f","testStepResults":{"TestStepResult":{"id":"EID6ee99a08-0175-1000-f9b0-a6b6f6b23ca3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee99b78-0175-1000-9f61-a5b581dd1af4","parent":{"ref":"EID6ee99a08-0175-1000-f9b0-a6b6f6b23ca3"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99b78-0175-1000-8f83-fb5236d0fda9","parent":{"ref":"EID6ee99a08-0175-1000-f9b0-a6b6f6b23ca3"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99b78-0175-1000-7fa4-7c02ac003b1a","parent":{"ref":"EID6ee99a08-0175-1000-f9b0-a6b6f6b23ca3"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99b78-0175-1000-fe8a-2cb47bcf1b5c","parent":{"ref":"EID6ee99a08-0175-1000-f9b0-a6b6f6b23ca3"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7690fa0b-72e9-41a9-b1b4-c6e2f8181cb4"},{"ref":"EID264d8150-e0ee-499d-91b9-6984f2b5be34"},{"ref":"EID9d7ad45b-783a-4972-be5b-725c199e23cb"}]},"parent":{"ref":"EID6ee99a08-0175-1000-dd4f-eaba70841a6f"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:13:24Z","duration":210,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:13:24Z","duration":368,"status":"PASSED"},{"id":"EID6ee99b80-0175-1000-c409-e4934974ede4","testStepResults":{"TestStepResult":[{"id":"EID6ee99b80-0175-1000-d4d1-ebec6a625850","parent":{"ref":"EID6ee99b80-0175-1000-c409-e4934974ede4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:13:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee99b80-0175-1000-acae-940edee75db3","parent":{"ref":"EID6ee99b80-0175-1000-c409-e4934974ede4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:13:24Z","duration":191,"status":"PASSED"},{"id":"EID6ee99b80-0175-1000-5307-7785d0917016","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee99c0b-0175-1000-9b0d-172f5fcb9a0f","parent":{"ref":"EID6ee99b80-0175-1000-5307-7785d0917016"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99c0b-0175-1000-69bd-2ff925eb849d","parent":{"ref":"EID6ee99b80-0175-1000-5307-7785d0917016"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99c0b-0175-1000-060f-3e4c44df5da7","parent":{"ref":"EID6ee99b80-0175-1000-5307-7785d0917016"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99c0b-0175-1000-ea44-7f63e9fe7dd5","parent":{"ref":"EID6ee99b80-0175-1000-5307-7785d0917016"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID044b3c16-172f-4440-aa24-fc0888adde1e"},{"ref":"EIDf59a514f-81e9-4f74-b415-17fffc53b3b7"},{"ref":"EIDf14916e1-fa93-47f6-bb85-9fd94a06802b"}]},"parent":{"ref":"EID6ee99b80-0175-1000-c409-e4934974ede4"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:13:24Z","duration":46,"status":"PASSED"},{"id":"EID6ee99c0b-0175-1000-6f92-2e3217f3b096","attachments":{"attachment":{"ref":"EID774e01a0-fbfa-476d-b0f8-46d1a85f8830"}},"parent":{"ref":"EID6ee99b80-0175-1000-c409-e4934974ede4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:13:25Z","duration":1,"status":"PASSED"},{"id":"EID6ee99c3a-0175-1000-c201-087883e13f94","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee99f0d-0175-1000-24da-2a3b0f37eae7","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-474b-50b8a390d9bd","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-05b0-6b97fdd3db5b","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-de97-59e1502e169e","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-deb6-99f148371669","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-90e6-dea3a71b0b9a","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-e820-b930fc5fb185","parent":{"ref":"EID6ee99c3a-0175-1000-c201-087883e13f94"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID86d995d7-3544-4c66-a51d-9d1b6761444c"},{"ref":"EIDc56942b8-278e-473d-9abc-30b8ab1caad8"},{"ref":"EIDdc397680-d4f8-4173-a0b7-a19273edb014"}]},"parent":{"ref":"EID6ee99b80-0175-1000-c409-e4934974ede4"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:13:25Z","duration":636,"status":"PASSED"}]},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:13:24Z","duration":909,"status":"PASSED"},{"id":"EID6ee99f0d-0175-1000-88d6-26989dce9007","testStepResults":{"TestStepResult":[{"id":"EID6ee99f0d-0175-1000-9bbf-a09a79baeea5","parent":{"ref":"EID6ee99f0d-0175-1000-88d6-26989dce9007"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:13:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee99f0e-0175-1000-fd0d-a575c52dbe59","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a002-0175-1000-9153-4f1ecd669c00","parent":{"ref":"EID6ee99f0e-0175-1000-fd0d-a575c52dbe59"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a002-0175-1000-74d1-d97e6799e37f","parent":{"ref":"EID6ee99f0e-0175-1000-fd0d-a575c52dbe59"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a002-0175-1000-37bd-b0f1a6c22c18","parent":{"ref":"EID6ee99f0e-0175-1000-fd0d-a575c52dbe59"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a002-0175-1000-e10e-1d3854e3808d","parent":{"ref":"EID6ee99f0e-0175-1000-fd0d-a575c52dbe59"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID657035de-5ffe-4fde-823c-380ee05521e8"},{"ref":"EID31fa60c7-1320-482a-ab28-3c22c5c9a996"},{"ref":"EID63e67b47-6fa6-4728-8d18-5882245f7d94"}]},"parent":{"ref":"EID6ee99f0d-0175-1000-88d6-26989dce9007"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:13:25Z","duration":141,"status":"PASSED"},{"id":"EID6ee9a002-0175-1000-ba23-aa5a69aac9fa","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee9a014-0175-1000-f059-69083d2ab3ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a0fc-0175-1000-7f29-e0a56b5ebd4e","parent":{"ref":"EID6ee9a014-0175-1000-f059-69083d2ab3ca"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a0fc-0175-1000-9739-a2821919c6dc","parent":{"ref":"EID6ee9a014-0175-1000-f059-69083d2ab3ca"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a0fc-0175-1000-a8a3-99be1cdc1422","parent":{"ref":"EID6ee9a014-0175-1000-f059-69083d2ab3ca"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8e23b77d-7ce5-49d9-8dc9-56b6c860eea7"},{"ref":"EID67eb4489-d314-4296-9df7-2942898bce58"},{"ref":"EIDfb975317-e1fa-4b0b-8091-08e939d8719a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:13:26Z","duration":147,"status":"PASSED"},{"id":"EID6ee9a0fe-0175-1000-7585-6cf19bcbfc2c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a1ec-0175-1000-850b-6c725d67457a","parent":{"ref":"EID6ee9a0fe-0175-1000-7585-6cf19bcbfc2c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a1ec-0175-1000-f4f4-d41562be33b3","parent":{"ref":"EID6ee9a0fe-0175-1000-7585-6cf19bcbfc2c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a1ec-0175-1000-daca-18d86e393b97","parent":{"ref":"EID6ee9a0fe-0175-1000-7585-6cf19bcbfc2c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID494b84ef-6a74-4fe7-8773-54873daa2c8b"},{"ref":"EID8e52218c-5f6b-417d-9f14-ee26a6e538ac"},{"ref":"EID4d336411-29ac-4845-afbf-096280d5d9af"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:13:26Z","duration":151,"status":"PASSED"},{"id":"EID6ee9a1ed-0175-1000-ca5f-ba21327257d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a283-0175-1000-7957-e5b091f0e276","parent":{"ref":"EID6ee9a1ed-0175-1000-ca5f-ba21327257d8"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a283-0175-1000-a03c-5f4852499678","parent":{"ref":"EID6ee9a1ed-0175-1000-ca5f-ba21327257d8"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a283-0175-1000-b1c4-e78889c27be8","parent":{"ref":"EID6ee9a1ed-0175-1000-ca5f-ba21327257d8"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:13:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2535a47c-ff28-4d96-a4c9-be53ef40691c"},{"ref":"EIDca869ad1-f275-4283-8f76-08dcc537475d"},{"ref":"EID8dea2bc1-fb88-47a5-931f-1020f267eecf"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:13:26Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6ee99f0d-0175-1000-88d6-26989dce9007"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:13:26Z","duration":642,"status":"PASSED"},{"id":"EID6ee9a284-0175-1000-00ce-60611f39429a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a58f-0175-1000-e293-7bc9c7adedc4","parent":{"ref":"EID6ee9a284-0175-1000-00ce-60611f39429a"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a58f-0175-1000-6ee6-fc226c3414eb","parent":{"ref":"EID6ee9a284-0175-1000-00ce-60611f39429a"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a58f-0175-1000-65a4-d32e94323568","parent":{"ref":"EID6ee9a284-0175-1000-00ce-60611f39429a"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a58f-0175-1000-76c9-1684ab8fb150","parent":{"ref":"EID6ee9a284-0175-1000-00ce-60611f39429a"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID445b5b77-432c-4ee7-bcec-2d1d25b46d28"},{"ref":"EIDada439ab-c26b-4e8b-85be-93451fa2d617"},{"ref":"EID1c18c029-0722-43c2-ac63-346c84ac677e"}]},"parent":{"ref":"EID6ee99f0d-0175-1000-88d6-26989dce9007"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:13:26Z","duration":719,"status":"PASSED"}]},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:13:25Z","duration":1666,"status":"PASSED"},{"id":"EID6ee9a58f-0175-1000-54f8-1e89614e85ae","testStepResults":{"TestStepResult":{"id":"EID6ee9a58f-0175-1000-0b75-4925043152ce","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a729-0175-1000-f6bf-f3bd4803b77f","parent":{"ref":"EID6ee9a58f-0175-1000-0b75-4925043152ce"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a729-0175-1000-8c65-7f257e146e7d","parent":{"ref":"EID6ee9a58f-0175-1000-0b75-4925043152ce"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a729-0175-1000-77d8-a1a7ff0d555f","parent":{"ref":"EID6ee9a58f-0175-1000-0b75-4925043152ce"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a729-0175-1000-3462-3e6266cf96b3","parent":{"ref":"EID6ee9a58f-0175-1000-0b75-4925043152ce"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:13:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5013a1af-50c0-45d4-b354-08900d6dc3ea"},{"ref":"EID1cb53f73-2c15-4168-b7ec-cbbb9b63938d"},{"ref":"EID9fe41c7e-9431-436a-a696-9f47ed441fb0"}]},"parent":{"ref":"EID6ee9a58f-0175-1000-54f8-1e89614e85ae"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:13:27Z","duration":350,"status":"PASSED"}},"parent":{"ref":"EID6ee98736-0175-1000-c854-2ba202a593d6"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:13:27Z","duration":410,"status":"PASSED"}]},"parent":{"ref":"EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:13:19Z","duration":8180,"status":"PASSED"},{"id":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b","testCaseResults":{"TestCaseResult":[{"id":"EID6ee9a72a-0175-1000-5cc6-cfec14e1ec62","testStepResults":{"TestStepResult":[{"id":"EID6ee9a72a-0175-1000-4dfa-c73550c5ba64","parent":{"ref":"EID6ee9a72a-0175-1000-5cc6-cfec14e1ec62"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:13:27Z","duration":500,"status":"PASSED"},{"id":"EID6ee9a72a-0175-1000-1ffa-fbb0961bc2be","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a8b0-0175-1000-d01f-24a52ad7abdb","parent":{"ref":"EID6ee9a72a-0175-1000-1ffa-fbb0961bc2be"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a8b0-0175-1000-3f20-4b7b757b5922","parent":{"ref":"EID6ee9a72a-0175-1000-1ffa-fbb0961bc2be"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a8b0-0175-1000-88bb-29516d1f0ace","parent":{"ref":"EID6ee9a72a-0175-1000-1ffa-fbb0961bc2be"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8acc3917-0fcc-4342-aafd-d8087df33762"},{"ref":"EIDf2fc1f46-f83d-457e-b242-418c96adabf8"},{"ref":"EID4ad176bf-ec3d-4792-ac68-bcfea579691d"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-5cc6-cfec14e1ec62"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:13:27Z","duration":255,"status":"PASSED"},{"id":"EID6ee9a8b0-0175-1000-9c5c-091ab700cf34","attachments":{"attachment":{"ref":"EID918228bc-e82a-46e7-97e7-69393ffad00b"}},"parent":{"ref":"EID6ee9a72a-0175-1000-5cc6-cfec14e1ec62"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:13:28Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:13:27Z","duration":403,"status":"PASSED"},{"id":"EID6ee9a8bd-0175-1000-5dbf-dce23822c562","testStepResults":{"TestStepResult":[{"id":"EID6ee9a8bd-0175-1000-ac06-6be5ea8ab746","parent":{"ref":"EID6ee9a8bd-0175-1000-5dbf-dce23822c562"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:13:28Z","duration":500,"status":"PASSED"},{"id":"EID6ee9a8bd-0175-1000-b200-a8b24179a1b3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9a961-0175-1000-369a-a95febfeeaff","parent":{"ref":"EID6ee9a8bd-0175-1000-b200-a8b24179a1b3"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a961-0175-1000-24d1-399f4a57dd18","parent":{"ref":"EID6ee9a8bd-0175-1000-b200-a8b24179a1b3"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a961-0175-1000-daca-dd369519863a","parent":{"ref":"EID6ee9a8bd-0175-1000-b200-a8b24179a1b3"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a961-0175-1000-3ebf-2b2188c0fbab","parent":{"ref":"EID6ee9a8bd-0175-1000-b200-a8b24179a1b3"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda16e6be-0e58-41cb-a412-5950ea06a6e6"},{"ref":"EID9c512d4f-6196-4c88-8959-6d6afeaa2510"},{"ref":"EIDeb4d838e-d660-4873-ae55-00052c745d63"}]},"parent":{"ref":"EID6ee9a8bd-0175-1000-5dbf-dce23822c562"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:13:28Z","duration":85,"status":"PASSED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:13:28Z","duration":164,"status":"PASSED"},{"id":"EID6ee9a96a-0175-1000-5dd5-fc7276762c2d","testStepResults":{"TestStepResult":[{"id":"EID6ee9a96a-0175-1000-83d2-cf9f26888c08","parent":{"ref":"EID6ee9a96a-0175-1000-5dd5-fc7276762c2d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:13:28Z","duration":500,"status":"PASSED"},{"id":"EID6ee9a96a-0175-1000-df6d-47ea3005face","parent":{"ref":"EID6ee9a96a-0175-1000-5dd5-fc7276762c2d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9aa38-0175-1000-0959-f1f86766d071","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-e742-6c7929831580","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-d8ea-eb6ebab6c7b5","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-16c3-90b7457badce","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-643e-0bcba2c90da1","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-5152-dd1a44fbeb93","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-2ef7-08ab9e4f7609","parent":{"ref":"EID6ee9a96a-0175-1000-2ea3-a9fcbab4e353"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:13:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f8d3d29-7837-4fc3-923e-f0cc6eac867d"},{"ref":"EIDc72fc7a7-0a8c-4817-a128-b3e784c865e5"},{"ref":"EID6566d411-c62e-4f39-838f-0438d7eb3e41"}]},"parent":{"ref":"EID6ee9a96a-0175-1000-5dd5-fc7276762c2d"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:13:28Z","duration":87,"status":"PASSED"},{"id":"EID6ee9aa38-0175-1000-9669-6b540b8f873f","invokedTests":{"":null,"TestStepResult":{"id":"EID6ee9aa5d-0175-1000-634a-2082b12a7728","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9aeb4-0175-1000-fd0a-9c5d54b7935d","parent":{"ref":"EID6ee9aa5d-0175-1000-634a-2082b12a7728"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-28T11:13:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aeb4-0175-1000-5a3f-2ba77b6f6cbb","parent":{"ref":"EID6ee9aa5d-0175-1000-634a-2082b12a7728"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-28T11:13:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aeb4-0175-1000-ee8e-2d654352ab10","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"parent":{"ref":"EID6ee9aa5d-0175-1000-634a-2082b12a7728"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-28T11:13:29Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa9279ca3-5a5f-436f-9177-960c1e1fbf35"},{"ref":"EID65cd17c5-7c4a-474d-8798-4fd628c9cf77"},{"ref":"EID0b1b3fd4-002f-489a-bbbf-0e2210d90816"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-28T11:13:28Z","duration":798,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EID0a70e03d-d916-441d-98f9-c5ebd7db6ada"},{"ref":"EID2e7629fe-4002-4407-a48d-74a022aaa3f5"}]},"parent":{"ref":"EID6ee9a96a-0175-1000-5dd5-fc7276762c2d"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-28T11:13:28Z","duration":1219,"status":"FAILED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:13:28Z","duration":1495,"status":"FAILED"},{"id":"EID6ee9af41-0175-1000-2429-f07e7ade7236","testStepResults":{"TestStepResult":[{"id":"EID6ee9af41-0175-1000-8e45-044011b3439a","parent":{"ref":"EID6ee9af41-0175-1000-2429-f07e7ade7236"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:13:29Z","duration":500,"status":"PASSED"},{"id":"EID6ee9af41-0175-1000-f566-1c7846e74dc5","parent":{"ref":"EID6ee9af41-0175-1000-2429-f07e7ade7236"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:13:29Z","duration":0,"status":"PASSED"},{"id":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9aff6-0175-1000-7c29-cdcdb31ed5cf","parent":{"ref":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aff6-0175-1000-095d-40ff7408baaf","parent":{"ref":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aff6-0175-1000-4ad5-ea211884ce4a","parent":{"ref":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aff6-0175-1000-e424-1633760785ae","parent":{"ref":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aff6-0175-1000-0fbc-8b354ca2d9ae","parent":{"ref":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee9aff6-0175-1000-fbaf-253fccaf0a30","parent":{"ref":"EID6ee9af42-0175-1000-3e58-e4ed9058cf50"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc35ddf0f-e3df-43cb-a5bd-f9ec8a3340a0"},{"ref":"EID6f826440-4b3a-411f-abe4-59a674b061f0"},{"ref":"EIDa534be63-fd79-4a81-9504-b51d99b08282"}]},"parent":{"ref":"EID6ee9af41-0175-1000-2429-f07e7ade7236"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:13:29Z","duration":86,"status":"PASSED"},{"id":"EID6ee9aff6-0175-1000-ef5c-55e71ddfb6db","parent":{"ref":"EID6ee9af41-0175-1000-2429-f07e7ade7236"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-28T11:13:30Z","duration":30,"status":"PASSED"},{"id":"EID6ee9b014-0175-1000-346c-23e4ef7dc68a","parent":{"ref":"EID6ee9af41-0175-1000-2429-f07e7ade7236"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-28T11:13:30Z","duration":0,"status":"UNDEFINED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:13:29Z","duration":211,"status":"UNDEFINED"},{"id":"EID6ee9b015-0175-1000-e585-cc5d182df939","testStepResults":{"TestStepResult":[{"id":"EID6ee9b015-0175-1000-db39-7c3d7371cc42","parent":{"ref":"EID6ee9b015-0175-1000-e585-cc5d182df939"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:13:30Z","duration":500,"status":"PASSED"},{"id":"EID6ee9b015-0175-1000-5f47-0f7dcd2b9f20","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"attachments":{"attachment":[{"ref":"EIDeb675fde-a3e1-4b57-8c88-5eaff9678bbb"},{"ref":"EID3243da27-3865-4681-b049-295fe61e942c"},{"ref":"EID9af8cdcd-f718-48b8-a46e-7b9df28c6bf0"},{"ref":"EIDfc5c83b2-8504-4ed9-bb94-93ef3f924b6e"},{"ref":"EID6fad85e4-176c-463c-8d0d-ad110f0dcc4e"},{"ref":"EIDa4e55b0d-e066-4c92-aa5a-a864b1a71edb"},{"ref":"EIDc56b05f7-396c-4d50-92ba-f5c80b38676b"},{"ref":"EIDaadc54af-a6c3-4571-b860-e53e0c82d1dd"},{"ref":"EID88a90059-3d3a-4b4f-8aeb-d7b1a2935e59"},{"ref":"EID08e0a2ff-aacd-44aa-a78b-e8ec82b85394"},{"ref":"EID5209c98f-27a7-44b0-8df7-55187b62faf9"},{"ref":"EID53545cf4-3e16-437d-8926-a259d27e26b1"},{"ref":"EID69655b58-fcb1-4d74-ac99-6aa753bbbe8f"},{"ref":"EID725bb9e6-3f83-4869-9826-c140da9e2082"},{"ref":"EIDf29128cf-bc58-42c8-8da8-0315543030e8"},{"ref":"EID166df74b-7fc0-4e05-987a-9f602935c881"},{"ref":"EIDd0f8a310-a502-44f0-a0d6-4ec05b79f337"},{"ref":"EIDfa65d32e-7b9a-4cdf-a70b-e7b18f2ba9d4"},{"ref":"EID1ca6f1db-e5ac-4bc0-b300-c649b93ba08b"}]},"parent":{"ref":"EID6ee9b015-0175-1000-e585-cc5d182df939"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:13:30Z","duration":6719,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:13:30Z","duration":7022,"status":"SKIPPED"},{"id":"EID6ee9cb84-0175-1000-1827-2d57915d5719","testStepResults":{"TestStepResult":[{"id":"EID6ee9cb8b-0175-1000-1c4d-c3a4ac3a2a7a","parent":{"ref":"EID6ee9cb84-0175-1000-1827-2d57915d5719"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:13:37Z","duration":501,"status":"PASSED"},{"id":"EID6ee9cb8c-0175-1000-860c-a107463f504c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9cc30-0175-1000-7536-0c8fc56d1fa7","parent":{"ref":"EID6ee9cb8c-0175-1000-860c-a107463f504c"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cc30-0175-1000-2a45-8af77d8a4215","parent":{"ref":"EID6ee9cb8c-0175-1000-860c-a107463f504c"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cc30-0175-1000-1038-d49e07a70ea0","parent":{"ref":"EID6ee9cb8c-0175-1000-860c-a107463f504c"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cc30-0175-1000-a275-25006ae87f77","parent":{"ref":"EID6ee9cb8c-0175-1000-860c-a107463f504c"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a5d56b6-1604-4095-b08e-2346a6068a4c"},{"ref":"EID496dcc2f-f2b7-4b0a-b4cc-62e25aab9bab"},{"ref":"EIDa1a09a23-ed94-4cf2-9a52-e1964c5724a7"}]},"parent":{"ref":"EID6ee9cb84-0175-1000-1827-2d57915d5719"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:13:37Z","duration":85,"status":"PASSED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:13:37Z","duration":172,"status":"PASSED"},{"id":"EID6ee9cc30-0175-1000-f61a-d339751b8a5e","testStepResults":{"TestStepResult":[{"id":"EID6ee9cc31-0175-1000-0c50-5cbf3cb4843b","parent":{"ref":"EID6ee9cc30-0175-1000-f61a-d339751b8a5e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:13:37Z","duration":500,"status":"PASSED"},{"id":"EID6ee9cc31-0175-1000-b161-068fdbeeb27c","parent":{"ref":"EID6ee9cc30-0175-1000-f61a-d339751b8a5e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cc31-0175-1000-1264-c660fe48d135","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9ccd0-0175-1000-70e6-94893111331b","parent":{"ref":"EID6ee9cc31-0175-1000-1264-c660fe48d135"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9ccd0-0175-1000-e1db-68c0b9bac8cb","parent":{"ref":"EID6ee9cc31-0175-1000-1264-c660fe48d135"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9ccd0-0175-1000-083b-46f63401df05","parent":{"ref":"EID6ee9cc31-0175-1000-1264-c660fe48d135"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9ccd0-0175-1000-2593-b6b54fc84fb7","parent":{"ref":"EID6ee9cc31-0175-1000-1264-c660fe48d135"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8ecfae78-e8d3-4838-8f15-6e65bec2762c"},{"ref":"EIDfc4489ba-25b8-4c9f-a1c5-ffe4b6a14eaf"},{"ref":"EIDbc12e88f-41e5-4867-8946-e01457b1a3e2"}]},"parent":{"ref":"EID6ee9cc30-0175-1000-f61a-d339751b8a5e"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:13:37Z","duration":89,"status":"PASSED"},{"id":"EID6ee9ccd1-0175-1000-8af1-1706610c4814","attachments":{"attachment":{"ref":"EID5c9380a7-9ad6-4818-8cff-594d50ac47a5"}},"parent":{"ref":"EID6ee9cc30-0175-1000-f61a-d339751b8a5e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cce0-0175-1000-9be4-49a4baf8360b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee9cce5-0175-1000-4772-7bfcef2df9d4","parent":{"ref":"EID6ee9cce0-0175-1000-9be4-49a4baf8360b"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cce5-0175-1000-6b14-315c7469ac75","parent":{"ref":"EID6ee9cce0-0175-1000-9be4-49a4baf8360b"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee9cce5-0175-1000-2962-71270d423a67","parent":{"ref":"EID6ee9cce0-0175-1000-9be4-49a4baf8360b"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2eb01b6f-4b38-4a50-8f44-d366b833aa4c"},{"ref":"EIDda3da36a-90c7-48f5-a86a-901e250cf204"}]},"parent":{"ref":"EID6ee9cc30-0175-1000-f61a-d339751b8a5e"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:13:37Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee9a72a-0175-1000-b99f-3e76c3c22d3b"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:13:37Z","duration":181,"status":"PASSED"}]},"parent":{"ref":"EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:13:27Z","duration":9659,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID774e01a0-fbfa-476d-b0f8-46d1a85f8830","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID774e01a0-fbfa-476d-b0f8-46d1a85f8830"}},{"type":"GetParameter","id":"EID6566d411-c62e-4f39-838f-0438d7eb3e41","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDb06d05b5-154c-45a3-a8c1-d851fe49f1a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDb06d05b5-154c-45a3-a8c1-d851fe49f1a7"}},{"type":"ServiceEndpoint","id":"EID6a50c33a-f359-4a18-868e-7734fdc6a900","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf2fc1f46-f83d-457e-b242-418c96adabf8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDf2fc1f46-f83d-457e-b242-418c96adabf8"}},{"type":"ServiceResponse","id":"EIDe4198276-405d-495a-8611-88bb492d6193","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDe4198276-405d-495a-8611-88bb492d6193"}},{"type":"GetParameter","id":"EIDeba7704b-4e78-47e1-a201-efada057e7cd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID637e7d8b-7d12-4ad2-a52b-05c52b959893","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID637e7d8b-7d12-4ad2-a52b-05c52b959893"}},{"type":"Message","id":"EID5c9380a7-9ad6-4818-8cff-594d50ac47a5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID5c9380a7-9ad6-4818-8cff-594d50ac47a5"}},{"type":"ServiceEndpoint","id":"EID7690fa0b-72e9-41a9-b1b4-c6e2f8181cb4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID9af8cdcd-f718-48b8-a46e-7b9df28c6bf0","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID9af8cdcd-f718-48b8-a46e-7b9df28c6bf0"}},{"type":"Message","id":"EIDaadc54af-a6c3-4571-b860-e53e0c82d1dd","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDaadc54af-a6c3-4571-b860-e53e0c82d1dd"}},{"type":"ServiceEndpoint","id":"EID657035de-5ffe-4fde-823c-380ee05521e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID08e0a2ff-aacd-44aa-a78b-e8ec82b85394","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID08e0a2ff-aacd-44aa-a78b-e8ec82b85394"}},{"type":"GetParameter","id":"EID4ad176bf-ec3d-4792-ac68-bcfea579691d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID88a90059-3d3a-4b4f-8aeb-d7b1a2935e59","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID88a90059-3d3a-4b4f-8aeb-d7b1a2935e59"}},{"type":"Message","id":"EIDa4e55b0d-e066-4c92-aa5a-a864b1a71edb","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDa4e55b0d-e066-4c92-aa5a-a864b1a71edb"}},{"type":"Message","id":"EID1ca6f1db-e5ac-4bc0-b300-c649b93ba08b","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID1ca6f1db-e5ac-4bc0-b300-c649b93ba08b"}},{"type":"ServiceResponse","id":"EID6d65dae2-0a8d-4e75-befa-bac77a385869","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID6d65dae2-0a8d-4e75-befa-bac77a385869"}},{"type":"GetParameter","id":"EID48a5b751-ba72-4b58-9082-fe1075b81664","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID012c0e02-eea2-4f84-aa71-a61e12ce5480","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID012c0e02-eea2-4f84-aa71-a61e12ce5480"}},{"type":"ServiceResponse","id":"EID65cd17c5-7c4a-474d-8798-4fd628c9cf77","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID65cd17c5-7c4a-474d-8798-4fd628c9cf77"}},{"type":"GetParameter","id":"EIDeb4d838e-d660-4873-ae55-00052c745d63","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID66857e15-2562-43a7-abb7-87fe16b4bbc6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDfecb158a-e41f-48b3-a1e3-ec613fc81990","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfecb158a-e41f-48b3-a1e3-ec613fc81990"}},{"type":"Message","id":"EID68830de5-4ced-498a-8602-fc8cf5bbe58f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID68830de5-4ced-498a-8602-fc8cf5bbe58f"}},{"type":"Message","id":"EIDbd4e3c19-dbb3-4c3a-ae74-f41a994fb2f3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDbd4e3c19-dbb3-4c3a-ae74-f41a994fb2f3"}},{"type":"GetParameter","id":"EIDc15acc3f-5ccd-440e-9921-a693eb2618b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID86d995d7-3544-4c66-a51d-9d1b6761444c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EIDd3f48cca-3189-4610-afb6-8f8675c376c5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EIDf4c4561a-03c0-4d6f-afaa-c26a0c73b8c5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDfa65d32e-7b9a-4cdf-a70b-e7b18f2ba9d4","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfa65d32e-7b9a-4cdf-a70b-e7b18f2ba9d4"}},{"type":"ServiceResponse","id":"EID40cf9e6f-e0ab-47aa-b165-39bfc8752c3c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID40cf9e6f-e0ab-47aa-b165-39bfc8752c3c"}},{"type":"GetParameter","id":"EID3ff96cf5-b9b3-4c1f-963e-429369762709","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EIDa534be63-fd79-4a81-9504-b51d99b08282","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID53545cf4-3e16-437d-8926-a259d27e26b1","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID53545cf4-3e16-437d-8926-a259d27e26b1"}},{"type":"ServiceResponse","id":"EIDe9f3d152-bbc1-4c24-8f92-d0c52a38027c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDe9f3d152-bbc1-4c24-8f92-d0c52a38027c"}},{"type":"ServiceEndpoint","id":"EID0e6066c3-e77f-4b01-8ce8-302417498bac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDfd2dcf77-4711-49a4-9a78-2ec1bbba8a1e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0b1b3fd4-002f-489a-bbbf-0e2210d90816","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"ServiceEndpoint","id":"EID4ef47b6d-ff92-414f-99d4-c4727db20d3b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID1cb53f73-2c15-4168-b7ec-cbbb9b63938d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID1cb53f73-2c15-4168-b7ec-cbbb9b63938d"}},{"type":"LogFile","id":"EID7c8f8af0-b790-42f3-8a80-2fed78ce5147","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID7c8f8af0-b790-42f3-8a80-2fed78ce5147"}},{"type":"ServiceResponse","id":"EIDfc72bf0a-ae4b-4932-b110-cd715fe33cdb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfc72bf0a-ae4b-4932-b110-cd715fe33cdb"}},{"type":"ServiceEndpoint","id":"EID988488d0-d320-41c7-a187-078a9bf65062","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDce7ea91c-c303-4f36-9a70-3c091c547e16","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDce7ea91c-c303-4f36-9a70-3c091c547e16"}},{"type":"Message","id":"EID11176a7d-72dc-42c0-8f47-a4a655c350e4","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID11176a7d-72dc-42c0-8f47-a4a655c350e4"}},{"type":"ServiceEndpoint","id":"EIDc19706eb-c406-44fd-b80a-90ffccecc173","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc56942b8-278e-473d-9abc-30b8ab1caad8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDc56942b8-278e-473d-9abc-30b8ab1caad8"}},{"type":"Message","id":"EIDf329fbdc-47e6-4c0d-b466-53c03e8a5385","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDf329fbdc-47e6-4c0d-b466-53c03e8a5385"}},{"type":"ServiceResponse","id":"EID2f2dbe14-4575-4743-9ec4-f148f7a09434","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID2f2dbe14-4575-4743-9ec4-f148f7a09434"}},{"type":"Message","id":"EIDeedfc7d3-d9a9-4994-8bf1-3dd7544815b1","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDeedfc7d3-d9a9-4994-8bf1-3dd7544815b1"}},{"type":"Message","id":"EID5813f820-6ead-44d5-95cf-fb66e602d9a0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID5813f820-6ead-44d5-95cf-fb66e602d9a0"}},{"type":"Message","id":"EID0d5ad8c9-09ea-45c7-a8a0-8059d61373fa","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID0d5ad8c9-09ea-45c7-a8a0-8059d61373fa"}},{"type":"Message","id":"EIDc56b05f7-396c-4d50-92ba-f5c80b38676b","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDc56b05f7-396c-4d50-92ba-f5c80b38676b"}},{"type":"Message","id":"EIDcd1118b5-37fc-4a3b-a3ab-56211972e872","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDcd1118b5-37fc-4a3b-a3ab-56211972e872"}},{"type":"GetParameter","id":"EID850fa7d1-a619-40a2-8999-c586a19334e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID496dcc2f-f2b7-4b0a-b4cc-62e25aab9bab","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID496dcc2f-f2b7-4b0a-b4cc-62e25aab9bab"}},{"type":"GetParameter","id":"EID9600893e-0e51-4d2f-9af8-a1bb49370688","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDc7231a94-4bb9-4e79-bc24-5589fc176cfb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDc7231a94-4bb9-4e79-bc24-5589fc176cfb"}},{"type":"ServiceResponse","id":"EIDada439ab-c26b-4e8b-85be-93451fa2d617","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDada439ab-c26b-4e8b-85be-93451fa2d617"}},{"type":"Message","id":"EID0bc15d36-4e4d-478c-bf43-56ab447c6fab","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID0bc15d36-4e4d-478c-bf43-56ab447c6fab"}},{"type":"ServiceEndpoint","id":"EID2535a47c-ff28-4d96-a4c9-be53ef40691c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID3243da27-3865-4681-b049-295fe61e942c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID3243da27-3865-4681-b049-295fe61e942c"}},{"type":"ServiceEndpoint","id":"EIDa9279ca3-5a5f-436f-9177-960c1e1fbf35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"GetParameter","id":"EID53fb178d-4816-400b-b759-52e6dac8bdd3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf7d980a0-d8b8-454f-9b74-5d184385d310","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8e23b77d-7ce5-49d9-8dc9-56b6c860eea7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID445b5b77-432c-4ee7-bcec-2d1d25b46d28","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDe0d9a1e4-64d8-4f73-af63-8a0c198c5a7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDe0d9a1e4-64d8-4f73-af63-8a0c198c5a7f"}},{"type":"Message","id":"EID725bb9e6-3f83-4869-9826-c140da9e2082","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID725bb9e6-3f83-4869-9826-c140da9e2082"}},{"type":"Message","id":"EID5209c98f-27a7-44b0-8df7-55187b62faf9","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID5209c98f-27a7-44b0-8df7-55187b62faf9"}},{"type":"Message","id":"EID800321f2-a8a3-4699-870a-61d0d8d580a4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID800321f2-a8a3-4699-870a-61d0d8d580a4"}},{"type":"GetParameter","id":"EID0d439692-5b11-45c5-ac82-702176dc0b98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EIDdc397680-d4f8-4173-a0b7-a19273edb014","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDf29128cf-bc58-42c8-8da8-0315543030e8","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDf29128cf-bc58-42c8-8da8-0315543030e8"}},{"type":"GetParameter","id":"EIDfdecd16d-ee45-4017-874a-21ecacd2a706","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1b5faac4-fde4-43a8-bf24-e5494ac72ec9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID1b5faac4-fde4-43a8-bf24-e5494ac72ec9"}},{"type":"Message","id":"EID6fad85e4-176c-463c-8d0d-ad110f0dcc4e","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID6fad85e4-176c-463c-8d0d-ad110f0dcc4e"}},{"type":"GetParameter","id":"EID67c48081-0fdc-4773-a376-3487acc2d980","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID8387c9ac-53a8-4143-8639-907bdfb4ba16","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfae84761-1a60-4a88-9486-30f6f2948e24","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfae84761-1a60-4a88-9486-30f6f2948e24"}},{"type":"Message","id":"EID14d7e6e7-d3b3-4f4a-b3a6-5dda9531a6c8","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID14d7e6e7-d3b3-4f4a-b3a6-5dda9531a6c8"}},{"type":"Message","id":"EID40a0768e-9225-4899-b5f7-8d476fae39bf","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID40a0768e-9225-4899-b5f7-8d476fae39bf"}},{"type":"ServiceResponse","id":"EID910e82ec-dcef-4a83-aa60-2e45b042bb6f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID910e82ec-dcef-4a83-aa60-2e45b042bb6f"}},{"type":"Message","id":"EID927799f3-8331-41a1-82cf-82650547aa1b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID927799f3-8331-41a1-82cf-82650547aa1b"}},{"type":"ServiceEndpoint","id":"EID0a5d56b6-1604-4095-b08e-2346a6068a4c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDb4fa8678-6eaf-4bc0-88a7-b6d520d686af","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDb4fa8678-6eaf-4bc0-88a7-b6d520d686af"}},{"type":"GetParameter","id":"EID9e906da6-3a2d-4446-97d0-52f5af985b2a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID63e67b47-6fa6-4728-8d18-5882245f7d94","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID43b23d0d-1b19-4004-bfa6-5033e5f91085","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb640cedb-6e4a-4e5d-84fe-3d094d1c8e5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2a585700-bc7c-4f92-a226-a1ff56eeb594","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID0a70e03d-d916-441d-98f9-c5ebd7db6ada","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID0a70e03d-d916-441d-98f9-c5ebd7db6ada"}},{"type":"Message","id":"EID166df74b-7fc0-4e05-987a-9f602935c881","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID166df74b-7fc0-4e05-987a-9f602935c881"}},{"type":"ServiceEndpoint","id":"EID72bbe2b0-df6c-4c5e-b1c6-dd23069cb3b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7eeef2d9-43a5-422a-9299-bdfceafa5dd2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID453c88b8-14a5-46a1-8152-b0db4448a44c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID453c88b8-14a5-46a1-8152-b0db4448a44c"}},{"type":"ServiceResponse","id":"EID61065365-0cb0-4860-97ea-8111de8892b8","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID61065365-0cb0-4860-97ea-8111de8892b8"}},{"type":"ServiceResponse","id":"EID8e52218c-5f6b-417d-9f14-ee26a6e538ac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID8e52218c-5f6b-417d-9f14-ee26a6e538ac"}},{"type":"ServiceResponse","id":"EID1d9b4c79-a9cd-41a1-a1c9-60ffb1ce789c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID1d9b4c79-a9cd-41a1-a1c9-60ffb1ce789c"}},{"type":"Message","id":"EIDcf040976-882a-4ecf-8356-e07698f97f31","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDcf040976-882a-4ecf-8356-e07698f97f31"}},{"type":"Message","id":"EIDdf7ec732-c096-4aaa-81cd-e14cc8f1ac87","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDdf7ec732-c096-4aaa-81cd-e14cc8f1ac87"}},{"type":"ServiceEndpoint","id":"EIDa122b725-7b3c-4fad-a544-07eeed366a1d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID67eb4489-d314-4296-9df7-2942898bce58","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID67eb4489-d314-4296-9df7-2942898bce58"}},{"type":"ServiceEndpoint","id":"EID5ed0842b-2ea6-4911-aa7b-d8caf01ee7f5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDfc5c83b2-8504-4ed9-bb94-93ef3f924b6e","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfc5c83b2-8504-4ed9-bb94-93ef3f924b6e"}},{"type":"Message","id":"EID7520f071-31db-4960-a208-e7eb1fa464a9","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID7520f071-31db-4960-a208-e7eb1fa464a9"}},{"type":"ServiceEndpoint","id":"EID7a8a143d-8299-4ce0-80be-58a64546c22b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID18884f9e-948d-4899-9947-321f91daa27e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfe9c0c41-ed70-4305-adef-1878bec0b75b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfe9c0c41-ed70-4305-adef-1878bec0b75b"}},{"type":"ServiceEndpoint","id":"EIDd3c316e7-b906-4795-930c-8ad4f3af8ed6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDeb675fde-a3e1-4b57-8c88-5eaff9678bbb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDeb675fde-a3e1-4b57-8c88-5eaff9678bbb"}},{"type":"ServiceEndpoint","id":"EID2eb01b6f-4b38-4a50-8f44-d366b833aa4c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDce260578-c88c-4c17-b389-73148d5b9ec2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDce260578-c88c-4c17-b389-73148d5b9ec2"}},{"type":"ServiceResponse","id":"EIDf59a514f-81e9-4f74-b415-17fffc53b3b7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDf59a514f-81e9-4f74-b415-17fffc53b3b7"}},{"type":"Message","id":"EID2e7629fe-4002-4407-a48d-74a022aaa3f5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID2e7629fe-4002-4407-a48d-74a022aaa3f5"}},{"type":"ServiceResponse","id":"EIDfdfac563-52a8-4c18-b13b-df51abcde5ce","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfdfac563-52a8-4c18-b13b-df51abcde5ce"}},{"type":"ServiceResponse","id":"EIDcbbf2844-4e18-4ad3-a10a-9b7d5e542d1e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDcbbf2844-4e18-4ad3-a10a-9b7d5e542d1e"}},{"type":"ServiceEndpoint","id":"EID8acc3917-0fcc-4342-aafd-d8087df33762","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc72fc7a7-0a8c-4817-a128-b3e784c865e5","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDc72fc7a7-0a8c-4817-a128-b3e784c865e5"}},{"type":"GetParameter","id":"EIDb6c7fb91-5358-4a91-ad03-f3992be4b43b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDd0f8a310-a502-44f0-a0d6-4ec05b79f337","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDd0f8a310-a502-44f0-a0d6-4ec05b79f337"}},{"type":"Message","id":"EID918228bc-e82a-46e7-97e7-69393ffad00b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID918228bc-e82a-46e7-97e7-69393ffad00b"}},{"type":"ServiceResponse","id":"EID74192ec8-3de4-44d4-9b25-2a676211a937","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID74192ec8-3de4-44d4-9b25-2a676211a937"}},{"type":"GetParameter","id":"EID59e20234-637a-48ea-8c03-0a54c1baf7f2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfdecd752-f84f-4ab5-91f6-fd67bfe1d09a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDa259d6a7-78d4-4ea2-ad04-021c2791c6ca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDa259d6a7-78d4-4ea2-ad04-021c2791c6ca"}},{"type":"Message","id":"EID490df209-7d03-416e-ba97-d70377fd7971","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID490df209-7d03-416e-ba97-d70377fd7971"}},{"type":"ServiceResponse","id":"EID7440299b-4e52-46cc-83dd-fd0c1f04e4a9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID7440299b-4e52-46cc-83dd-fd0c1f04e4a9"}},{"type":"GetParameter","id":"EID4626dd16-9822-4f14-bbc2-75ded8c18580","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd36f7708-ff68-4255-92f2-237f7713d84d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb4bcf95b-371b-40bd-8cce-4c7ca63f923b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID9fe41c7e-9431-436a-a696-9f47ed441fb0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID4b2d7bf3-89d9-4308-a265-e05026535dd7","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID4b2d7bf3-89d9-4308-a265-e05026535dd7"}},{"type":"ServiceEndpoint","id":"EID57d990fc-a0f0-4721-899a-d182398982ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID5826254b-171b-4b50-9804-e328090b8340","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDce25bc19-9fd7-4ff8-b7a3-4a498069f801","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDce25bc19-9fd7-4ff8-b7a3-4a498069f801"}},{"type":"ServiceResponse","id":"EID6f826440-4b3a-411f-abe4-59a674b061f0","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID6f826440-4b3a-411f-abe4-59a674b061f0"}},{"type":"ServiceResponse","id":"EIDf9b6506e-b7d2-4bce-a521-9712caffd526","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDf9b6506e-b7d2-4bce-a521-9712caffd526"}},{"type":"GetParameter","id":"EIDda3da36a-90c7-48f5-a86a-901e250cf204","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDe7937a55-433e-41de-8d83-a7dfd69391e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDe7937a55-433e-41de-8d83-a7dfd69391e2"}},{"type":"GetParameter","id":"EID5ae9cbb2-d104-4870-8e1f-9e532af87f0d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1115fb27-4e57-4a98-b8f2-36b92d952d5a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbb32d4e6-8fde-41a6-972e-92727bca9fc3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID393c257c-23f0-4a88-b71e-5e8813bf452c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"ServiceResponse","id":"EIDca869ad1-f275-4283-8f76-08dcc537475d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDca869ad1-f275-4283-8f76-08dcc537475d"}},{"type":"GetParameter","id":"EIDf3474882-fade-4377-a700-3bd337d9673e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0d158982-3c8b-48a4-ac47-51cabdfd48e2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa1a09a23-ed94-4cf2-9a52-e1964c5724a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDda16e6be-0e58-41cb-a412-5950ea06a6e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDf14916e1-fa93-47f6-bb85-9fd94a06802b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID52b4742d-b2fc-495e-859a-9f26b31d73ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID044b3c16-172f-4440-aa24-fc0888adde1e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1c18c029-0722-43c2-ac63-346c84ac677e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDfc4489ba-25b8-4c9f-a1c5-ffe4b6a14eaf","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfc4489ba-25b8-4c9f-a1c5-ffe4b6a14eaf"}},{"type":"Message","id":"EIDbfe68ade-1fe5-4ece-8a37-cd1d4da8a890","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDbfe68ade-1fe5-4ece-8a37-cd1d4da8a890"}},{"type":"GetParameter","id":"EID4010a32a-de32-4529-861f-72da4d5f2911","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"GetParameter","id":"EID4d336411-29ac-4845-afbf-096280d5d9af","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID43219905-d953-4f5b-bc63-db7202646e2b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID2c0251a3-d887-4d1a-8374-d88d805f2de5","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID2c0251a3-d887-4d1a-8374-d88d805f2de5"}},{"type":"ServiceResponse","id":"EID31fa60c7-1320-482a-ab28-3c22c5c9a996","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID31fa60c7-1320-482a-ab28-3c22c5c9a996"}},{"type":"Message","id":"EID5cd2c0cd-3e24-47f8-a918-8e3e0d4b2881","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID5cd2c0cd-3e24-47f8-a918-8e3e0d4b2881"}},{"type":"ServiceResponse","id":"EIDdba24ea9-2545-4a6e-8dfb-3c9f6e38fec4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDdba24ea9-2545-4a6e-8dfb-3c9f6e38fec4"}},{"type":"Message","id":"EID705c4041-8f8c-423e-b95a-eb66e50820e0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID705c4041-8f8c-423e-b95a-eb66e50820e0"}},{"type":"ServiceEndpoint","id":"EIDa259d82e-7118-42eb-a0c6-c3aa22535090","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID30a801e6-0563-4701-b34a-f5ea917d939d","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID30a801e6-0563-4701-b34a-f5ea917d939d"}},{"type":"ServiceEndpoint","id":"EID5806b538-3994-48c0-82f9-ab7128d4b7c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd905f860-2fa4-4cb6-ab5a-ba56116709f1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID494b84ef-6a74-4fe7-8773-54873daa2c8b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID5013a1af-50c0-45d4-b354-08900d6dc3ea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID16cb4d4d-af17-453a-a783-a1101517a127","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID666b5b50-2cae-4f44-bc78-d028bc930bfb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID666b5b50-2cae-4f44-bc78-d028bc930bfb"}},{"type":"ServiceEndpoint","id":"EID85bdfcd8-114d-4180-badb-5ca050eb0a15","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3d61cee7-a16e-4677-9fab-1bfa2d1358bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDcd0115e7-4ab4-4825-b5ad-92935f049aab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDbdb7327e-f54d-4605-8aef-1c20afce3433","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDbdb7327e-f54d-4605-8aef-1c20afce3433"}},{"type":"GetParameter","id":"EIDad3a9c25-ab7c-4d72-a51e-815273774bea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1c346e24-61d2-4af4-a9a5-bfff4653e9d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDfe2ea799-6032-4be2-b334-09415abd1d1b","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDfe2ea799-6032-4be2-b334-09415abd1d1b"}},{"type":"GetParameter","id":"EID142b6e13-04b0-4301-ac8e-43b01afd5970","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1d652d89-36fc-4979-b151-75b98205d3e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9c512d4f-6196-4c88-8959-6d6afeaa2510","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID9c512d4f-6196-4c88-8959-6d6afeaa2510"}},{"type":"GetParameter","id":"EIDbc12e88f-41e5-4867-8946-e01457b1a3e2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDfb975317-e1fa-4b0b-8091-08e939d8719a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID27680afb-0f98-4d09-b88d-817d6aea5f88","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID27680afb-0f98-4d09-b88d-817d6aea5f88"}},{"type":"ServiceResponse","id":"EID759c4a28-fb85-48cd-819e-d709f9bab41d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID759c4a28-fb85-48cd-819e-d709f9bab41d"}},{"type":"ServiceResponse","id":"EIDd1b6f159-9742-4fc0-b344-8f5f912bf18f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDd1b6f159-9742-4fc0-b344-8f5f912bf18f"}},{"type":"GetParameter","id":"EID4ee55359-eccb-44c6-a0c1-8539db0d5143","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc35ddf0f-e3df-43cb-a5bd-f9ec8a3340a0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID8ecfae78-e8d3-4838-8f15-6e65bec2762c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID0ba86731-74fe-4e43-a752-f3af9ca3b22d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID1b8879a6-dfa3-449a-a71d-07850fdeff90","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID0e83ce8d-447d-4728-b0bb-674a02b44660","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID0e83ce8d-447d-4728-b0bb-674a02b44660"}},{"type":"Message","id":"EID165c7154-be1f-479d-bf6d-bd98db7f464d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID165c7154-be1f-479d-bf6d-bd98db7f464d"}},{"type":"ServiceEndpoint","id":"EID5f8d3d29-7837-4fc3-923e-f0cc6eac867d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID264d8150-e0ee-499d-91b9-6984f2b5be34","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID264d8150-e0ee-499d-91b9-6984f2b5be34"}},{"type":"GetParameter","id":"EID8dea2bc1-fb88-47a5-931f-1020f267eecf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID2159bf2e-0882-4009-9ba3-118d7de73b56","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID2159bf2e-0882-4009-9ba3-118d7de73b56"}},{"type":"GetParameter","id":"EID374394b0-7bd9-4335-8c46-419f4ebebb8a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfc59b8ea-4d13-48e2-84ae-c5048e8716c2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDc203f2bf-b936-4b4f-bcdd-643f37c944b7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDc203f2bf-b936-4b4f-bcdd-643f37c944b7"}},{"type":"ServiceResponse","id":"EIDb3e7fa20-d7a7-4823-9cac-28d06bec1fb5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDb3e7fa20-d7a7-4823-9cac-28d06bec1fb5"}},{"type":"Message","id":"EID69655b58-fcb1-4d74-ac99-6aa753bbbe8f","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID69655b58-fcb1-4d74-ac99-6aa753bbbe8f"}},{"type":"GetParameter","id":"EID11bd429b-027f-4e41-968b-d68a54dc279c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb6009123-2e2f-4c58-8a0c-717a6457b167","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID38f0ab56-0d4f-48fd-847f-0dfc5d46f1d1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID38f0ab56-0d4f-48fd-847f-0dfc5d46f1d1"}},{"type":"ServiceResponse","id":"EID971d2bc1-76b9-4a9e-82d2-44182cecc51f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EID971d2bc1-76b9-4a9e-82d2-44182cecc51f"}},{"type":"GetParameter","id":"EID9d7ad45b-783a-4972-be5b-725c199e23cb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDa39c8124-236f-44d9-b633-4895977ac5f3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID55c5ca63-3eb3-4cbb-9184-9cb05df2a0e0/Attachments/EIDa39c8124-236f-44d9-b633-4895977ac5f3"}},{"type":"ServiceEndpoint","id":"EID2754d1eb-b4db-446e-ac84-c5fd32dae33d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:13:10Z","duration":26976,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:05.146 [print] EIDaf8cc361-24da-4d8f-895b-272c97733cb6
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:05.146 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:14:05.146 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:05.146 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:05.146 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/af8cc361-24da-4d8f-895b-272c97733cb6.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:14:05.146 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/af8cc361-24da-4d8f-895b-272c97733cb6.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:05.146 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDaf8cc361-24da-4d8f-895b-272c97733cb6/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.006
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.008
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:14:05.164 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
11:14:05.164 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.413
* print "testing url:" + metadata.url 0.000
11:16:48.143 [print] testing url:https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.413
11:16:48.144 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:48.557 response time in milliseconds: 413.14
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:48 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.420
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.420
11:16:48.565 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:48.985 response time in milliseconds: 417.61
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:48 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:48.986 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.658
* print "testing url:" + metadata.url 0.000
11:08:06.359 [print] testing url:https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 1.658
11:08:06.359 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:08.015 response time in milliseconds: 1655.30
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 2779
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:06 GMT
1 < Etag: "468f384d0392b84cca8695000403950f-1"
1 < Last-Modified: Mon, 16 Mar 2020 07:06:39 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642235A06DFA808
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
1.589
Given url metadata.url 0.000
When method HEAD 1.588
11:08:08.027 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:09.615 response time in milliseconds: 1587.25
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 2779
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:09 GMT
1 < Etag: "468f384d0392b84cca8695000403950f-1"
1 < Last-Modified: Mon, 16 Mar 2020 07:06:39 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642235A95F4A818
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.368
* print "testing url:" + metadata.url 0.000
11:06:03.533 [print] testing url:https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs
Given url metadata.url 0.000
When method HEAD 0.368
11:06:03.534 request:
1 > HEAD https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:03.902 response time in milliseconds: 367.71
1 < 200
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,POST,OPTIONS
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 16933
1 < Content-Type: text/xml; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:03 GMT
1 < Server: lighttpd/1.4.53
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
0.414
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.413
11:06:03.907 request:
1 > HEAD https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:04.320 response time in milliseconds: 412.71
1 < 200
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,POST,OPTIONS
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 16933
1 < Content-Type: text/xml; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:04 GMT
1 < Server: lighttpd/1.4.53
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:04.320 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.403
* print "testing url:" + metadata.url 0.001
11:08:35.488 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.402
11:08:35.489 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:35.890 response time in milliseconds: 401.47
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:35 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.416
Given url metadata.url 0.000
When method HEAD 0.415
11:08:35.896 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:36.310 response time in milliseconds: 414.23
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:35 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.490
* print "testing url:" + metadata.url 0.000
11:15:54.521 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.489
11:15:54.521 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:55.011 response time in milliseconds: 489.41
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4237
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:15:54 GMT
1 < Etag: "0d9adcb43d973daed7753314ef78d57b-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:11:44 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223C6FEC829C0
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.407
Given url metadata.url 0.000
When method HEAD 0.406
11:15:54.815 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:55.221 response time in milliseconds: 405.91
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4237
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:15:55 GMT
1 < Etag: "0d9adcb43d973daed7753314ef78d57b-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:11:44 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223C710D252B4
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.131
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:05.074 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.130
11:06:05.079 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities"}}}

11:06:08.203 response time in milliseconds: 3018.77
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883168023","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:06:08.205 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
30.348
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:19.979 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.348
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
11:09:19.980 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:09:50.328 java.net.SocketTimeoutException: Read timed out, http call failed after 30347 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:09:50.328 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
21.226
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:27.301 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 21.225
11:13:27.302 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 283
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS"}}}

11:13:48.527 response time in milliseconds: 21121.69
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883628360","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:48.528 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.406
* print "testing url:" + metadata.url 0.000
11:11:04.361 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.406
11:11:04.362 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:04.767 response time in milliseconds: 404.74
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:04 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.416
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.414
11:11:04.772 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:05.186 response time in milliseconds: 413.97
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:05 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:11:05.190 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
46.270
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
11:08:37.464 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 18.059
11:08:37.468 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 249
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}}}

11:08:55.518 response time in milliseconds: 17276.99
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:08:54 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:08:50 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b.json","testRuns":{"TestRun":{"id":"EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:49.428Z","testTasks":{"TestTask":{"id":"EID3b102c86-71d5-4cb2-80f4-91c6d96e9795","parent":{"ref":"EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdd9c1fff-ef9a-4d50-9e14-4ad72db0370e"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdd9c1fff-ef9a-4d50-9e14-4ad72db0370e","remoteResource":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:37.99Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:45.508Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
11:08:55.529 [print] EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:08:55.530 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:08:55.530 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:08:55.531 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.010
11:08:55.542 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.001
11:08:55.544 [print] statuspath TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b
* print 'progresspath ', progresspath 0.000
11:08:55.544 [print] progresspath  TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
Given path progresspath 0.000
When method GET 0.516
11:08:55.546 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:56.060 response time in milliseconds: 513.46
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:08:55 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["28.10.2020 11:08:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:49 UTC 2020)","28.10.2020 11:08:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:49 - Preparing 1 Test Task:","28.10.2020 11:08:49 -  TestTask 1 (3b102c86-71d5-4cb2-80f4-91c6d96e9795)","28.10.2020 11:08:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:49 -  with parameters: ","28.10.2020 11:08:49 - etf.testcases = *","28.10.2020 11:08:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:49 - Setting state to CREATED","28.10.2020 11:08:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:54 - Starting TestRun.3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b at 2020-10-28T11:08:56Z"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:08:56.061 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "28.10.2020 11:08:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:49 UTC 2020)",
    "28.10.2020 11:08:49 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:08:49 - Preparing 1 Test Task:",
    "28.10.2020 11:08:49 -  TestTask 1 (3b102c86-71d5-4cb2-80f4-91c6d96e9795)",
    "28.10.2020 11:08:49 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:08:49 -  with parameters: ",
    "28.10.2020 11:08:49 - etf.testcases = *",
    "28.10.2020 11:08:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:08:49 - Setting state to CREATED",
    "28.10.2020 11:08:49 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:08:54 - Starting TestRun.3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b at 2020-10-28T11:08:56Z"
  ]
}
Given path progresspath 0.000
When method GET 22.624
11:08:56.062 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:56.582 response time in milliseconds: 519.40
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:08:56 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["28.10.2020 11:08:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:49 UTC 2020)","28.10.2020 11:08:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:49 - Preparing 1 Test Task:","28.10.2020 11:08:49 -  TestTask 1 (3b102c86-71d5-4cb2-80f4-91c6d96e9795)","28.10.2020 11:08:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:49 -  with parameters: ","28.10.2020 11:08:49 - etf.testcases = *","28.10.2020 11:08:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:49 - Setting state to CREATED","28.10.2020 11:08:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:54 - Starting TestRun.3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b at 2020-10-28T11:08:56Z","28.10.2020 11:08:56 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:56 - Project Properties: ","28.10.2020 11:08:56 - etf.testcases - * ","28.10.2020 11:08:56 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","28.10.2020 11:08:56 - username -  ","28.10.2020 11:08:56 - authUser -  ","28.10.2020 11:08:56 - authMethod - basic ","28.10.2020 11:08:56 - TestRunTask initialized"]}

11:08:56.588 retry condition not satisfied: response.val == response.max
11:08:56.588 sleeping before retry #1
11:09:01.589 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:02.122 response time in milliseconds: 530.25
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:09:02 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"86","max":"87","log":["28.10.2020 11:08:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:49 UTC 2020)","28.10.2020 11:08:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:49 - Preparing 1 Test Task:","28.10.2020 11:08:49 -  TestTask 1 (3b102c86-71d5-4cb2-80f4-91c6d96e9795)","28.10.2020 11:08:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:49 -  with parameters: ","28.10.2020 11:08:49 - etf.testcases = *","28.10.2020 11:08:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:49 - Setting state to CREATED","28.10.2020 11:08:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:54 - Starting TestRun.3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b at 2020-10-28T11:08:56Z","28.10.2020 11:08:56 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:56 - Project Properties: ","28.10.2020 11:08:56 - etf.testcases - * ","28.10.2020 11:08:56 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","28.10.2020 11:08:56 - username -  ","28.10.2020 11:08:56 - authUser -  ","28.10.2020 11:08:56 - authMethod - basic ","28.10.2020 11:08:56 - TestRunTask initialized","28.10.2020 11:09:01 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027"]}

11:09:02.123 retry condition not satisfied: response.val == response.max
11:09:02.123 sleeping before retry #2
11:09:07.124 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:07.649 response time in milliseconds: 524.68
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:09:07 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["28.10.2020 11:08:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:49 UTC 2020)","28.10.2020 11:08:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:49 - Preparing 1 Test Task:","28.10.2020 11:08:49 -  TestTask 1 (3b102c86-71d5-4cb2-80f4-91c6d96e9795)","28.10.2020 11:08:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:49 -  with parameters: ","28.10.2020 11:08:49 - etf.testcases = *","28.10.2020 11:08:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:49 - Setting state to CREATED","28.10.2020 11:08:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:54 - Starting TestRun.3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b at 2020-10-28T11:08:56Z","28.10.2020 11:08:56 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:56 - Project Properties: ","28.10.2020 11:08:56 - etf.testcases - * ","28.10.2020 11:08:56 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","28.10.2020 11:08:56 - username -  ","28.10.2020 11:08:56 - authUser -  ","28.10.2020 11:08:56 - authMethod - basic ","28.10.2020 11:08:56 - TestRunTask initialized","28.10.2020 11:09:01 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:09:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:07 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:07 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:09:07.653 retry condition not satisfied: response.val == response.max
11:09:07.654 sleeping before retry #3
11:09:12.655 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:13.168 response time in milliseconds: 512.38
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:09:13 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["28.10.2020 11:08:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:49 UTC 2020)","28.10.2020 11:08:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:49 - Preparing 1 Test Task:","28.10.2020 11:08:49 -  TestTask 1 (3b102c86-71d5-4cb2-80f4-91c6d96e9795)","28.10.2020 11:08:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:49 -  with parameters: ","28.10.2020 11:08:49 - etf.testcases = *","28.10.2020 11:08:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:49 - Setting state to CREATED","28.10.2020 11:08:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:08:54 - Starting TestRun.3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b at 2020-10-28T11:08:56Z","28.10.2020 11:08:56 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:08:56 - Project Properties: ","28.10.2020 11:08:56 - etf.testcases - * ","28.10.2020 11:08:56 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","28.10.2020 11:08:56 - username -  ","28.10.2020 11:08:56 - authUser -  ","28.10.2020 11:08:56 - authMethod - basic ","28.10.2020 11:08:56 - TestRunTask initialized","28.10.2020 11:09:01 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:09:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:07 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:07 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:09:13.169 retry condition not satisfied: response.val == response.max
11:09:13.169 sleeping before retry #4
11:09:18.170 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:18.685 response time in milliseconds: 514.36
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:09:18 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

11:09:18.685 retry condition satisfied
* print response 0.000
11:09:18.685 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 5.006
11:09:18.686 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:23.678 response time in milliseconds: 3981.45
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:09:22 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Wed, 28 Oct 2020 11:09:15 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b.json","testRuns":{"TestRun":{"id":"EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:49.428Z","testTasks":{"TestTask":{"id":"EID3b102c86-71d5-4cb2-80f4-91c6d96e9795","parent":{"ref":"EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdd9c1fff-ef9a-4d50-9e14-4ad72db0370e"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDdf2862be-c330-4f41-8a44-afbb4336a4d5"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdd9c1fff-ef9a-4d50-9e14-4ad72db0370e","remoteResource":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:37.99Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:45.508Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDdf2862be-c330-4f41-8a44-afbb4336a4d5","testObject":{"ref":"EIDdd9c1fff-ef9a-4d50-9e14-4ad72db0370e"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee582c2-0175-1000-bf9f-07735bfdddfc","testCaseResults":{"TestCaseResult":[{"id":"EID6ee582c2-0175-1000-f48f-18e5bdaf94a0","testStepResults":{"TestStepResult":[{"id":"EID6ee582c3-0175-1000-2e10-9af94aa74513","parent":{"ref":"EID6ee582c2-0175-1000-f48f-18e5bdaf94a0"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:08:56Z","duration":32,"status":"PASSED"},{"id":"EID6ee582e4-0175-1000-695c-abc392c1b10c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee583d3-0175-1000-6661-14a219421b4d","parent":{"ref":"EID6ee582e4-0175-1000-695c-abc392c1b10c"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee583d3-0175-1000-741b-db079a18ad54","parent":{"ref":"EID6ee582e4-0175-1000-695c-abc392c1b10c"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee583d3-0175-1000-490e-49472c470dd9","parent":{"ref":"EID6ee582e4-0175-1000-695c-abc392c1b10c"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee583d3-0175-1000-e45e-ec8fb46efd60","parent":{"ref":"EID6ee582e4-0175-1000-695c-abc392c1b10c"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a14fdf5-0e68-4475-9483-83c3164ae09d"},{"ref":"EID96037cdc-8778-4511-8302-8f8e8be6ba78"},{"ref":"EIDf483baa9-47cf-4ac3-b3bd-7c8672b5786d"}]},"parent":{"ref":"EID6ee582c2-0175-1000-f48f-18e5bdaf94a0"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:08:56Z","duration":76,"status":"PASSED"}]},"parent":{"ref":"EID6ee582c2-0175-1000-bf9f-07735bfdddfc"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:08:56Z","duration":280,"status":"PASSED"},{"id":"EID6ee583da-0175-1000-23b3-07eae8ba4367","testStepResults":{"TestStepResult":{"id":"EID6ee583db-0175-1000-f138-680d0e6acdfa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58449-0175-1000-a6af-6a21593f6eb6","parent":{"ref":"EID6ee583db-0175-1000-f138-680d0e6acdfa"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee58449-0175-1000-03e7-f808a6136b7d","parent":{"ref":"EID6ee583db-0175-1000-f138-680d0e6acdfa"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee58449-0175-1000-f85b-46a994c3f66a","parent":{"ref":"EID6ee583db-0175-1000-f138-680d0e6acdfa"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe67cf46f-0c81-4780-8166-b769ebbd78dc"},{"ref":"EID648641bd-f7ab-4d38-98fc-dc35117a002a"},{"ref":"EID24dee4b0-d75b-4159-a6f7-209823de2389"}]},"parent":{"ref":"EID6ee583da-0175-1000-23b3-07eae8ba4367"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:08:56Z","duration":28,"status":"PASSED"}},"parent":{"ref":"EID6ee582c2-0175-1000-bf9f-07735bfdddfc"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:08:56Z","duration":112,"status":"PASSED"}]},"parent":{"ref":"EIDdf2862be-c330-4f41-8a44-afbb4336a4d5"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:08:56Z","duration":392,"status":"PASSED"},{"id":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb","testCaseResults":{"TestCaseResult":[{"id":"EID6ee5844a-0175-1000-a41a-aa6119034622","testStepResults":{"TestStepResult":[{"id":"EID6ee5845e-0175-1000-18a1-4dba2498fb84","parent":{"ref":"EID6ee5844a-0175-1000-a41a-aa6119034622"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:08:56Z","duration":28,"status":"PASSED"},{"id":"EID6ee5845e-0175-1000-d6c6-7b5b22d69cca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee584de-0175-1000-840b-035ef1c03e74","parent":{"ref":"EID6ee5845e-0175-1000-d6c6-7b5b22d69cca"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee584de-0175-1000-fc59-aa49ab82ec2d","parent":{"ref":"EID6ee5845e-0175-1000-d6c6-7b5b22d69cca"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee584de-0175-1000-684c-292e66a0534c","parent":{"ref":"EID6ee5845e-0175-1000-d6c6-7b5b22d69cca"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee584de-0175-1000-76f5-96215a4c9dcd","parent":{"ref":"EID6ee5845e-0175-1000-d6c6-7b5b22d69cca"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee584de-0175-1000-71d7-bfe724271294","parent":{"ref":"EID6ee5845e-0175-1000-d6c6-7b5b22d69cca"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:08:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb89a3468-b6be-4110-979e-bfa091c94b3f"},{"ref":"EID66f998e0-71d4-416a-8933-238caedefa29"},{"ref":"EID3f571441-8388-49d5-ba20-3e7feee5d3c1"}]},"parent":{"ref":"EID6ee5844a-0175-1000-a41a-aa6119034622"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:08:56Z","duration":30,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:08:56Z","duration":148,"status":"PASSED"},{"id":"EID6ee584eb-0175-1000-c356-85fcc5c250f6","testStepResults":{"TestStepResult":[{"id":"EID6ee584eb-0175-1000-3713-7e77834440e0","attachments":{"attachment":[{"ref":"EID121f4d47-0cdc-4d3c-b345-e09423a05afc"},{"ref":"EIDf4f7575c-4368-493a-8f71-94e094ce384f"}]},"parent":{"ref":"EID6ee584eb-0175-1000-c356-85fcc5c250f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:08:56Z","duration":120,"status":"PASSED"},{"id":"EID6ee5858f-0175-1000-0cfb-5d437dace610","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee586bd-0175-1000-672a-1cc6584f7c41","parent":{"ref":"EID6ee5858f-0175-1000-0cfb-5d437dace610"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee586bd-0175-1000-72d1-ee04c6a46b35","parent":{"ref":"EID6ee5858f-0175-1000-0cfb-5d437dace610"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee586bd-0175-1000-e571-06ac7bdb0cfe","parent":{"ref":"EID6ee5858f-0175-1000-0cfb-5d437dace610"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee586bd-0175-1000-2e6b-8da8c82ebe03","parent":{"ref":"EID6ee5858f-0175-1000-0cfb-5d437dace610"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdbcdbc28-4b31-438a-9071-939ccf6c1be3"},{"ref":"EIDe11b05dd-79ec-40d9-b007-bbb870e1073a"},{"ref":"EIDd9e81e48-59be-4dda-b803-33049ceec391"}]},"parent":{"ref":"EID6ee584eb-0175-1000-c356-85fcc5c250f6"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:08:57Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:08:56Z","duration":478,"status":"PASSED"},{"id":"EID6ee586c9-0175-1000-f947-bb42a7168d84","testStepResults":{"TestStepResult":[{"id":"EID6ee586c9-0175-1000-79d3-cfcc5745f6b2","attachments":{"attachment":[{"ref":"EID2529d4f9-fab6-4ac3-b8fd-32fa0b89304c"},{"ref":"EIDe5232486-9341-42ea-bdd1-367e206896d4"}]},"parent":{"ref":"EID6ee586c9-0175-1000-f947-bb42a7168d84"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:08:57Z","duration":96,"status":"PASSED"},{"id":"EID6ee58776-0175-1000-5bf7-5c62fc9f9d9a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58800-0175-1000-9d5d-8b62fe71f068","parent":{"ref":"EID6ee58776-0175-1000-5bf7-5c62fc9f9d9a"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee58800-0175-1000-217d-326989ce14d8","parent":{"ref":"EID6ee58776-0175-1000-5bf7-5c62fc9f9d9a"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee58800-0175-1000-8d58-8e237b8182cb","parent":{"ref":"EID6ee58776-0175-1000-5bf7-5c62fc9f9d9a"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee58800-0175-1000-1693-283abb6c6859","parent":{"ref":"EID6ee58776-0175-1000-5bf7-5c62fc9f9d9a"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee58800-0175-1000-21e4-a22186a540d8","parent":{"ref":"EID6ee58776-0175-1000-5bf7-5c62fc9f9d9a"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5433accc-4a94-43fb-8dcd-31ad5091ee13"},{"ref":"EIDd4400388-9763-4af9-bdb1-84fcc45c95f4"},{"ref":"EID8561e502-d72b-4d40-b008-a31c039906de"}]},"parent":{"ref":"EID6ee586c9-0175-1000-f947-bb42a7168d84"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:08:57Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:08:57Z","duration":321,"status":"PASSED"},{"id":"EID6ee5880a-0175-1000-51f5-8388b2a437af","testStepResults":{"TestStepResult":[{"id":"EID6ee5880b-0175-1000-4f3c-c9be5076d0f2","attachments":{"attachment":[{"ref":"EID932be0e3-bca4-4a99-85b3-dc12aa049994"},{"ref":"EID70a3dbd5-2a16-4480-8479-1fc43875d134"}]},"parent":{"ref":"EID6ee5880a-0175-1000-51f5-8388b2a437af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:08:57Z","duration":88,"status":"PASSED"},{"id":"EID6ee5888b-0175-1000-0115-5d5556f23517","parent":{"ref":"EID6ee5880a-0175-1000-51f5-8388b2a437af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:08:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee5888b-0175-1000-151f-d5bd0995323e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58961-0175-1000-4d5b-9eb41f73dced","parent":{"ref":"EID6ee5888b-0175-1000-151f-d5bd0995323e"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58961-0175-1000-bea9-b9b5d82f832d","parent":{"ref":"EID6ee5888b-0175-1000-151f-d5bd0995323e"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58961-0175-1000-ff18-85d5bc14b061","parent":{"ref":"EID6ee5888b-0175-1000-151f-d5bd0995323e"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58961-0175-1000-c343-42ad935d1d59","parent":{"ref":"EID6ee5888b-0175-1000-151f-d5bd0995323e"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5a1df360-23c9-4207-8a44-25d315087ae0"},{"ref":"EIDfaaada6f-22fc-4c4c-89df-977de1235677"},{"ref":"EIDf53c47d6-1bc2-44d0-ad54-59ff7d4f1ff5"}]},"parent":{"ref":"EID6ee5880a-0175-1000-51f5-8388b2a437af"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:08:57Z","duration":107,"status":"PASSED"},{"id":"EID6ee58961-0175-1000-ea77-f742dd47e76b","attachments":{"attachment":{"ref":"EIDd7b14712-21b3-4306-a388-45f5e0701e6b"}},"parent":{"ref":"EID6ee5880a-0175-1000-51f5-8388b2a437af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:08:58Z","duration":1,"status":"PASSED"},{"id":"EID6ee5896d-0175-1000-4b84-14053abb1a95","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58a0c-0175-1000-6993-1f666256cdfc","parent":{"ref":"EID6ee5896d-0175-1000-4b84-14053abb1a95"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58a0c-0175-1000-543d-0e9287b4973f","parent":{"ref":"EID6ee5896d-0175-1000-4b84-14053abb1a95"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58a0c-0175-1000-213c-284eb21b4075","parent":{"ref":"EID6ee5896d-0175-1000-4b84-14053abb1a95"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58a0c-0175-1000-549f-860cd65c45d7","parent":{"ref":"EID6ee5896d-0175-1000-4b84-14053abb1a95"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58a0c-0175-1000-04a9-07b42380fb5c","parent":{"ref":"EID6ee5896d-0175-1000-4b84-14053abb1a95"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb9b279fa-b57e-4366-a20c-ffcad88ffc7f"},{"ref":"EID7c6d1b7b-c318-45a6-bd3b-1f36345d2d45"},{"ref":"EID4eca08fe-4c3a-4d1d-951d-7a13058ba042"}]},"parent":{"ref":"EID6ee5880a-0175-1000-51f5-8388b2a437af"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:08:58Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:08:57Z","duration":514,"status":"PASSED"},{"id":"EID6ee58a0c-0175-1000-7cd7-e8ac831327d5","testStepResults":{"TestStepResult":[{"id":"EID6ee58a0c-0175-1000-3aee-a938499fb24c","attachments":{"attachment":[{"ref":"EID160cf029-8aba-4391-b248-70fbb9f6359f"},{"ref":"EIDa17d9895-5c7a-4373-b1e4-453d2334e1f0"}]},"parent":{"ref":"EID6ee58a0c-0175-1000-7cd7-e8ac831327d5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:08:58Z","duration":140,"status":"PASSED"},{"id":"EID6ee58abf-0175-1000-4eb8-bd1251a17fb6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58b2e-0175-1000-f08d-f8ef0deb222d","parent":{"ref":"EID6ee58abf-0175-1000-4eb8-bd1251a17fb6"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58b2e-0175-1000-d47d-1a646f245057","parent":{"ref":"EID6ee58abf-0175-1000-4eb8-bd1251a17fb6"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58b2e-0175-1000-c368-9220911592a5","parent":{"ref":"EID6ee58abf-0175-1000-4eb8-bd1251a17fb6"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58b2e-0175-1000-d077-febaa382fd87","parent":{"ref":"EID6ee58abf-0175-1000-4eb8-bd1251a17fb6"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf83f9102-8e4c-4574-86d1-2ec77702f3d6"},{"ref":"EID295656fb-b7cc-47f3-ab02-e55425ce6870"},{"ref":"EID9b763f8d-f5ac-409d-b411-9d3c4512be51"}]},"parent":{"ref":"EID6ee58a0c-0175-1000-7cd7-e8ac831327d5"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:08:58Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:08:58Z","duration":299,"status":"PASSED"},{"id":"EID6ee58b37-0175-1000-e08b-164e54147ace","testStepResults":{"TestStepResult":[{"id":"EID6ee58b37-0175-1000-4df8-27c0a645e1d6","attachments":{"attachment":[{"ref":"EIDe0ecf34b-cacf-4e18-9592-5c6d287138f8"},{"ref":"EID0ed602e1-b46d-4401-a4b4-03d19823a5b8"}]},"parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:08:58Z","duration":130,"status":"PASSED"},{"id":"EID6ee58be0-0175-1000-e597-7071a57e3d29","parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58be1-0175-1000-45fe-5194aedfedb3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58c68-0175-1000-7379-888a67732ed1","parent":{"ref":"EID6ee58be1-0175-1000-45fe-5194aedfedb3"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58c68-0175-1000-fbdd-fff1ff0aa3b5","parent":{"ref":"EID6ee58be1-0175-1000-45fe-5194aedfedb3"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58c68-0175-1000-31b5-2b5616b35df3","parent":{"ref":"EID6ee58be1-0175-1000-45fe-5194aedfedb3"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee58c68-0175-1000-1cbf-358f9ff50638","parent":{"ref":"EID6ee58be1-0175-1000-45fe-5194aedfedb3"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:08:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID453f577f-7821-40b7-a5f4-171df3136b3b"},{"ref":"EID7a330475-f852-4e40-8107-944bf7a85e72"},{"ref":"EID618436e6-2acc-49d3-b76f-ca5ec5bb6489"}]},"parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:08:58Z","duration":23,"status":"PASSED"},{"id":"EID6ee58c72-0175-1000-e144-2a5f5fa5cb7d","attachments":{"attachment":{"ref":"EID020a6fab-c72b-4dec-9c84-a2e2178c437e"}},"parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:08:58Z","duration":1,"status":"PASSED"},{"id":"EID6ee58c7f-0175-1000-fb79-bdc8fdfb4a2c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58d5e-0175-1000-67e7-f83b492d0c15","parent":{"ref":"EID6ee58c7f-0175-1000-fb79-bdc8fdfb4a2c"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58d5e-0175-1000-cea8-ec7fb3a66329","parent":{"ref":"EID6ee58c7f-0175-1000-fb79-bdc8fdfb4a2c"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58d5e-0175-1000-5142-450f0a70844c","parent":{"ref":"EID6ee58c7f-0175-1000-fb79-bdc8fdfb4a2c"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27afa3c2-64ab-4961-962d-030020c3896a"},{"ref":"EIDff4d20d0-f752-4e69-ab71-f7cc85e057a7"},{"ref":"EIDab8c7ee9-e643-4ea6-a294-6cfe06fd9187"}]},"parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:08:58Z","duration":166,"status":"PASSED"},{"id":"EID6ee58d5e-0175-1000-1b60-f83e390fbcc5","attachments":{"attachment":{"ref":"EID79b3448d-9541-4797-994b-34c8291e4234"}},"parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:08:59Z","duration":1,"status":"PASSED"},{"id":"EID6ee58d6a-0175-1000-c63c-5f546f80b413","attachments":{"attachment":{"ref":"EID893a218f-c272-4d52-87fe-cd4668499d5e"}},"parent":{"ref":"EID6ee58b37-0175-1000-e08b-164e54147ace"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:08:59Z","duration":28,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:08:58Z","duration":602,"status":"PASSED"},{"id":"EID6ee58d92-0175-1000-51dd-529d71b6b52a","testStepResults":{"TestStepResult":[{"id":"EID6ee58d92-0175-1000-157d-5cde6430456d","attachments":{"attachment":[{"ref":"EIDfeccb77b-d010-4365-9b78-61fe5f52d7e6"},{"ref":"EIDdd59d3ba-752c-4e92-8549-b742313d9726"}]},"parent":{"ref":"EID6ee58d92-0175-1000-51dd-529d71b6b52a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:08:59Z","duration":103,"status":"PASSED"},{"id":"EID6ee58e5c-0175-1000-9511-a2e92d9aace2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58ef1-0175-1000-852b-5019ebe2d266","parent":{"ref":"EID6ee58e5c-0175-1000-9511-a2e92d9aace2"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58ef1-0175-1000-187d-4702ac45bff4","parent":{"ref":"EID6ee58e5c-0175-1000-9511-a2e92d9aace2"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58ef1-0175-1000-b734-0d96c3ad9643","parent":{"ref":"EID6ee58e5c-0175-1000-9511-a2e92d9aace2"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58ef1-0175-1000-fb3b-7e8866a17c35","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee58e5c-0175-1000-9511-a2e92d9aace2"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID09714bea-f892-4692-967b-11ee52a40ae3"},{"ref":"EID0f686fd6-f402-499f-b849-d0eda5fc3294"},{"ref":"EID4e199405-0ade-4ce4-b70c-c8e30496657b"}]},"parent":{"ref":"EID6ee58d92-0175-1000-51dd-529d71b6b52a"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:08:59Z","duration":30,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:08:59Z","duration":351,"status":"PASSED_MANUAL"},{"id":"EID6ee58ef1-0175-1000-a21e-45c6e9357dfa","testStepResults":{"TestStepResult":{"id":"EID6ee58ef1-0175-1000-fa48-a432c83028d7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee58f9c-0175-1000-392b-f704b7794be4","parent":{"ref":"EID6ee58ef1-0175-1000-fa48-a432c83028d7"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58f9c-0175-1000-5097-197ed6da7345","parent":{"ref":"EID6ee58ef1-0175-1000-fa48-a432c83028d7"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58f9c-0175-1000-d3a3-7bd8a26dc2b0","parent":{"ref":"EID6ee58ef1-0175-1000-fa48-a432c83028d7"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee58f9c-0175-1000-1814-c88feb2a9533","parent":{"ref":"EID6ee58ef1-0175-1000-fa48-a432c83028d7"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b127f60-c04b-4fd6-a934-60b233bc5793"},{"ref":"EID3131572a-422f-492e-8d8a-3f40a297ff2f"},{"ref":"EID01af7b1e-56f1-4a0c-bd08-4b0a59a34917"}]},"parent":{"ref":"EID6ee58ef1-0175-1000-a21e-45c6e9357dfa"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:08:59Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:08:59Z","duration":182,"status":"PASSED"},{"id":"EID6ee58fa8-0175-1000-34a4-b97b6e3d0b9a","testStepResults":{"TestStepResult":{"id":"EID6ee58fa8-0175-1000-156c-6052b6cb47f0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5908e-0175-1000-8744-32951e59cbdd","parent":{"ref":"EID6ee58fa8-0175-1000-156c-6052b6cb47f0"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee5908e-0175-1000-075b-aee2adb218fe","parent":{"ref":"EID6ee58fa8-0175-1000-156c-6052b6cb47f0"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee5908e-0175-1000-7dfe-024c86a99d66","parent":{"ref":"EID6ee58fa8-0175-1000-156c-6052b6cb47f0"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee5908e-0175-1000-fc2a-be2e0cc1f3e3","parent":{"ref":"EID6ee58fa8-0175-1000-156c-6052b6cb47f0"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:08:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe340c63e-6ca9-49aa-a26f-bb153614da86"},{"ref":"EID1eb5e248-daf4-4286-bfa3-d5ef2500e3d0"},{"ref":"EID12654c42-7d89-44b8-ae07-cfd2e212fe62"}]},"parent":{"ref":"EID6ee58fa8-0175-1000-34a4-b97b6e3d0b9a"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:08:59Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:08:59Z","duration":241,"status":"PASSED"},{"id":"EID6ee59099-0175-1000-152f-03821d11dec9","testStepResults":{"TestStepResult":[{"id":"EID6ee59099-0175-1000-5a65-96d7d82bf541","attachments":{"attachment":[{"ref":"EIDfeaa0973-13ba-4509-b8e9-2176f1a1405e"},{"ref":"EIDe02bdd46-4328-4abb-aace-a750ffdd403b"},{"ref":"EIDfbd13ecf-fda3-42c0-bd32-9939da4a40ea"},{"ref":"EID3d247c0a-f604-4211-b083-a9ee2f01537f"},{"ref":"EID88185882-2e5d-4aca-891c-19128b2e8fb9"},{"ref":"EID9631e9b8-02d2-494e-a832-7e9e665f6059"},{"ref":"EID3f630d75-2cfd-4756-abc0-e38ac6c4ff48"},{"ref":"EID375313ba-4e48-4d34-b89f-6d801cd110f2"},{"ref":"EID76253387-af30-4198-a0c3-96e7e06266a0"},{"ref":"EID41c0efb9-5b25-4862-bb68-ee5c2647f3f4"},{"ref":"EID543c0f58-103b-4701-8e28-b1494108bb40"},{"ref":"EID81015af3-29ba-4903-8423-4704e010693d"}]},"parent":{"ref":"EID6ee59099-0175-1000-152f-03821d11dec9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:08:59Z","duration":349,"status":"PASSED"},{"id":"EID6ee5932a-0175-1000-ce62-a8544eed0e78","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee593dd-0175-1000-dfb4-cd5f41a1db24","parent":{"ref":"EID6ee5932a-0175-1000-ce62-a8544eed0e78"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee593dd-0175-1000-ea28-45e9939e2531","parent":{"ref":"EID6ee5932a-0175-1000-ce62-a8544eed0e78"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee593dd-0175-1000-e7cf-3d7e83cea69b","parent":{"ref":"EID6ee5932a-0175-1000-ce62-a8544eed0e78"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee593dd-0175-1000-880a-d86ecedaa3b8","parent":{"ref":"EID6ee5932a-0175-1000-ce62-a8544eed0e78"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee593dd-0175-1000-8841-97d6cabf4289","parent":{"ref":"EID6ee5932a-0175-1000-ce62-a8544eed0e78"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0745834f-f6cc-4e75-a817-910c4635ef85"},{"ref":"EID48dc3598-77ce-42dd-8127-21ade8027889"},{"ref":"EID549a8bb3-3275-450f-937b-7f8c2ffbbda6"}]},"parent":{"ref":"EID6ee59099-0175-1000-152f-03821d11dec9"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:09:00Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:08:59Z","duration":848,"status":"PASSED"},{"id":"EID6ee593e9-0175-1000-4472-835c599b47c6","testStepResults":{"TestStepResult":{"id":"EID6ee593e9-0175-1000-0a6e-a5cab12e43bc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59479-0175-1000-0ae7-51fc732e9c41","parent":{"ref":"EID6ee593e9-0175-1000-0a6e-a5cab12e43bc"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee59479-0175-1000-c5f5-67abfe43163e","parent":{"ref":"EID6ee593e9-0175-1000-0a6e-a5cab12e43bc"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee59479-0175-1000-44a0-fc2c9be7d8ac","parent":{"ref":"EID6ee593e9-0175-1000-0a6e-a5cab12e43bc"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee59479-0175-1000-70d8-711607862beb","parent":{"ref":"EID6ee593e9-0175-1000-0a6e-a5cab12e43bc"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:09:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb286c045-759c-4ee3-8f1a-4f0bdbb7c531"},{"ref":"EID408c6493-fce9-4b39-a2bb-aed039794418"},{"ref":"EID7d06d7e6-f0a9-40f8-92fc-cecfba3213c8"}]},"parent":{"ref":"EID6ee593e9-0175-1000-4472-835c599b47c6"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:09:00Z","duration":26,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:09:00Z","duration":145,"status":"PASSED"},{"id":"EID6ee5947a-0175-1000-37c7-b362d397c3e0","testStepResults":{"TestStepResult":{"id":"EID6ee5947a-0175-1000-6a94-27989cd10043","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5950b-0175-1000-7f86-3bf23ea48dfc","parent":{"ref":"EID6ee5947a-0175-1000-6a94-27989cd10043"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee5950b-0175-1000-fa07-c79af91a0581","parent":{"ref":"EID6ee5947a-0175-1000-6a94-27989cd10043"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee5950b-0175-1000-b04d-d68ad870d599","parent":{"ref":"EID6ee5947a-0175-1000-6a94-27989cd10043"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee5950b-0175-1000-b5ef-537c7869ceec","parent":{"ref":"EID6ee5947a-0175-1000-6a94-27989cd10043"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee5950b-0175-1000-f2b0-be0698114c42","parent":{"ref":"EID6ee5947a-0175-1000-6a94-27989cd10043"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee5950b-0175-1000-8aea-d0fafa480c6c","parent":{"ref":"EID6ee5947a-0175-1000-6a94-27989cd10043"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID45d07b8d-1a73-4b1b-ab7f-34c3efa851fa"},{"ref":"EID90926e18-ba04-4089-b135-3b81fba9f1f8"},{"ref":"EID3cbe15e5-b4b6-49a6-8b97-a786082b8706"}]},"parent":{"ref":"EID6ee5947a-0175-1000-37c7-b362d397c3e0"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:09:00Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:09:00Z","duration":155,"status":"PASSED"},{"id":"EID6ee59516-0175-1000-1a40-3d637853ae22","testStepResults":{"TestStepResult":{"id":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee595d2-0175-1000-3927-a20ad51100ff","parent":{"ref":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee595d2-0175-1000-bed5-bcb8d226b0ad","parent":{"ref":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee595d3-0175-1000-2d0d-8e5b60f04e67","parent":{"ref":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee595d3-0175-1000-5d69-47515295a019","parent":{"ref":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee595d3-0175-1000-2259-7061e75e4d28","parent":{"ref":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee595d3-0175-1000-d31e-5abe4cc784da","parent":{"ref":"EID6ee59516-0175-1000-daf1-78d7e5c42b5f"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDccdee3c5-69f0-48ce-bab8-1543b99159ee"},{"ref":"EID3be7cc62-57d4-4a37-b3d8-f145671abf18"},{"ref":"EIDdbaff071-075a-47ee-9119-18a79d9021aa"}]},"parent":{"ref":"EID6ee59516-0175-1000-1a40-3d637853ae22"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:09:01Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:09:01Z","duration":189,"status":"PASSED"},{"id":"EID6ee595d3-0175-1000-9893-20e821d1ae04","testStepResults":{"TestStepResult":{"id":"EID6ee595d3-0175-1000-2af6-31327085ef6a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59667-0175-1000-596e-eeb214baffa5","parent":{"ref":"EID6ee595d3-0175-1000-2af6-31327085ef6a"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59667-0175-1000-3462-43d4c0797c9d","parent":{"ref":"EID6ee595d3-0175-1000-2af6-31327085ef6a"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59667-0175-1000-e478-9a02dafa5dce","parent":{"ref":"EID6ee595d3-0175-1000-2af6-31327085ef6a"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59667-0175-1000-7bb8-9be9e1c6b9f4","parent":{"ref":"EID6ee595d3-0175-1000-2af6-31327085ef6a"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1b1f9ed5-661b-4cbe-b4aa-f858deb498b6"},{"ref":"EIDd405adc1-87a8-4f53-a640-839552b8827c"},{"ref":"EIDada60e53-8a6a-4266-8ebc-202288f05f8a"}]},"parent":{"ref":"EID6ee595d3-0175-1000-9893-20e821d1ae04"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:09:01Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:09:01Z","duration":149,"status":"PASSED"},{"id":"EID6ee59668-0175-1000-9f74-04661da45fd3","testStepResults":{"TestStepResult":[{"id":"EID6ee59668-0175-1000-a239-922fe8a47b32","attachments":{"attachment":[{"ref":"EID2382f77f-0d3f-4de4-94f5-75160b0edac2"},{"ref":"EIDbfa86af3-feaa-4299-9627-c4fd8e553b2b"},{"ref":"EIDccaa1d18-b0b2-4171-81d9-f74c242ec907"},{"ref":"EID9f4f909b-9208-4891-8fd2-579867b921de"}]},"parent":{"ref":"EID6ee59668-0175-1000-9f74-04661da45fd3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:09:01Z","duration":199,"status":"PASSED"},{"id":"EID6ee5975f-0175-1000-3fb2-98ab0482fa4b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee597cf-0175-1000-b9a7-a08a39897530","parent":{"ref":"EID6ee5975f-0175-1000-3fb2-98ab0482fa4b"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee597cf-0175-1000-3708-af2e79564803","parent":{"ref":"EID6ee5975f-0175-1000-3fb2-98ab0482fa4b"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee597cf-0175-1000-f458-29e0921831ed","parent":{"ref":"EID6ee5975f-0175-1000-3fb2-98ab0482fa4b"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee597cf-0175-1000-d7fe-725d9fa46e34","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":2},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee5975f-0175-1000-3fb2-98ab0482fa4b"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:09:01Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDca545e67-ce34-452b-81ad-e547b0318a64"},{"ref":"EID5e405b9e-511a-4bdc-86e4-08382f2925d7"},{"ref":"EID183038c7-d7cd-4135-a372-1aaeb51e2eea"}]},"parent":{"ref":"EID6ee59668-0175-1000-9f74-04661da45fd3"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:09:01Z","duration":24,"status":"FAILED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:09:01Z","duration":361,"status":"FAILED"},{"id":"EID6ee597da-0175-1000-e7ae-5c496fcdb1e9","testStepResults":{"TestStepResult":{"id":"EID6ee597da-0175-1000-848c-077d54270ff8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59863-0175-1000-2a5f-916275e84eb2","parent":{"ref":"EID6ee597da-0175-1000-848c-077d54270ff8"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59863-0175-1000-b968-ffa404d804fa","parent":{"ref":"EID6ee597da-0175-1000-848c-077d54270ff8"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59863-0175-1000-43f2-d0ff9d41b2be","parent":{"ref":"EID6ee597da-0175-1000-848c-077d54270ff8"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59863-0175-1000-91f3-5509d486476d","parent":{"ref":"EID6ee597da-0175-1000-848c-077d54270ff8"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID32a56398-e32b-4e3a-a51e-86e7efe9c357"},{"ref":"EIDf38bbca1-c4f6-4b27-af5b-21aa9d96b0e6"},{"ref":"EID8207a9c0-bc0a-4bf2-a16d-3f87bb9d0606"}]},"parent":{"ref":"EID6ee597da-0175-1000-e7ae-5c496fcdb1e9"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:09:01Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:09:01Z","duration":137,"status":"PASSED"},{"id":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b","testStepResults":{"TestStepResult":[{"id":"EID6ee59863-0175-1000-6632-78848df74d3f","parent":{"ref":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:09:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee59863-0175-1000-2ae8-55aef12f52a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee598ff-0175-1000-19bf-334eaa28408d","parent":{"ref":"EID6ee59863-0175-1000-2ae8-55aef12f52a4"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee598ff-0175-1000-9c62-18a4b956a7d6","parent":{"ref":"EID6ee59863-0175-1000-2ae8-55aef12f52a4"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee598ff-0175-1000-4fa1-610c8e85cb59","parent":{"ref":"EID6ee59863-0175-1000-2ae8-55aef12f52a4"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee598ff-0175-1000-930f-96f658af3b63","parent":{"ref":"EID6ee59863-0175-1000-2ae8-55aef12f52a4"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd93c87ff-e1fe-44f7-b198-69f425892bdc"},{"ref":"EIDb87fdeca-f1f5-4435-9f1d-4065982aca2f"},{"ref":"EID4783eaf4-f3c7-469d-919b-d22f39b5fdd3"}]},"parent":{"ref":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:09:01Z","duration":23,"status":"PASSED"},{"id":"EID6ee598ff-0175-1000-f8c0-c60d12286a79","attachments":{"attachment":{"ref":"EID2d8fe776-bb56-4c77-bf28-b67f75457d8a"}},"parent":{"ref":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":1,"status":"PASSED"},{"id":"EID6ee5990b-0175-1000-c534-edcc25b03164","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee599ef-0175-1000-1896-85cf678e7bd2","parent":{"ref":"EID6ee5990b-0175-1000-c534-edcc25b03164"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee599ef-0175-1000-d386-279c3b9c6c14","parent":{"ref":"EID6ee5990b-0175-1000-c534-edcc25b03164"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee599ef-0175-1000-6aa0-fdc64a2c7bc6","parent":{"ref":"EID6ee5990b-0175-1000-c534-edcc25b03164"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee599ef-0175-1000-85b7-9e8b6892485c","parent":{"ref":"EID6ee5990b-0175-1000-c534-edcc25b03164"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID262a09be-d121-4d31-9c42-e05d6ef14afb"},{"ref":"EID47a372f0-871b-4d2b-8d2f-9fcf79ad2cf5"},{"ref":"EID6269d44b-85ee-434e-87a2-d1faf9013177"}]},"parent":{"ref":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-28T11:09:02Z","duration":82,"status":"PASSED"},{"id":"EID6ee599ef-0175-1000-12f4-085f07bf25ea","attachments":{"attachment":{"ref":"EIDeda7b912-1628-48ab-9d58-22f3eebbb536"}},"parent":{"ref":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":2,"status":"PASSED"},{"id":"EID6ee599ff-0175-1000-c9c7-a10c09020fa9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59a70-0175-1000-415b-ec41e3d26cfc","parent":{"ref":"EID6ee599ff-0175-1000-c9c7-a10c09020fa9"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59a70-0175-1000-842b-3cccab393305","parent":{"ref":"EID6ee599ff-0175-1000-c9c7-a10c09020fa9"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59a70-0175-1000-b929-7bd6d3ab7e13","parent":{"ref":"EID6ee599ff-0175-1000-c9c7-a10c09020fa9"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59a70-0175-1000-dd42-53d309fda365","parent":{"ref":"EID6ee599ff-0175-1000-c9c7-a10c09020fa9"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf0482305-5f80-4b17-87b3-0965e92c862a"},{"ref":"EID49ecaa0e-9a9c-42f9-914c-043b7b56df30"},{"ref":"EIDddcc5f00-ffdd-4357-b188-cff00b305f16"}]},"parent":{"ref":"EID6ee59863-0175-1000-95e3-5a0e692ffa7b"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-28T11:09:02Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6ee5844a-0175-1000-dd85-d72b0ba9dfcb"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:09:01Z","duration":535,"status":"PASSED"}]},"parent":{"ref":"EIDdf2862be-c330-4f41-8a44-afbb4336a4d5"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:08:56Z","duration":5680,"status":"FAILED"},{"id":"EID6ee59a7a-0175-1000-5c22-290a88f34318","testCaseResults":{"TestCaseResult":[{"id":"EID6ee59a7a-0175-1000-d815-5fe29115db3f","testStepResults":{"TestStepResult":[{"id":"EID6ee59a7a-0175-1000-fd77-1152c5621874","parent":{"ref":"EID6ee59a7a-0175-1000-d815-5fe29115db3f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59a7a-0175-1000-d1a1-8824174f6d60","parent":{"ref":"EID6ee59a7a-0175-1000-d815-5fe29115db3f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":24,"status":"PASSED"},{"id":"EID6ee59a7a-0175-1000-fe52-45ef8884aa0a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59aec-0175-1000-251d-ed00c05f2cfb","parent":{"ref":"EID6ee59a7a-0175-1000-fe52-45ef8884aa0a"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59aec-0175-1000-28b9-d4748dbd2b68","parent":{"ref":"EID6ee59a7a-0175-1000-fe52-45ef8884aa0a"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59aec-0175-1000-d2ef-4e545b134304","parent":{"ref":"EID6ee59a7a-0175-1000-fe52-45ef8884aa0a"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8c464cb-dd12-46f1-9b67-c06c0fea51fe"},{"ref":"EID1ebd595c-4291-4b98-a483-6d75ac8f4b96"},{"ref":"EID78f8b71e-3701-4c36-a5c0-4019c0726acf"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-d815-5fe29115db3f"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:09:02Z","duration":23,"status":"PASSED"},{"id":"EID6ee59aec-0175-1000-4b7c-5385f3235f38","attachments":{"attachment":{"ref":"EID912f5bc4-7550-4706-9db3-7e45c882178d"}},"parent":{"ref":"EID6ee59a7a-0175-1000-d815-5fe29115db3f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":9,"status":"PASSED"},{"id":"EID6ee59b0f-0175-1000-4bad-6fbfef00c4be","parent":{"ref":"EID6ee59a7a-0175-1000-d815-5fe29115db3f"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:09:02Z","duration":11,"status":"PASSED"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:09:02Z","duration":161,"status":"PASSED"},{"id":"EID6ee59b1b-0175-1000-aad2-f7e0a51921fc","testStepResults":{"TestStepResult":[{"id":"EID6ee59b1b-0175-1000-a8ef-df5e3d5b9f93","parent":{"ref":"EID6ee59b1b-0175-1000-aad2-f7e0a51921fc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":28,"status":"PASSED"},{"id":"EID6ee59b1b-0175-1000-19a1-75a225906bfa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59b77-0175-1000-d0ce-029a8440ee23","parent":{"ref":"EID6ee59b1b-0175-1000-19a1-75a225906bfa"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59b77-0175-1000-aefc-31c1845afe74","parent":{"ref":"EID6ee59b1b-0175-1000-19a1-75a225906bfa"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59b77-0175-1000-8958-8d5ef7a90a9e","parent":{"ref":"EID6ee59b1b-0175-1000-19a1-75a225906bfa"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59b77-0175-1000-7f21-87e05eab301c","parent":{"ref":"EID6ee59b1b-0175-1000-19a1-75a225906bfa"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59b77-0175-1000-0d10-c771d0b7f256","parent":{"ref":"EID6ee59b1b-0175-1000-19a1-75a225906bfa"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID17a28f34-5593-4987-8d30-66550e2af380"},{"ref":"EIDc76f3bca-49ba-4951-8352-c140913d499f"},{"ref":"EIDf28df8a8-60ef-475b-b43f-f174499a7a51"}]},"parent":{"ref":"EID6ee59b1b-0175-1000-aad2-f7e0a51921fc"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:09:02Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:09:02Z","duration":93,"status":"PASSED"},{"id":"EID6ee59b78-0175-1000-7e9b-2843b2708cc6","testStepResults":{"TestStepResult":[{"id":"EID6ee59b78-0175-1000-92c4-441b1077ce8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59bcd-0175-1000-fe08-d21f65b23c5f","parent":{"ref":"EID6ee59b78-0175-1000-92c4-441b1077ce8f"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59bcd-0175-1000-a879-f008b772b699","parent":{"ref":"EID6ee59b78-0175-1000-92c4-441b1077ce8f"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59bcd-0175-1000-bd65-ee16edb4651d","parent":{"ref":"EID6ee59b78-0175-1000-92c4-441b1077ce8f"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f78cc8c-cfb1-4b2b-b879-61f79e1e849a"},{"ref":"EIDef08d14c-a9cc-4e41-8f60-86616e02ae7f"},{"ref":"EID8960c968-db2a-426f-a352-4fb72304325b"}]},"parent":{"ref":"EID6ee59b78-0175-1000-7e9b-2843b2708cc6"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:09:02Z","duration":24,"status":"PASSED"},{"id":"EID6ee59bcd-0175-1000-9487-99772d5dff20","attachments":{"attachment":{"ref":"EIDce07f5d8-eb95-411e-8408-594444570c58"}},"parent":{"ref":"EID6ee59b78-0175-1000-7e9b-2843b2708cc6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59bdd-0175-1000-f2af-cd0354d4fcf7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59c4e-0175-1000-e7b5-568a645aaac2","parent":{"ref":"EID6ee59bdd-0175-1000-f2af-cd0354d4fcf7"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59c4e-0175-1000-51ea-8ef37bdfbe57","parent":{"ref":"EID6ee59bdd-0175-1000-f2af-cd0354d4fcf7"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59c4e-0175-1000-69c6-6dfd3f73cfe2","parent":{"ref":"EID6ee59bdd-0175-1000-f2af-cd0354d4fcf7"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59c4f-0175-1000-f7de-f6725360340e","parent":{"ref":"EID6ee59bdd-0175-1000-f2af-cd0354d4fcf7"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee59c4f-0175-1000-d515-a5ff553d07bb","parent":{"ref":"EID6ee59bdd-0175-1000-f2af-cd0354d4fcf7"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:09:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5a9681d9-1d37-40a8-bb17-9ae67f3e4a76"},{"ref":"EIDa7fff2e2-eed1-4689-b704-ac1538f2967d"},{"ref":"EID5bb5e5dc-eef3-4908-82bf-21b162df4496"}]},"parent":{"ref":"EID6ee59b78-0175-1000-7e9b-2843b2708cc6"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:09:02Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:09:02Z","duration":224,"status":"PASSED"},{"id":"EID6ee59c58-0175-1000-5dcb-ac0d96741088","testStepResults":{"TestStepResult":[{"id":"EID6ee59c58-0175-1000-d86d-1d5b0b003ab8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59cb4-0175-1000-46e8-b6186a0f4440","parent":{"ref":"EID6ee59c58-0175-1000-d86d-1d5b0b003ab8"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59cb4-0175-1000-5e20-12d88c0b5e01","parent":{"ref":"EID6ee59c58-0175-1000-d86d-1d5b0b003ab8"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59cb4-0175-1000-0144-28a6fcc68775","parent":{"ref":"EID6ee59c58-0175-1000-d86d-1d5b0b003ab8"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59cb4-0175-1000-96ef-3ee470a3f659","parent":{"ref":"EID6ee59c58-0175-1000-d86d-1d5b0b003ab8"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID97541db8-6da4-47ac-a871-bca755d086a7"},{"ref":"EIDe114e90f-b0f0-40dc-91bc-ef18286e2cdd"},{"ref":"EID57e8ad22-cd81-453b-80d1-79c67ddf632c"}]},"parent":{"ref":"EID6ee59c58-0175-1000-5dcb-ac0d96741088"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:09:02Z","duration":24,"status":"PASSED"},{"id":"EID6ee59cb4-0175-1000-b66b-51e2a34c4b1d","attachments":{"attachment":{"ref":"EIDebf89b6c-ca14-4edb-9c68-e23e31ed7fd4"}},"parent":{"ref":"EID6ee59c58-0175-1000-5dcb-ac0d96741088"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:09:03Z","duration":1,"status":"PASSED"},{"id":"EID6ee59cbf-0175-1000-14a6-a36c3a2f7426","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59cf0-0175-1000-c5c3-e67ef017451a","parent":{"ref":"EID6ee59cbf-0175-1000-14a6-a36c3a2f7426"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59cf0-0175-1000-d5ed-f60cab7cbcd1","parent":{"ref":"EID6ee59cbf-0175-1000-14a6-a36c3a2f7426"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd8a5d8f-545b-4479-8492-263373f6d9d8"},{"ref":"EID4381c627-00d3-4117-b3b5-9cc0af485d1d"}]},"parent":{"ref":"EID6ee59c58-0175-1000-5dcb-ac0d96741088"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:09:03Z","duration":45,"status":"PASSED"},{"id":"EID6ee59cf0-0175-1000-deac-f28758690bab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59d77-0175-1000-60b3-086f960c7550","parent":{"ref":"EID6ee59cf0-0175-1000-deac-f28758690bab"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59d77-0175-1000-73b7-925b415e7425","parent":{"ref":"EID6ee59cf0-0175-1000-deac-f28758690bab"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59d77-0175-1000-6d27-d2f0ecfae200","parent":{"ref":"EID6ee59cf0-0175-1000-deac-f28758690bab"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59d77-0175-1000-16c3-b7f9e41aa8e1","parent":{"ref":"EID6ee59cf0-0175-1000-deac-f28758690bab"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc683bb77-8e3e-44b7-9020-92bc8a6d8114"},{"ref":"EIDa979ed47-332b-4c9a-add7-976163bcd126"},{"ref":"EIDbe40f545-6afc-45a1-bc9e-21dd3c298938"}]},"parent":{"ref":"EID6ee59c58-0175-1000-5dcb-ac0d96741088"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:09:03Z","duration":43,"status":"PASSED"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:09:02Z","duration":288,"status":"PASSED"},{"id":"EID6ee59d78-0175-1000-96c4-0581d5076fb7","testStepResults":{"TestStepResult":{"id":"EID6ee59d78-0175-1000-c7cd-8082a3b92a78","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59deb-0175-1000-9554-42ce5c633a19","parent":{"ref":"EID6ee59d78-0175-1000-c7cd-8082a3b92a78"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59deb-0175-1000-71fb-ddf8f1c2302d","parent":{"ref":"EID6ee59d78-0175-1000-c7cd-8082a3b92a78"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59deb-0175-1000-941f-69a175b1232a","parent":{"ref":"EID6ee59d78-0175-1000-c7cd-8082a3b92a78"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID11126179-2a6a-493d-b188-dd49c2471b6a"},{"ref":"EIDa45c5542-663c-43a6-ab04-dcd44898def1"},{"ref":"EID82257fd0-8cde-4306-aeb6-e87b34a2d8e5"}]},"parent":{"ref":"EID6ee59d78-0175-1000-96c4-0581d5076fb7"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:09:03Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:09:03Z","duration":115,"status":"PASSED"},{"id":"EID6ee59deb-0175-1000-f449-994629a01baa","testStepResults":{"TestStepResult":{"id":"EID6ee59deb-0175-1000-eacc-908585375025","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59e4b-0175-1000-a12d-f082484bf3ef","parent":{"ref":"EID6ee59deb-0175-1000-eacc-908585375025"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59e4b-0175-1000-393a-97b11eeb1f8b","parent":{"ref":"EID6ee59deb-0175-1000-eacc-908585375025"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59e4b-0175-1000-1b3a-5573ae521b87","parent":{"ref":"EID6ee59deb-0175-1000-eacc-908585375025"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdcd90594-b843-4860-8c4f-a728629d6abb"},{"ref":"EID03593c81-ec05-4642-9fde-9c31d1ce8743"},{"ref":"EID9e85ea14-63bf-4940-ae70-21c240152394"}]},"parent":{"ref":"EID6ee59deb-0175-1000-f449-994629a01baa"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:09:03Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:09:03Z","duration":97,"status":"PASSED"},{"id":"EID6ee59e4c-0175-1000-4f24-751eacfdec7e","testStepResults":{"TestStepResult":{"id":"EID6ee59e4c-0175-1000-9ff7-10583eafb5fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59ec5-0175-1000-587b-9efb5a22334f","parent":{"ref":"EID6ee59e4c-0175-1000-9ff7-10583eafb5fc"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59ec5-0175-1000-f6a0-cae1f01c708c","parent":{"ref":"EID6ee59e4c-0175-1000-9ff7-10583eafb5fc"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59ec5-0175-1000-2214-38435e25eb54","parent":{"ref":"EID6ee59e4c-0175-1000-9ff7-10583eafb5fc"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59ec5-0175-1000-6205-4782ff5ba21c","parent":{"ref":"EID6ee59e4c-0175-1000-9ff7-10583eafb5fc"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59ec5-0175-1000-75d4-e3ab57f829ff","parent":{"ref":"EID6ee59e4c-0175-1000-9ff7-10583eafb5fc"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID066e67f1-0635-45e6-806f-a777b082baf7"},{"ref":"EID868ddc86-5150-437e-8b18-26011cd563bc"},{"ref":"EID0e292f11-426a-4f12-860a-34b82d750324"}]},"parent":{"ref":"EID6ee59e4c-0175-1000-4f24-751eacfdec7e"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:09:03Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:09:03Z","duration":132,"status":"PASSED"},{"id":"EID6ee59ed0-0175-1000-b3dd-c8ea4b6af66c","testStepResults":{"TestStepResult":{"id":"EID6ee59ed0-0175-1000-3456-60c0b2fd632b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59f25-0175-1000-48e9-edcd5f14188b","parent":{"ref":"EID6ee59ed0-0175-1000-3456-60c0b2fd632b"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59f25-0175-1000-01fd-5750bff6dab9","parent":{"ref":"EID6ee59ed0-0175-1000-3456-60c0b2fd632b"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59f25-0175-1000-9ff6-04e859ca108d","parent":{"ref":"EID6ee59ed0-0175-1000-3456-60c0b2fd632b"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfcd10e8f-f52a-467d-9298-5094fecc910d"},{"ref":"EIDe2f4ba7a-15d0-465c-8fd4-9c9eb04a3303"},{"ref":"EIDf13ea882-29a3-4db8-9a93-91df11811ea9"}]},"parent":{"ref":"EID6ee59ed0-0175-1000-b3dd-c8ea4b6af66c"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:09:03Z","duration":26,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:09:03Z","duration":85,"status":"PASSED"},{"id":"EID6ee59f25-0175-1000-c95a-f50990f71b5b","testStepResults":{"TestStepResult":{"id":"EID6ee59f25-0175-1000-0724-1d455312487c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59f91-0175-1000-9247-4161452686af","parent":{"ref":"EID6ee59f25-0175-1000-0724-1d455312487c"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59f91-0175-1000-a27f-56be33446c8c","parent":{"ref":"EID6ee59f25-0175-1000-0724-1d455312487c"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59f91-0175-1000-f6f2-4bb411b8528f","parent":{"ref":"EID6ee59f25-0175-1000-0724-1d455312487c"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID820e3001-63d4-4d73-b6a5-025a3f0c5e8e"},{"ref":"EIDea1aaa82-418f-4af3-a277-d9da3197fe8c"},{"ref":"EID89779d4b-32ca-4435-af2b-2d780fd5e0df"}]},"parent":{"ref":"EID6ee59f25-0175-1000-c95a-f50990f71b5b"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:09:03Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:09:03Z","duration":109,"status":"PASSED"},{"id":"EID6ee59f92-0175-1000-b955-36c0016b9a91","testStepResults":{"TestStepResult":{"id":"EID6ee59f92-0175-1000-f457-97b35aa187a7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee59fec-0175-1000-ad49-0550b3c694b5","parent":{"ref":"EID6ee59f92-0175-1000-f457-97b35aa187a7"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59fec-0175-1000-b451-6bfacca8d547","parent":{"ref":"EID6ee59f92-0175-1000-f457-97b35aa187a7"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59fec-0175-1000-6ad1-7652fe0beb65","parent":{"ref":"EID6ee59f92-0175-1000-f457-97b35aa187a7"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee59fec-0175-1000-e33f-e702ec7f4e79","parent":{"ref":"EID6ee59f92-0175-1000-f457-97b35aa187a7"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6452cd18-5dcb-452a-acfd-3dbefdb7d481"},{"ref":"EID7868b8e3-ea5f-45c3-b3c8-1efc7a1406a3"},{"ref":"EID16f668a8-3e44-4467-8f3d-83739a00cb67"}]},"parent":{"ref":"EID6ee59f92-0175-1000-b955-36c0016b9a91"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:09:03Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:09:03Z","duration":90,"status":"PASSED"},{"id":"EID6ee59fec-0175-1000-3711-2308f172528b","testStepResults":{"TestStepResult":{"id":"EID6ee59fec-0175-1000-f411-fe3a90ff6456","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a06e-0175-1000-eefe-97d985cc9602","parent":{"ref":"EID6ee59fec-0175-1000-f411-fe3a90ff6456"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a06e-0175-1000-91bc-cb7272b0b195","parent":{"ref":"EID6ee59fec-0175-1000-f411-fe3a90ff6456"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a06e-0175-1000-8fd8-fa55040be146","parent":{"ref":"EID6ee59fec-0175-1000-f411-fe3a90ff6456"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a06e-0175-1000-370f-cc7765846b64","parent":{"ref":"EID6ee59fec-0175-1000-f411-fe3a90ff6456"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaecbf574-baa6-492c-a3ac-b184508e9ab4"},{"ref":"EID15eda749-0a9e-4802-ac96-b85c06b1f32d"},{"ref":"EID9d0041f0-05d0-4458-af9d-eea033531a27"}]},"parent":{"ref":"EID6ee59fec-0175-1000-3711-2308f172528b"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:09:03Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:09:03Z","duration":140,"status":"PASSED"},{"id":"EID6ee5a079-0175-1000-f532-8b7570724e6b","testStepResults":{"TestStepResult":[{"id":"EID6ee5a079-0175-1000-339a-f9030ca78b7a","parent":{"ref":"EID6ee5a079-0175-1000-f532-8b7570724e6b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:09:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a07a-0175-1000-5daa-8a2558eaf050","parent":{"ref":"EID6ee5a079-0175-1000-f532-8b7570724e6b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:09:03Z","duration":58,"status":"PASSED"},{"id":"EID6ee5a07a-0175-1000-2045-d2d55085076c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a141-0175-1000-8104-3a05219bcc14","parent":{"ref":"EID6ee5a07a-0175-1000-2045-d2d55085076c"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a141-0175-1000-2e84-d41e95e3a940","parent":{"ref":"EID6ee5a07a-0175-1000-2045-d2d55085076c"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a141-0175-1000-d8e1-126e121975c7","parent":{"ref":"EID6ee5a07a-0175-1000-2045-d2d55085076c"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a141-0175-1000-b40c-e0207fb05d3f","parent":{"ref":"EID6ee5a07a-0175-1000-2045-d2d55085076c"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0178c730-e2d4-4189-9032-089c1c1c5d74"},{"ref":"EIDecad24ea-05b0-4e2b-b91e-74de108ae61d"},{"ref":"EIDa8bbd212-7399-41f2-99f1-555c8534709f"}]},"parent":{"ref":"EID6ee5a079-0175-1000-f532-8b7570724e6b"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:09:03Z","duration":23,"status":"PASSED"},{"id":"EID6ee5a141-0175-1000-7d40-59b3f7eb4464","attachments":{"attachment":{"ref":"EID1b294c92-0bfc-4cf5-bd2e-f433cae95957"}},"parent":{"ref":"EID6ee5a079-0175-1000-f532-8b7570724e6b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:09:04Z","duration":2,"status":"PASSED"},{"id":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a1d9-0175-1000-6f46-b0aa5a8a50ff","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-175d-c644e4d94000","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-f3f4-526998f4b53a","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-7a77-198ab61368a5","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-4d99-0c552c91bcfd","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-d5f9-1ad641d627a7","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-9241-3257ffbaff65","parent":{"ref":"EID6ee5a14e-0175-1000-a0ba-9a10ccbf090f"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe7673d42-51e2-4e43-a975-ecad0b5c5eb2"},{"ref":"EID19fdaf91-2587-41fe-9c08-284da25d14d0"},{"ref":"EID7b11fe3b-bff1-44eb-9bcb-d0c5079011ab"}]},"parent":{"ref":"EID6ee5a079-0175-1000-f532-8b7570724e6b"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:09:04Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:09:03Z","duration":352,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-7d02-fb20619323d5","testStepResults":{"TestStepResult":[{"id":"EID6ee5a1d9-0175-1000-ef47-1370c30992fc","parent":{"ref":"EID6ee5a1d9-0175-1000-7d02-fb20619323d5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a1d9-0175-1000-f096-8789eaf9777e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a2ee-0175-1000-82e8-b27162c5d12b","parent":{"ref":"EID6ee5a1d9-0175-1000-f096-8789eaf9777e"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a2ee-0175-1000-10b8-99c713ef6302","parent":{"ref":"EID6ee5a1d9-0175-1000-f096-8789eaf9777e"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a2ee-0175-1000-3c79-c702d0cb5cec","parent":{"ref":"EID6ee5a1d9-0175-1000-f096-8789eaf9777e"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a2ee-0175-1000-367d-aabb3cdc14a6","parent":{"ref":"EID6ee5a1d9-0175-1000-f096-8789eaf9777e"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID44377dc7-fb10-49aa-81f0-428de2f033b3"},{"ref":"EID2d0f6f59-effe-43fb-99fb-b788781589d0"},{"ref":"EIDc05c0a19-19b3-4033-a4ac-568ba0d5040e"}]},"parent":{"ref":"EID6ee5a1d9-0175-1000-7d02-fb20619323d5"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:09:04Z","duration":180,"status":"PASSED"},{"id":"EID6ee5a2ee-0175-1000-56c6-4aebde1a60c3","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee5a303-0175-1000-df6e-3699370d52c4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a3f3-0175-1000-3087-28052f3f825f","parent":{"ref":"EID6ee5a303-0175-1000-df6e-3699370d52c4"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a3f3-0175-1000-6589-45600c8e9f44","parent":{"ref":"EID6ee5a303-0175-1000-df6e-3699370d52c4"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a3f3-0175-1000-b556-06a49d188802","parent":{"ref":"EID6ee5a303-0175-1000-df6e-3699370d52c4"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:09:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7674335b-fc4a-4532-8e88-b87a17e1c4f7"},{"ref":"EIDcc662bbe-5266-4b4c-90e6-119fe652c039"},{"ref":"EIDae8cb4c5-6ec3-4a0b-b66d-0019d5b6ca64"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:09:04Z","duration":151,"status":"PASSED"},{"id":"EID6ee5a3f5-0175-1000-9ee7-99d6b03c5cab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a4ba-0175-1000-7901-7d78821bb33f","parent":{"ref":"EID6ee5a3f5-0175-1000-9ee7-99d6b03c5cab"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a4ba-0175-1000-1366-a415e69b56ea","parent":{"ref":"EID6ee5a3f5-0175-1000-9ee7-99d6b03c5cab"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a4ba-0175-1000-89c2-2b8360d04b0a","parent":{"ref":"EID6ee5a3f5-0175-1000-9ee7-99d6b03c5cab"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd9eb398a-8080-44fc-a3b3-05f426ce385e"},{"ref":"EID074a34d7-6b93-411a-9537-5c41887b160a"},{"ref":"EID6487315d-6554-4e48-87ec-b99bef763280"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:09:04Z","duration":43,"status":"PASSED"},{"id":"EID6ee5a4c3-0175-1000-051f-4f6ad724b15a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a5d4-0175-1000-14ac-a6511c1686ef","parent":{"ref":"EID6ee5a4c3-0175-1000-051f-4f6ad724b15a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a5d4-0175-1000-0858-0e5b2c66a62e","parent":{"ref":"EID6ee5a4c3-0175-1000-051f-4f6ad724b15a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a5d4-0175-1000-5255-b46a6b5fc12d","parent":{"ref":"EID6ee5a4c3-0175-1000-051f-4f6ad724b15a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd55551c-8050-44be-8c2f-ec0f9cf1a79b"},{"ref":"EID8d0ab210-91e5-43c7-a9ae-860d5a472f34"},{"ref":"EIDe72172d1-9777-4f71-ac5b-a89b85bac1df"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:09:05Z","duration":153,"status":"PASSED"}]},"parent":{"ref":"EID6ee5a1d9-0175-1000-7d02-fb20619323d5"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:09:04Z","duration":742,"status":"PASSED"},{"id":"EID6ee5a5d5-0175-1000-097a-6b5da52599a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a673-0175-1000-eeba-1792a56a37ee","parent":{"ref":"EID6ee5a5d5-0175-1000-097a-6b5da52599a8"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a673-0175-1000-b82a-87e5df744c93","parent":{"ref":"EID6ee5a5d5-0175-1000-097a-6b5da52599a8"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a673-0175-1000-a6a6-57c44ca0f6db","parent":{"ref":"EID6ee5a5d5-0175-1000-097a-6b5da52599a8"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a673-0175-1000-1f5d-f924928e54d4","parent":{"ref":"EID6ee5a5d5-0175-1000-097a-6b5da52599a8"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf7144cd0-e6fc-45eb-8e73-77466d479a8e"},{"ref":"EID1ca1805c-2758-4377-af31-6e219137314f"},{"ref":"EID4cc8f33e-d159-4513-bb82-bbb5964641d6"}]},"parent":{"ref":"EID6ee5a1d9-0175-1000-7d02-fb20619323d5"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:09:05Z","duration":27,"status":"PASSED"}]},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:09:04Z","duration":1178,"status":"PASSED"},{"id":"EID6ee5a673-0175-1000-ecc5-d1af995686d9","testStepResults":{"TestStepResult":{"id":"EID6ee5a673-0175-1000-72df-882f75b30b8c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a70b-0175-1000-562d-4d37e3c14912","parent":{"ref":"EID6ee5a673-0175-1000-72df-882f75b30b8c"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a70b-0175-1000-178d-683edd8759a7","parent":{"ref":"EID6ee5a673-0175-1000-72df-882f75b30b8c"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a70b-0175-1000-0e65-9a6a76d574b9","parent":{"ref":"EID6ee5a673-0175-1000-72df-882f75b30b8c"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a70b-0175-1000-af47-0ada4621632c","parent":{"ref":"EID6ee5a673-0175-1000-72df-882f75b30b8c"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID88ceea2b-6367-4bd9-a1db-bb404ac4cf9a"},{"ref":"EIDbb6eded4-0b0a-4959-9a2c-f5be9d6059a1"},{"ref":"EIDd6c9034d-27aa-4e30-ae34-1062f87f21b2"}]},"parent":{"ref":"EID6ee5a673-0175-1000-ecc5-d1af995686d9"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:09:05Z","duration":72,"status":"PASSED"}},"parent":{"ref":"EID6ee59a7a-0175-1000-5c22-290a88f34318"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:09:05Z","duration":152,"status":"PASSED"}]},"parent":{"ref":"EIDdf2862be-c330-4f41-8a44-afbb4336a4d5"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:09:02Z","duration":3217,"status":"PASSED"},{"id":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f","testCaseResults":{"TestCaseResult":[{"id":"EID6ee5a70c-0175-1000-57a1-923550d313d6","testStepResults":{"TestStepResult":[{"id":"EID6ee5a70c-0175-1000-4155-fbd61876474a","parent":{"ref":"EID6ee5a70c-0175-1000-57a1-923550d313d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:09:05Z","duration":321,"status":"PASSED"},{"id":"EID6ee5a70c-0175-1000-ef86-85d2be3860e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a7a6-0175-1000-fda5-e744a2a4e828","parent":{"ref":"EID6ee5a70c-0175-1000-ef86-85d2be3860e4"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a7a6-0175-1000-e3f6-ad723007542d","parent":{"ref":"EID6ee5a70c-0175-1000-ef86-85d2be3860e4"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a7a6-0175-1000-5895-818e20ef8181","parent":{"ref":"EID6ee5a70c-0175-1000-ef86-85d2be3860e4"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:09:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID487b13bf-b3dc-4142-98b8-eb3952b65624"},{"ref":"EID61ad2174-75e0-44b3-b93a-c3bc8a1ac8ff"},{"ref":"EIDe6553a83-ea7b-4e10-b731-d3d275d9224b"}]},"parent":{"ref":"EID6ee5a70c-0175-1000-57a1-923550d313d6"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:09:05Z","duration":24,"status":"PASSED"},{"id":"EID6ee5a7a6-0175-1000-b365-36276f6d3476","attachments":{"attachment":{"ref":"EID64bb2f59-7dc4-4fca-b9e6-5e1065dbdfb1"}},"parent":{"ref":"EID6ee5a70c-0175-1000-57a1-923550d313d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:09:05Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:09:05Z","duration":169,"status":"PASSED"},{"id":"EID6ee5a7b5-0175-1000-a8c2-a62fa4bb4f8c","testStepResults":{"TestStepResult":[{"id":"EID6ee5a7b5-0175-1000-97bd-85c6a5a55f07","parent":{"ref":"EID6ee5a7b5-0175-1000-a8c2-a62fa4bb4f8c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:09:05Z","duration":321,"status":"PASSED"},{"id":"EID6ee5a7b5-0175-1000-e7a9-e52d838dd604","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a87f-0175-1000-cb68-60894a2ba67b","parent":{"ref":"EID6ee5a7b5-0175-1000-e7a9-e52d838dd604"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a87f-0175-1000-a1bb-5b5aa0ea0d1a","parent":{"ref":"EID6ee5a7b5-0175-1000-e7a9-e52d838dd604"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a87f-0175-1000-bbcb-44e97db54ad8","parent":{"ref":"EID6ee5a7b5-0175-1000-e7a9-e52d838dd604"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a87f-0175-1000-6bae-4ad78f9ee9ad","parent":{"ref":"EID6ee5a7b5-0175-1000-e7a9-e52d838dd604"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd221df3e-0447-4c51-b77a-3b9d781c35f8"},{"ref":"EID7c47840d-6874-4eba-9020-fe678f1d990f"},{"ref":"EIDfbc1e940-f184-45fd-942f-aeeb4d39562f"}]},"parent":{"ref":"EID6ee5a7b5-0175-1000-a8c2-a62fa4bb4f8c"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:09:05Z","duration":100,"status":"PASSED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:09:05Z","duration":203,"status":"PASSED"},{"id":"EID6ee5a880-0175-1000-6e07-21ce6838dedf","testStepResults":{"TestStepResult":[{"id":"EID6ee5a880-0175-1000-4557-37da8179b4b7","parent":{"ref":"EID6ee5a880-0175-1000-6e07-21ce6838dedf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:09:06Z","duration":321,"status":"PASSED"},{"id":"EID6ee5a880-0175-1000-ff69-caeddbfeaea4","parent":{"ref":"EID6ee5a880-0175-1000-6e07-21ce6838dedf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a880-0175-1000-ac3c-8db15481e60a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5a994-0175-1000-c457-cf70ad387b60","parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a994-0175-1000-3962-1004ed0b763d","parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a994-0175-1000-3caa-96d3a638a085","parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a994-0175-1000-ae83-9c627f47dbe0","parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a994-0175-1000-2dd8-e80fe14df612","parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a994-0175-1000-437b-fff5f0cd27f6","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"FAILED"},{"id":"EID6ee5a994-0175-1000-5ffe-3efa4bcb0428","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee5a880-0175-1000-ac3c-8db15481e60a"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID2ff44821-ea5c-4c9b-bc0f-fe7d30fa0c26"},{"ref":"EID516cd683-bb04-440b-a24d-aec1a3cea175"},{"ref":"EIDe1fb5ac5-0def-4aed-8088-4e8e7d0af67a"}]},"parent":{"ref":"EID6ee5a880-0175-1000-6e07-21ce6838dedf"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:09:06Z","duration":101,"status":"FAILED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:09:06Z","duration":277,"status":"FAILED"},{"id":"EID6ee5a99f-0175-1000-cd1c-e598460df5a4","testStepResults":{"TestStepResult":[{"id":"EID6ee5a9a0-0175-1000-0d37-93ecaf145bdd","parent":{"ref":"EID6ee5a99f-0175-1000-cd1c-e598460df5a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:09:06Z","duration":321,"status":"PASSED"},{"id":"EID6ee5a9a0-0175-1000-3789-200b48342125","parent":{"ref":"EID6ee5a99f-0175-1000-cd1c-e598460df5a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5aa63-0175-1000-8772-d483907b7a00","parent":{"ref":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5aa63-0175-1000-8a35-b56d1b6652fd","parent":{"ref":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5aa63-0175-1000-abb3-4968be48e47d","parent":{"ref":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5aa63-0175-1000-3938-b57cac9dba52","parent":{"ref":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5aa63-0175-1000-63ca-5d5b500d9e54","parent":{"ref":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee5aa63-0175-1000-5711-899ba2b07182","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee5a9a0-0175-1000-4112-79a56dfb2950"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:09:06Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa8bd1eaa-e32d-45d9-87bf-6880d003a0e3"},{"ref":"EID130911ce-dc80-424c-820c-5ba7afbeb514"},{"ref":"EID3c257ba7-a1c8-4e6e-b8ac-b69f79b277a2"}]},"parent":{"ref":"EID6ee5a99f-0175-1000-cd1c-e598460df5a4"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:09:06Z","duration":76,"status":"FAILED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:09:06Z","duration":196,"status":"FAILED"},{"id":"EID6ee5aa63-0175-1000-2c2f-ea75dbcd9aa8","testStepResults":{"TestStepResult":[{"id":"EID6ee5aa63-0175-1000-c9d7-420c84a7fa98","parent":{"ref":"EID6ee5aa63-0175-1000-2c2f-ea75dbcd9aa8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:09:06Z","duration":321,"status":"PASSED"},{"id":"EID6ee5aa63-0175-1000-cf41-99d6e61b2933","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDa6c58506-0360-441c-81da-d0a2c0d6a320"},{"ref":"EID9900d55f-f98c-4304-8e28-b41f7a65d569"},{"ref":"EID82e0caf7-61a8-49c4-9b83-ee97c2888e8e"},{"ref":"EIDaccffea3-cccf-49a4-a082-86e50404b83a"},{"ref":"EID91bc0638-4f90-4935-8a80-ee00837c9149"},{"ref":"EIDb827bc5d-6cd6-4ee6-ae22-90d4befc2387"},{"ref":"EIDffca4146-7299-467d-889e-c23998d4453f"},{"ref":"EID22e6bb33-3bfd-48c8-8f97-d9b08044bcfd"},{"ref":"EID55b6c738-2ffb-444b-9f6c-a3f5190cf047"},{"ref":"EID88ea5e2a-aa3c-4f8f-8b6a-3e264d13355d"},{"ref":"EIDfdae867d-4adb-46ab-ac3a-650f1ea6910b"},{"ref":"EID6880dc17-b254-4fa8-8de6-d4e94e795d0c"},{"ref":"EID44c233f9-201e-40e8-bcbb-3ab47b449d91"},{"ref":"EIDd3d63950-3b6b-45c4-a878-d95dd8deed1d"},{"ref":"EIDce1de1af-6cbe-433f-b676-737f1b4c3408"}]},"parent":{"ref":"EID6ee5aa63-0175-1000-2c2f-ea75dbcd9aa8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:09:06Z","duration":699,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:09:06Z","duration":1027,"status":"SKIPPED"},{"id":"EID6ee5ae66-0175-1000-3210-d8a824c7e3ce","testStepResults":{"TestStepResult":[{"id":"EID6ee5ae66-0175-1000-fd3b-eb5e74c95cc1","parent":{"ref":"EID6ee5ae66-0175-1000-3210-d8a824c7e3ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:09:07Z","duration":321,"status":"PASSED"},{"id":"EID6ee5ae66-0175-1000-b3a7-0845bf3a551f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5af08-0175-1000-3f55-75b388b9e4e2","parent":{"ref":"EID6ee5ae66-0175-1000-b3a7-0845bf3a551f"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5af08-0175-1000-8e11-b6622d7f631a","parent":{"ref":"EID6ee5ae66-0175-1000-b3a7-0845bf3a551f"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5af08-0175-1000-15ff-a28eaf424eda","parent":{"ref":"EID6ee5ae66-0175-1000-b3a7-0845bf3a551f"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5af08-0175-1000-75bf-d2fc68fe3af8","parent":{"ref":"EID6ee5ae66-0175-1000-b3a7-0845bf3a551f"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ef7bdf5-de9d-4956-abb6-4a916843a110"},{"ref":"EIDf778dcbd-5bea-4f9b-8fd0-6a74795a0f0b"},{"ref":"EID757546ff-144e-4699-b7bf-9ee8621453a3"}]},"parent":{"ref":"EID6ee5ae66-0175-1000-3210-d8a824c7e3ce"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:09:07Z","duration":80,"status":"PASSED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:09:07Z","duration":163,"status":"PASSED"},{"id":"EID6ee5af09-0175-1000-f8c0-6b33d2efe1dc","testStepResults":{"TestStepResult":[{"id":"EID6ee5af09-0175-1000-8742-d2bff5747bf0","parent":{"ref":"EID6ee5af09-0175-1000-f8c0-6b33d2efe1dc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:09:07Z","duration":321,"status":"PASSED"},{"id":"EID6ee5af09-0175-1000-e34c-d93ccc308a77","parent":{"ref":"EID6ee5af09-0175-1000-f8c0-6b33d2efe1dc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5af09-0175-1000-49b5-2767aaf151ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5afc0-0175-1000-c7c4-4f9c0fda8950","parent":{"ref":"EID6ee5af09-0175-1000-49b5-2767aaf151ca"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5afc0-0175-1000-0b65-5a5cabcf24b2","parent":{"ref":"EID6ee5af09-0175-1000-49b5-2767aaf151ca"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5afc0-0175-1000-8d68-dfdf52f3d911","parent":{"ref":"EID6ee5af09-0175-1000-49b5-2767aaf151ca"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5afc0-0175-1000-5845-ada426f7f24e","parent":{"ref":"EID6ee5af09-0175-1000-49b5-2767aaf151ca"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID77ca5119-9d02-419e-9816-082b738f9ff7"},{"ref":"EID1e29eacf-28a9-43f3-a187-e8fabb2a90c2"},{"ref":"EID3a235de5-cbb5-40a8-98a8-072067c4b615"}]},"parent":{"ref":"EID6ee5af09-0175-1000-f8c0-6b33d2efe1dc"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:09:07Z","duration":74,"status":"PASSED"},{"id":"EID6ee5afc0-0175-1000-a631-2fb45bb57fa1","attachments":{"attachment":{"ref":"EIDf897f02e-baeb-4b31-80fd-ec9f94757d8d"}},"parent":{"ref":"EID6ee5af09-0175-1000-f8c0-6b33d2efe1dc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:09:07Z","duration":15,"status":"PASSED"},{"id":"EID6ee5afda-0175-1000-e73a-66f836eda412","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5afe1-0175-1000-f054-b2b03ed63e95","parent":{"ref":"EID6ee5afda-0175-1000-e73a-66f836eda412"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5afe1-0175-1000-105f-2931abd0f6d2","parent":{"ref":"EID6ee5afda-0175-1000-e73a-66f836eda412"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee5afe1-0175-1000-c3bb-3c4b68eb56e5","parent":{"ref":"EID6ee5afda-0175-1000-e73a-66f836eda412"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf24b61ce-1cc9-4819-ab38-ce1046ee6e42"},{"ref":"EID5b3056b9-8265-4655-862b-20de2e34ce44"}]},"parent":{"ref":"EID6ee5af09-0175-1000-f8c0-6b33d2efe1dc"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:09:07Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee5a70b-0175-1000-e3c0-fc4af33fa47f"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:09:07Z","duration":216,"status":"PASSED"}]},"parent":{"ref":"EIDdf2862be-c330-4f41-8a44-afbb4336a4d5"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:09:05Z","duration":2262,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID2d8fe776-bb56-4c77-bf28-b67f75457d8a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID2d8fe776-bb56-4c77-bf28-b67f75457d8a"}},{"type":"Message","id":"EID932be0e3-bca4-4a99-85b3-dc12aa049994","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID932be0e3-bca4-4a99-85b3-dc12aa049994"}},{"type":"ServiceResponse","id":"EIDd4400388-9763-4af9-bdb1-84fcc45c95f4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDd4400388-9763-4af9-bdb1-84fcc45c95f4"}},{"type":"Message","id":"EID9f4f909b-9208-4891-8fd2-579867b921de","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID9f4f909b-9208-4891-8fd2-579867b921de"}},{"type":"Message","id":"EID9900d55f-f98c-4304-8e28-b41f7a65d569","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID9900d55f-f98c-4304-8e28-b41f7a65d569"}},{"type":"ServiceResponse","id":"EID2d0f6f59-effe-43fb-99fb-b788781589d0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID2d0f6f59-effe-43fb-99fb-b788781589d0"}},{"type":"Message","id":"EIDccaa1d18-b0b2-4171-81d9-f74c242ec907","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDccaa1d18-b0b2-4171-81d9-f74c242ec907"}},{"type":"GetParameter","id":"EIDbe40f545-6afc-45a1-bc9e-21dd3c298938","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EIDd93c87ff-e1fe-44f7-b198-69f425892bdc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID55b6c738-2ffb-444b-9f6c-a3f5190cf047","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID55b6c738-2ffb-444b-9f6c-a3f5190cf047"}},{"type":"ServiceResponse","id":"EID96037cdc-8778-4511-8302-8f8e8be6ba78","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID96037cdc-8778-4511-8302-8f8e8be6ba78"}},{"type":"Message","id":"EID3d247c0a-f604-4211-b083-a9ee2f01537f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID3d247c0a-f604-4211-b083-a9ee2f01537f"}},{"type":"ServiceResponse","id":"EIDd405adc1-87a8-4f53-a640-839552b8827c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDd405adc1-87a8-4f53-a640-839552b8827c"}},{"type":"ServiceEndpoint","id":"EID6f78cc8c-cfb1-4b2b-b879-61f79e1e849a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDffca4146-7299-467d-889e-c23998d4453f","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDffca4146-7299-467d-889e-c23998d4453f"}},{"type":"Message","id":"EID1b294c92-0bfc-4cf5-bd2e-f433cae95957","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID1b294c92-0bfc-4cf5-bd2e-f433cae95957"}},{"type":"ServiceResponse","id":"EID408c6493-fce9-4b39-a2bb-aed039794418","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID408c6493-fce9-4b39-a2bb-aed039794418"}},{"type":"ServiceEndpoint","id":"EIDdd8a5d8f-545b-4479-8492-263373f6d9d8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9kb3dubG9hZHMvUERfTkxfTEFVLmdwa2cuemlw"},{"type":"Message","id":"EID76253387-af30-4198-a0c3-96e7e06266a0","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID76253387-af30-4198-a0c3-96e7e06266a0"}},{"type":"ServiceEndpoint","id":"EIDfcd10e8f-f52a-467d-9298-5094fecc910d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID160cf029-8aba-4391-b248-70fbb9f6359f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID160cf029-8aba-4391-b248-70fbb9f6359f"}},{"type":"GetParameter","id":"EID9e85ea14-63bf-4940-ae70-21c240152394","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID3131572a-422f-492e-8d8a-3f40a297ff2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID3131572a-422f-492e-8d8a-3f40a297ff2f"}},{"type":"ServiceResponse","id":"EID295656fb-b7cc-47f3-ab02-e55425ce6870","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID295656fb-b7cc-47f3-ab02-e55425ce6870"}},{"type":"ServiceEndpoint","id":"EID487b13bf-b3dc-4142-98b8-eb3952b65624","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID9b763f8d-f5ac-409d-b411-9d3c4512be51","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDaecbf574-baa6-492c-a3ac-b184508e9ab4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID8d0ab210-91e5-43c7-a9ae-860d5a472f34","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID8d0ab210-91e5-43c7-a9ae-860d5a472f34"}},{"type":"GetParameter","id":"EID5b3056b9-8265-4655-862b-20de2e34ce44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID3c257ba7-a1c8-4e6e-b8ac-b69f79b277a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID22e6bb33-3bfd-48c8-8f97-d9b08044bcfd","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID22e6bb33-3bfd-48c8-8f97-d9b08044bcfd"}},{"type":"LogFile","id":"EID61bd3129-cbbe-4925-9d05-c1300fb90918","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID61bd3129-cbbe-4925-9d05-c1300fb90918"}},{"type":"ServiceResponse","id":"EIDa7fff2e2-eed1-4689-b704-ac1538f2967d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDa7fff2e2-eed1-4689-b704-ac1538f2967d"}},{"type":"ServiceResponse","id":"EID1eb5e248-daf4-4286-bfa3-d5ef2500e3d0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID1eb5e248-daf4-4286-bfa3-d5ef2500e3d0"}},{"type":"GetParameter","id":"EIDf28df8a8-60ef-475b-b43f-f174499a7a51","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDb827bc5d-6cd6-4ee6-ae22-90d4befc2387","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDb827bc5d-6cd6-4ee6-ae22-90d4befc2387"}},{"type":"GetParameter","id":"EIDab8c7ee9-e643-4ea6-a294-6cfe06fd9187","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID19fdaf91-2587-41fe-9c08-284da25d14d0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID19fdaf91-2587-41fe-9c08-284da25d14d0"}},{"type":"GetParameter","id":"EID24dee4b0-d75b-4159-a6f7-209823de2389","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa17d9895-5c7a-4373-b1e4-453d2334e1f0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDa17d9895-5c7a-4373-b1e4-453d2334e1f0"}},{"type":"ServiceEndpoint","id":"EIDb89a3468-b6be-4110-979e-bfa091c94b3f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDae8cb4c5-6ec3-4a0b-b66d-0019d5b6ca64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID3a14fdf5-0e68-4475-9483-83c3164ae09d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7868b8e3-ea5f-45c3-b3c8-1efc7a1406a3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID7868b8e3-ea5f-45c3-b3c8-1efc7a1406a3"}},{"type":"ServiceResponse","id":"EID516cd683-bb04-440b-a24d-aec1a3cea175","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID516cd683-bb04-440b-a24d-aec1a3cea175"}},{"type":"ServiceResponse","id":"EIDc76f3bca-49ba-4951-8352-c140913d499f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDc76f3bca-49ba-4951-8352-c140913d499f"}},{"type":"Message","id":"EID912f5bc4-7550-4706-9db3-7e45c882178d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID912f5bc4-7550-4706-9db3-7e45c882178d"}},{"type":"GetParameter","id":"EID4381c627-00d3-4117-b3b5-9cc0af485d1d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9kb3dubG9hZHMvUERfTkxfTEFVLmdwa2cuemlw"},{"type":"GetParameter","id":"EIDada60e53-8a6a-4266-8ebc-202288f05f8a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID8b127f60-c04b-4fd6-a934-60b233bc5793","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDef08d14c-a9cc-4e41-8f60-86616e02ae7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDef08d14c-a9cc-4e41-8f60-86616e02ae7f"}},{"type":"GetParameter","id":"EID3f571441-8388-49d5-ba20-3e7feee5d3c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5433accc-4a94-43fb-8dcd-31ad5091ee13","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID64bb2f59-7dc4-4fca-b9e6-5e1065dbdfb1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID64bb2f59-7dc4-4fca-b9e6-5e1065dbdfb1"}},{"type":"Message","id":"EIDce1de1af-6cbe-433f-b676-737f1b4c3408","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDce1de1af-6cbe-433f-b676-737f1b4c3408"}},{"type":"ServiceResponse","id":"EID49ecaa0e-9a9c-42f9-914c-043b7b56df30","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID49ecaa0e-9a9c-42f9-914c-043b7b56df30"}},{"type":"GetParameter","id":"EID8960c968-db2a-426f-a352-4fb72304325b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDeda7b912-1628-48ab-9d58-22f3eebbb536","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDeda7b912-1628-48ab-9d58-22f3eebbb536"}},{"type":"ServiceEndpoint","id":"EIDccdee3c5-69f0-48ce-bab8-1543b99159ee","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID78f8b71e-3701-4c36-a5c0-4019c0726acf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDca545e67-ce34-452b-81ad-e547b0318a64","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd6c9034d-27aa-4e30-ae34-1062f87f21b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EIDe67cf46f-0c81-4780-8166-b769ebbd78dc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID020a6fab-c72b-4dec-9c84-a2e2178c437e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID020a6fab-c72b-4dec-9c84-a2e2178c437e"}},{"type":"ServiceEndpoint","id":"EID0178c730-e2d4-4189-9032-089c1c1c5d74","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID757546ff-144e-4699-b7bf-9ee8621453a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID47a372f0-871b-4d2b-8d2f-9fcf79ad2cf5","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID47a372f0-871b-4d2b-8d2f-9fcf79ad2cf5"}},{"type":"Message","id":"EIDfdae867d-4adb-46ab-ac3a-650f1ea6910b","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDfdae867d-4adb-46ab-ac3a-650f1ea6910b"}},{"type":"GetParameter","id":"EID7b11fe3b-bff1-44eb-9bcb-d0c5079011ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID5a1df360-23c9-4207-8a44-25d315087ae0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDc683bb77-8e3e-44b7-9020-92bc8a6d8114","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID89779d4b-32ca-4435-af2b-2d780fd5e0df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID3f630d75-2cfd-4756-abc0-e38ac6c4ff48","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID3f630d75-2cfd-4756-abc0-e38ac6c4ff48"}},{"type":"Message","id":"EID41c0efb9-5b25-4862-bb68-ee5c2647f3f4","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID41c0efb9-5b25-4862-bb68-ee5c2647f3f4"}},{"type":"ServiceEndpoint","id":"EIDa8bd1eaa-e32d-45d9-87bf-6880d003a0e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDfbd13ecf-fda3-42c0-bd32-9939da4a40ea","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDfbd13ecf-fda3-42c0-bd32-9939da4a40ea"}},{"type":"Message","id":"EID375313ba-4e48-4d34-b89f-6d801cd110f2","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID375313ba-4e48-4d34-b89f-6d801cd110f2"}},{"type":"ServiceEndpoint","id":"EID32a56398-e32b-4e3a-a51e-86e7efe9c357","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDdbaff071-075a-47ee-9119-18a79d9021aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID5bb5e5dc-eef3-4908-82bf-21b162df4496","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDaccffea3-cccf-49a4-a082-86e50404b83a","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDaccffea3-cccf-49a4-a082-86e50404b83a"}},{"type":"ServiceResponse","id":"EIDb87fdeca-f1f5-4435-9f1d-4065982aca2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDb87fdeca-f1f5-4435-9f1d-4065982aca2f"}},{"type":"ServiceResponse","id":"EID03593c81-ec05-4642-9fde-9c31d1ce8743","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID03593c81-ec05-4642-9fde-9c31d1ce8743"}},{"type":"ServiceEndpoint","id":"EID7674335b-fc4a-4532-8e88-b87a17e1c4f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDd8c464cb-dd12-46f1-9b67-c06c0fea51fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDf38bbca1-c4f6-4b27-af5b-21aa9d96b0e6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDf38bbca1-c4f6-4b27-af5b-21aa9d96b0e6"}},{"type":"GetParameter","id":"EID0e292f11-426a-4f12-860a-34b82d750324","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EIDdbcdbc28-4b31-438a-9071-939ccf6c1be3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDf83f9102-8e4c-4574-86d1-2ec77702f3d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID16f668a8-3e44-4467-8f3d-83739a00cb67","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID91bc0638-4f90-4935-8a80-ee00837c9149","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID91bc0638-4f90-4935-8a80-ee00837c9149"}},{"type":"ServiceResponse","id":"EID868ddc86-5150-437e-8b18-26011cd563bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID868ddc86-5150-437e-8b18-26011cd563bc"}},{"type":"GetParameter","id":"EID8561e502-d72b-4d40-b008-a31c039906de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDecad24ea-05b0-4e2b-b91e-74de108ae61d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDecad24ea-05b0-4e2b-b91e-74de108ae61d"}},{"type":"Message","id":"EIDe0ecf34b-cacf-4e18-9592-5c6d287138f8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDe0ecf34b-cacf-4e18-9592-5c6d287138f8"}},{"type":"Message","id":"EIDdd59d3ba-752c-4e92-8549-b742313d9726","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDdd59d3ba-752c-4e92-8549-b742313d9726"}},{"type":"ServiceEndpoint","id":"EIDd9eb398a-8080-44fc-a3b3-05f426ce385e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDf4f7575c-4368-493a-8f71-94e094ce384f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDf4f7575c-4368-493a-8f71-94e094ce384f"}},{"type":"ServiceEndpoint","id":"EIDdcd90594-b843-4860-8c4f-a728629d6abb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDe5232486-9341-42ea-bdd1-367e206896d4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDe5232486-9341-42ea-bdd1-367e206896d4"}},{"type":"ServiceResponse","id":"EID7c47840d-6874-4eba-9020-fe678f1d990f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID7c47840d-6874-4eba-9020-fe678f1d990f"}},{"type":"ServiceResponse","id":"EIDfaaada6f-22fc-4c4c-89df-977de1235677","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDfaaada6f-22fc-4c4c-89df-977de1235677"}},{"type":"GetParameter","id":"EIDe6553a83-ea7b-4e10-b731-d3d275d9224b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDf483baa9-47cf-4ac3-b3bd-7c8672b5786d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1e29eacf-28a9-43f3-a187-e8fabb2a90c2","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID1e29eacf-28a9-43f3-a187-e8fabb2a90c2"}},{"type":"Message","id":"EID88185882-2e5d-4aca-891c-19128b2e8fb9","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID88185882-2e5d-4aca-891c-19128b2e8fb9"}},{"type":"ServiceResponse","id":"EIDe2f4ba7a-15d0-465c-8fd4-9c9eb04a3303","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDe2f4ba7a-15d0-465c-8fd4-9c9eb04a3303"}},{"type":"GetParameter","id":"EID183038c7-d7cd-4135-a372-1aaeb51e2eea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID12654c42-7d89-44b8-ae07-cfd2e212fe62","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDe02bdd46-4328-4abb-aace-a750ffdd403b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDe02bdd46-4328-4abb-aace-a750ffdd403b"}},{"type":"ServiceResponse","id":"EID61ad2174-75e0-44b3-b93a-c3bc8a1ac8ff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID61ad2174-75e0-44b3-b93a-c3bc8a1ac8ff"}},{"type":"GetParameter","id":"EIDe72172d1-9777-4f71-ac5b-a89b85bac1df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID01af7b1e-56f1-4a0c-bd08-4b0a59a34917","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDebf89b6c-ca14-4edb-9c68-e23e31ed7fd4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDebf89b6c-ca14-4edb-9c68-e23e31ed7fd4"}},{"type":"ServiceResponse","id":"EIDea1aaa82-418f-4af3-a277-d9da3197fe8c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDea1aaa82-418f-4af3-a277-d9da3197fe8c"}},{"type":"GetParameter","id":"EID4eca08fe-4c3a-4d1d-951d-7a13058ba042","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7a330475-f852-4e40-8107-944bf7a85e72","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID7a330475-f852-4e40-8107-944bf7a85e72"}},{"type":"GetParameter","id":"EID4e199405-0ade-4ce4-b70c-c8e30496657b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID8207a9c0-bc0a-4bf2-a16d-3f87bb9d0606","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID57e8ad22-cd81-453b-80d1-79c67ddf632c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EIDbb6eded4-0b0a-4959-9a2c-f5be9d6059a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDbb6eded4-0b0a-4959-9a2c-f5be9d6059a1"}},{"type":"GetParameter","id":"EID549a8bb3-3275-450f-937b-7f8c2ffbbda6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID6269d44b-85ee-434e-87a2-d1faf9013177","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceEndpoint","id":"EID1b1f9ed5-661b-4cbe-b4aa-f858deb498b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDbfa86af3-feaa-4299-9627-c4fd8e553b2b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDbfa86af3-feaa-4299-9627-c4fd8e553b2b"}},{"type":"GetParameter","id":"EIDfbc1e940-f184-45fd-942f-aeeb4d39562f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDff4d20d0-f752-4e69-ab71-f7cc85e057a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDff4d20d0-f752-4e69-ab71-f7cc85e057a7"}},{"type":"ServiceResponse","id":"EID074a34d7-6b93-411a-9537-5c41887b160a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID074a34d7-6b93-411a-9537-5c41887b160a"}},{"type":"ServiceResponse","id":"EIDf778dcbd-5bea-4f9b-8fd0-6a74795a0f0b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDf778dcbd-5bea-4f9b-8fd0-6a74795a0f0b"}},{"type":"ServiceEndpoint","id":"EID6452cd18-5dcb-452a-acfd-3dbefdb7d481","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID70a3dbd5-2a16-4480-8479-1fc43875d134","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID70a3dbd5-2a16-4480-8479-1fc43875d134"}},{"type":"Message","id":"EIDfeaa0973-13ba-4509-b8e9-2176f1a1405e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDfeaa0973-13ba-4509-b8e9-2176f1a1405e"}},{"type":"ServiceEndpoint","id":"EID262a09be-d121-4d31-9c42-e05d6ef14afb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"Message","id":"EID0ed602e1-b46d-4401-a4b4-03d19823a5b8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID0ed602e1-b46d-4401-a4b4-03d19823a5b8"}},{"type":"ServiceResponse","id":"EID0f686fd6-f402-499f-b849-d0eda5fc3294","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID0f686fd6-f402-499f-b849-d0eda5fc3294"}},{"type":"ServiceResponse","id":"EID1ebd595c-4291-4b98-a483-6d75ac8f4b96","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID1ebd595c-4291-4b98-a483-6d75ac8f4b96"}},{"type":"ServiceEndpoint","id":"EIDdd55551c-8050-44be-8c2f-ec0f9cf1a79b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID648641bd-f7ab-4d38-98fc-dc35117a002a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID648641bd-f7ab-4d38-98fc-dc35117a002a"}},{"type":"GetParameter","id":"EID82257fd0-8cde-4306-aeb6-e87b34a2d8e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID066e67f1-0635-45e6-806f-a777b082baf7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID88ceea2b-6367-4bd9-a1db-bb404ac4cf9a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID1ca1805c-2758-4377-af31-6e219137314f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID1ca1805c-2758-4377-af31-6e219137314f"}},{"type":"ServiceEndpoint","id":"EIDd221df3e-0447-4c51-b77a-3b9d781c35f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID121f4d47-0cdc-4d3c-b345-e09423a05afc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID121f4d47-0cdc-4d3c-b345-e09423a05afc"}},{"type":"GetParameter","id":"EID3cbe15e5-b4b6-49a6-8b97-a786082b8706","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID2ff44821-ea5c-4c9b-bc0f-fe7d30fa0c26","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID618436e6-2acc-49d3-b76f-ca5ec5bb6489","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID45d07b8d-1a73-4b1b-ab7f-34c3efa851fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDd3d63950-3b6b-45c4-a878-d95dd8deed1d","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDd3d63950-3b6b-45c4-a878-d95dd8deed1d"}},{"type":"ServiceEndpoint","id":"EIDe340c63e-6ca9-49aa-a26f-bb153614da86","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDf0482305-5f80-4b17-87b3-0965e92c862a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID453f577f-7821-40b7-a5f4-171df3136b3b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd9e81e48-59be-4dda-b803-33049ceec391","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa6c58506-0360-441c-81da-d0a2c0d6a320","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDa6c58506-0360-441c-81da-d0a2c0d6a320"}},{"type":"GetParameter","id":"EID6487315d-6554-4e48-87ec-b99bef763280","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID3a235de5-cbb5-40a8-98a8-072067c4b615","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID66f998e0-71d4-416a-8933-238caedefa29","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID66f998e0-71d4-416a-8933-238caedefa29"}},{"type":"GetParameter","id":"EIDc05c0a19-19b3-4033-a4ac-568ba0d5040e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDa45c5542-663c-43a6-ab04-dcd44898def1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDa45c5542-663c-43a6-ab04-dcd44898def1"}},{"type":"GetParameter","id":"EIDddcc5f00-ffdd-4357-b188-cff00b305f16","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0745834f-f6cc-4e75-a817-910c4635ef85","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID6880dc17-b254-4fa8-8de6-d4e94e795d0c","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID6880dc17-b254-4fa8-8de6-d4e94e795d0c"}},{"type":"ServiceEndpoint","id":"EID27afa3c2-64ab-4961-962d-030020c3896a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID3be7cc62-57d4-4a37-b3d8-f145671abf18","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID3be7cc62-57d4-4a37-b3d8-f145671abf18"}},{"type":"ServiceResponse","id":"EIDcc662bbe-5266-4b4c-90e6-119fe652c039","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDcc662bbe-5266-4b4c-90e6-119fe652c039"}},{"type":"Message","id":"EID2382f77f-0d3f-4de4-94f5-75160b0edac2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID2382f77f-0d3f-4de4-94f5-75160b0edac2"}},{"type":"ServiceResponse","id":"EIDa979ed47-332b-4c9a-add7-976163bcd126","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDa979ed47-332b-4c9a-add7-976163bcd126"}},{"type":"ServiceEndpoint","id":"EID11126179-2a6a-493d-b188-dd49c2471b6a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EIDe11b05dd-79ec-40d9-b007-bbb870e1073a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDe11b05dd-79ec-40d9-b007-bbb870e1073a"}},{"type":"ServiceResponse","id":"EID130911ce-dc80-424c-820c-5ba7afbeb514","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID130911ce-dc80-424c-820c-5ba7afbeb514"}},{"type":"ServiceEndpoint","id":"EIDf7144cd0-e6fc-45eb-8e73-77466d479a8e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID7c6d1b7b-c318-45a6-bd3b-1f36345d2d45","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID7c6d1b7b-c318-45a6-bd3b-1f36345d2d45"}},{"type":"Message","id":"EID44c233f9-201e-40e8-bcbb-3ab47b449d91","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID44c233f9-201e-40e8-bcbb-3ab47b449d91"}},{"type":"ServiceEndpoint","id":"EIDf24b61ce-1cc9-4819-ab38-ce1046ee6e42","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDfeccb77b-d010-4365-9b78-61fe5f52d7e6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDfeccb77b-d010-4365-9b78-61fe5f52d7e6"}},{"type":"Message","id":"EID2529d4f9-fab6-4ac3-b8fd-32fa0b89304c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID2529d4f9-fab6-4ac3-b8fd-32fa0b89304c"}},{"type":"ServiceEndpoint","id":"EID17a28f34-5593-4987-8d30-66550e2af380","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID44377dc7-fb10-49aa-81f0-428de2f033b3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID15eda749-0a9e-4802-ac96-b85c06b1f32d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID15eda749-0a9e-4802-ac96-b85c06b1f32d"}},{"type":"Message","id":"EID88ea5e2a-aa3c-4f8f-8b6a-3e264d13355d","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID88ea5e2a-aa3c-4f8f-8b6a-3e264d13355d"}},{"type":"Message","id":"EIDd7b14712-21b3-4306-a388-45f5e0701e6b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDd7b14712-21b3-4306-a388-45f5e0701e6b"}},{"type":"ServiceResponse","id":"EID90926e18-ba04-4089-b135-3b81fba9f1f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID90926e18-ba04-4089-b135-3b81fba9f1f8"}},{"type":"ServiceResponse","id":"EID48dc3598-77ce-42dd-8127-21ade8027889","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID48dc3598-77ce-42dd-8127-21ade8027889"}},{"type":"ServiceEndpoint","id":"EIDe7673d42-51e2-4e43-a975-ecad0b5c5eb2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID82e0caf7-61a8-49c4-9b83-ee97c2888e8e","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID82e0caf7-61a8-49c4-9b83-ee97c2888e8e"}},{"type":"ServiceEndpoint","id":"EID09714bea-f892-4692-967b-11ee52a40ae3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDa8bbd212-7399-41f2-99f1-555c8534709f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID79b3448d-9541-4797-994b-34c8291e4234","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID79b3448d-9541-4797-994b-34c8291e4234"}},{"type":"ServiceEndpoint","id":"EID5a9681d9-1d37-40a8-bb17-9ae67f3e4a76","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EIDb9b279fa-b57e-4366-a20c-ffcad88ffc7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDf897f02e-baeb-4b31-80fd-ec9f94757d8d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDf897f02e-baeb-4b31-80fd-ec9f94757d8d"}},{"type":"Message","id":"EID543c0f58-103b-4701-8e28-b1494108bb40","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID543c0f58-103b-4701-8e28-b1494108bb40"}},{"type":"ServiceEndpoint","id":"EIDb286c045-759c-4ee3-8f1a-4f0bdbb7c531","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID81015af3-29ba-4903-8423-4704e010693d","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID81015af3-29ba-4903-8423-4704e010693d"}},{"type":"ServiceResponse","id":"EIDe114e90f-b0f0-40dc-91bc-ef18286e2cdd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDe114e90f-b0f0-40dc-91bc-ef18286e2cdd"}},{"type":"GetParameter","id":"EIDf13ea882-29a3-4db8-9a93-91df11811ea9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID7d06d7e6-f0a9-40f8-92fc-cecfba3213c8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4783eaf4-f3c7-469d-919b-d22f39b5fdd3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID77ca5119-9d02-419e-9816-082b738f9ff7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID5e405b9e-511a-4bdc-86e4-08382f2925d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID5e405b9e-511a-4bdc-86e4-08382f2925d7"}},{"type":"GetParameter","id":"EID4cc8f33e-d159-4513-bb82-bbb5964641d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID893a218f-c272-4d52-87fe-cd4668499d5e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID893a218f-c272-4d52-87fe-cd4668499d5e"}},{"type":"GetParameter","id":"EIDf53c47d6-1bc2-44d0-ad54-59ff7d4f1ff5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDce07f5d8-eb95-411e-8408-594444570c58","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EIDce07f5d8-eb95-411e-8408-594444570c58"}},{"type":"ServiceEndpoint","id":"EID820e3001-63d4-4d73-b6a5-025a3f0c5e8e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID97541db8-6da4-47ac-a871-bca755d086a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID9d0041f0-05d0-4458-af9d-eea033531a27","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EIDe1fb5ac5-0def-4aed-8088-4e8e7d0af67a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID9631e9b8-02d2-494e-a832-7e9e665f6059","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdf2862be-c330-4f41-8a44-afbb4336a4d5/Attachments/EID9631e9b8-02d2-494e-a832-7e9e665f6059"}},{"type":"ServiceEndpoint","id":"EID1ef7bdf5-de9d-4956-abb6-4a916843a110","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:08:56Z","duration":11588,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:09:23.693 [print] EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:09:23.693 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:09:23.693 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:09:23.693 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:09:23.693 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:09:23.693 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:09:23.693 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3c2d9ad1-482c-4aa3-9be8-11e1ea25f18b/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.007
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.001
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.016
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:09:23.721 [print] [
  "TR.uniqueDatasetIdentifiers",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:09:23.721 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.012
0.408
* print "testing url:" + metadata.url 0.000
11:15:56.503 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.404
11:15:56.507 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:56.907 response time in milliseconds: 399.83
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:56 GMT
1 < ETag: "18664-5af58ad4f2e69-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.002
0.413
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.411
11:15:56.915 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:57.326 response time in milliseconds: 410.61
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:57 GMT
1 < ETag: "18664-5af58ad4f2e69-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.002
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:57.329 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.409
* print "testing url:" + metadata.url 0.000
11:10:36.442 [print] testing url:https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.409
11:10:36.444 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:36.852 response time in milliseconds: 406.69
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:36 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.410
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.408
11:10:36.858 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:37.264 response time in milliseconds: 405.58
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:37 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:37.267 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
2.907
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:15.611 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.906
11:15:15.611 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS"}}}

11:15:18.517 response time in milliseconds: 2800.80
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:18 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883718337","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:18.518 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
30.375
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:54.355 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.375
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
11:12:54.356 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:13:24.731 java.net.SocketTimeoutException: Read timed out, http call failed after 30375 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:13:24.731 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
30.365
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:26.893 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.364
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
11:12:26.894 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}}}

11:12:57.258 java.net.SocketTimeoutException: Read timed out, http call failed after 30363 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:12:57.258 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
32.867
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.010
* print testRunRequest 0.001
11:04:04.532 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.005
And request inspireload 0.000
When method post 9.188
11:04:04.660 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}

11:04:13.698 response time in milliseconds: 8274.19
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:12 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:04:10 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a8673546-9bf4-4a75-9d12-dd457d3cec44.json","testRuns":{"TestRun":{"id":"EIDa8673546-9bf4-4a75-9d12-dd457d3cec44","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:09.494Z","testTasks":{"TestTask":{"id":"EID8a5bfab6-78c9-4287-8070-6fc6ebea15fc","parent":{"ref":"EIDa8673546-9bf4-4a75-9d12-dd457d3cec44"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID84a82a99-fbc8-411b-aec5-6208f496df12"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID84a82a99-fbc8-411b-aec5-6208f496df12","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:05.618Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:08.79Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.010
* print response.EtfItemCollection.testRuns.TestRun.id 0.021
11:04:13.762 [print] EIDa8673546-9bf4-4a75-9d12-dd457d3cec44
* print response.EtfItemCollection.testRuns.TestRun.status 0.006
11:04:13.768 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.043
11:04:13.811 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.003
11:04:13.815 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a8673546-9bf4-4a75-9d12-dd457d3cec44.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.012
11:04:13.827 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.017
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.003
* print 'statuspath', statuspath 0.013
11:04:13.862 [print] statuspath TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44
* print 'progresspath ', progresspath 0.025
11:04:13.888 [print] progresspath  TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/progress
Given path progresspath 0.000
When method GET 0.604
11:04:13.903 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:14.492 response time in milliseconds: 586.77
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:04:14 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["28.10.2020 11:04:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:09 UTC 2020)","28.10.2020 11:04:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:09 - Preparing 1 Test Task:","28.10.2020 11:04:09 -  TestTask 1 (8a5bfab6-78c9-4287-8070-6fc6ebea15fc)","28.10.2020 11:04:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:09 -  with parameters: ","28.10.2020 11:04:09 - etf.testcases = *","28.10.2020 11:04:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:09 - Setting state to CREATED","28.10.2020 11:04:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:10 - Starting TestRun.a8673546-9bf4-4a75-9d12-dd457d3cec44 at 2020-10-28T11:04:11Z","28.10.2020 11:04:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:11 - Project Properties: ","28.10.2020 11:04:11 - etf.testcases - * ","28.10.2020 11:04:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:04:11 - username -  ","28.10.2020 11:04:11 - authUser -  ","28.10.2020 11:04:11 - authMethod - basic ","28.10.2020 11:04:11 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.006
11:04:14.500 [print] {
  "val": "34",
  "max": "35",
  "log": [
    "28.10.2020 11:04:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:09 UTC 2020)",
    "28.10.2020 11:04:09 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:04:09 - Preparing 1 Test Task:",
    "28.10.2020 11:04:09 -  TestTask 1 (8a5bfab6-78c9-4287-8070-6fc6ebea15fc)",
    "28.10.2020 11:04:09 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:04:09 -  with parameters: ",
    "28.10.2020 11:04:09 - etf.testcases = *",
    "28.10.2020 11:04:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:04:09 - Setting state to CREATED",
    "28.10.2020 11:04:09 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:04:10 - Starting TestRun.a8673546-9bf4-4a75-9d12-dd457d3cec44 at 2020-10-28T11:04:11Z",
    "28.10.2020 11:04:11 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:04:11 - Project Properties: ",
    "28.10.2020 11:04:11 - etf.testcases - * ",
    "28.10.2020 11:04:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ",
    "28.10.2020 11:04:11 - username -  ",
    "28.10.2020 11:04:11 - authUser -  ",
    "28.10.2020 11:04:11 - authMethod - basic ",
    "28.10.2020 11:04:11 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.666
11:04:14.509 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:15.041 response time in milliseconds: 530.29
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:04:14 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"38","max":"39","log":["28.10.2020 11:04:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:09 UTC 2020)","28.10.2020 11:04:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:09 - Preparing 1 Test Task:","28.10.2020 11:04:09 -  TestTask 1 (8a5bfab6-78c9-4287-8070-6fc6ebea15fc)","28.10.2020 11:04:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:09 -  with parameters: ","28.10.2020 11:04:09 - etf.testcases = *","28.10.2020 11:04:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:09 - Setting state to CREATED","28.10.2020 11:04:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:10 - Starting TestRun.a8673546-9bf4-4a75-9d12-dd457d3cec44 at 2020-10-28T11:04:11Z","28.10.2020 11:04:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:11 - Project Properties: ","28.10.2020 11:04:11 - etf.testcases - * ","28.10.2020 11:04:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:04:11 - username -  ","28.10.2020 11:04:11 - authUser -  ","28.10.2020 11:04:11 - authMethod - basic ","28.10.2020 11:04:11 - TestRunTask initialized"]}

11:04:15.063 retry condition not satisfied: response.val == response.max
11:04:15.065 sleeping before retry #1
11:04:20.068 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:20.590 response time in milliseconds: 521.70
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:04:20 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["28.10.2020 11:04:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:09 UTC 2020)","28.10.2020 11:04:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:09 - Preparing 1 Test Task:","28.10.2020 11:04:09 -  TestTask 1 (8a5bfab6-78c9-4287-8070-6fc6ebea15fc)","28.10.2020 11:04:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:09 -  with parameters: ","28.10.2020 11:04:09 - etf.testcases = *","28.10.2020 11:04:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:09 - Setting state to CREATED","28.10.2020 11:04:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:10 - Starting TestRun.a8673546-9bf4-4a75-9d12-dd457d3cec44 at 2020-10-28T11:04:11Z","28.10.2020 11:04:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:11 - Project Properties: ","28.10.2020 11:04:11 - etf.testcases - * ","28.10.2020 11:04:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:04:11 - username -  ","28.10.2020 11:04:11 - authUser -  ","28.10.2020 11:04:11 - authMethod - basic ","28.10.2020 11:04:11 - TestRunTask initialized"]}

11:04:20.596 retry condition not satisfied: response.val == response.max
11:04:20.596 sleeping before retry #2
11:04:25.599 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:26.129 response time in milliseconds: 528.45
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:04:26 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["28.10.2020 11:04:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:09 UTC 2020)","28.10.2020 11:04:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:09 - Preparing 1 Test Task:","28.10.2020 11:04:09 -  TestTask 1 (8a5bfab6-78c9-4287-8070-6fc6ebea15fc)","28.10.2020 11:04:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:09 -  with parameters: ","28.10.2020 11:04:09 - etf.testcases = *","28.10.2020 11:04:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:09 - Setting state to CREATED","28.10.2020 11:04:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:10 - Starting TestRun.a8673546-9bf4-4a75-9d12-dd457d3cec44 at 2020-10-28T11:04:11Z","28.10.2020 11:04:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:11 - Project Properties: ","28.10.2020 11:04:11 - etf.testcases - * ","28.10.2020 11:04:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:04:11 - username -  ","28.10.2020 11:04:11 - authUser -  ","28.10.2020 11:04:11 - authMethod - basic ","28.10.2020 11:04:11 - TestRunTask initialized","28.10.2020 11:04:25 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:04:25 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:04:25 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:04:26.130 retry condition not satisfied: response.val == response.max
11:04:26.130 sleeping before retry #3
11:04:31.132 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:33.164 response time in milliseconds: 2028.49
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:04:33 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:04:33.166 retry condition satisfied
* print response 0.001
11:04:33.168 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.598
11:04:33.171 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:36.749 response time in milliseconds: 2594.77
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:04:35 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:04:31 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a8673546-9bf4-4a75-9d12-dd457d3cec44.json","testRuns":{"TestRun":{"id":"EIDa8673546-9bf4-4a75-9d12-dd457d3cec44","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:09.494Z","testTasks":{"TestTask":{"id":"EID8a5bfab6-78c9-4287-8070-6fc6ebea15fc","parent":{"ref":"EIDa8673546-9bf4-4a75-9d12-dd457d3cec44"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID84a82a99-fbc8-411b-aec5-6208f496df12"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID84a82a99-fbc8-411b-aec5-6208f496df12","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:05.618Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:08.79Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4","testObject":{"ref":"EID84a82a99-fbc8-411b-aec5-6208f496df12"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee12ab0-0175-1000-8b43-c128ba4e0011","testCaseResults":{"TestCaseResult":[{"id":"EID6ee12ab0-0175-1000-016e-8b5ddc162223","testStepResults":{"TestStepResult":[{"id":"EID6ee12ab1-0175-1000-5667-ea1730d7a3f1","parent":{"ref":"EID6ee12ab0-0175-1000-016e-8b5ddc162223"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:04:11Z","duration":18,"status":"PASSED"},{"id":"EID6ee12ac3-0175-1000-0633-5992db53ebf7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee12bbf-0175-1000-c314-79435ff247c1","parent":{"ref":"EID6ee12ac3-0175-1000-0633-5992db53ebf7"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:04:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee12bbf-0175-1000-1ee8-c1331d71e946","parent":{"ref":"EID6ee12ac3-0175-1000-0633-5992db53ebf7"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:04:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee12bbf-0175-1000-dcb5-1a3be50c702a","parent":{"ref":"EID6ee12ac3-0175-1000-0633-5992db53ebf7"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:04:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee12bbf-0175-1000-d437-2afe85989c3e","parent":{"ref":"EID6ee12ac3-0175-1000-0633-5992db53ebf7"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:04:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID896412e5-7149-4822-bf66-4c8f023986b5"},{"ref":"EID3f9f02d5-6d9c-40ed-a417-5e27c82b7288"},{"ref":"EIDa520ab06-3152-475f-b3d4-35ec965f28e4"}]},"parent":{"ref":"EID6ee12ab0-0175-1000-016e-8b5ddc162223"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:04:11Z","duration":147,"status":"PASSED"}]},"parent":{"ref":"EID6ee12ab0-0175-1000-8b43-c128ba4e0011"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:04:11Z","duration":282,"status":"PASSED"},{"id":"EID6ee12bca-0175-1000-ceeb-cefad2bac8ff","testStepResults":{"TestStepResult":{"id":"EID6ee12bcb-0175-1000-d5a8-a235e5f63de1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee12c9d-0175-1000-8837-23574aa645a2","parent":{"ref":"EID6ee12bcb-0175-1000-d5a8-a235e5f63de1"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12c9d-0175-1000-0956-7725e52def07","parent":{"ref":"EID6ee12bcb-0175-1000-d5a8-a235e5f63de1"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12c9d-0175-1000-f803-a3be219163a6","parent":{"ref":"EID6ee12bcb-0175-1000-d5a8-a235e5f63de1"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6e0be2f2-1b8c-4eb2-9e50-0fa9261053b0"},{"ref":"EID3b25d274-160a-471b-a1f7-d6e0a8a068a0"},{"ref":"EID40789e2a-1886-4e75-8e0e-577c4e2ed0c1"}]},"parent":{"ref":"EID6ee12bca-0175-1000-ceeb-cefad2bac8ff"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:04:11Z","duration":100,"status":"PASSED"}},"parent":{"ref":"EID6ee12ab0-0175-1000-8b43-c128ba4e0011"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:04:11Z","duration":211,"status":"PASSED"}]},"parent":{"ref":"EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:04:11Z","duration":493,"status":"PASSED"},{"id":"EID6ee12c9d-0175-1000-c335-f704c69a75a9","testCaseResults":{"TestCaseResult":[{"id":"EID6ee12c9d-0175-1000-bbd1-8b22679c73b5","testStepResults":{"TestStepResult":[{"id":"EID6ee12c9d-0175-1000-0dd8-4d009ea90a5c","parent":{"ref":"EID6ee12c9d-0175-1000-bbd1-8b22679c73b5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:04:12Z","duration":117,"status":"PASSED"},{"id":"EID6ee12cae-0175-1000-ec32-dc304f0b0cb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee12d4c-0175-1000-af1e-e0952dd4fa1a","parent":{"ref":"EID6ee12cae-0175-1000-ec32-dc304f0b0cb4"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12d4c-0175-1000-85f5-59c74b4b0d24","parent":{"ref":"EID6ee12cae-0175-1000-ec32-dc304f0b0cb4"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12d4c-0175-1000-a9a6-c51cb6152048","parent":{"ref":"EID6ee12cae-0175-1000-ec32-dc304f0b0cb4"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12d4c-0175-1000-990f-12a7731fcecb","parent":{"ref":"EID6ee12cae-0175-1000-ec32-dc304f0b0cb4"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12d4c-0175-1000-acc3-0eab9c187cf3","parent":{"ref":"EID6ee12cae-0175-1000-ec32-dc304f0b0cb4"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1f314814-1369-4613-b880-a3af71d2435f"},{"ref":"EIDc9a9a159-2cdd-470c-930f-91a29a644b19"},{"ref":"EIDcdb749b8-608c-4788-ac29-878367b4d66a"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-bbd1-8b22679c73b5"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:04:12Z","duration":48,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:04:12Z","duration":177,"status":"PASSED"},{"id":"EID6ee12d4e-0175-1000-dd1b-746929da7093","testStepResults":{"TestStepResult":[{"id":"EID6ee12d5b-0175-1000-8a07-201d07bf6b5d","attachments":{"attachment":[{"ref":"EID0fe6b394-a07b-40d5-8f84-a034f6394f3e"},{"ref":"EID3e9aad3d-30b9-44d6-8d8b-2c2d284c7a46"}]},"parent":{"ref":"EID6ee12d4e-0175-1000-dd1b-746929da7093"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:04:12Z","duration":94,"status":"PASSED"},{"id":"EID6ee12def-0175-1000-a5a2-19adeeb25ab1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee12eda-0175-1000-0ddf-466742133cb8","parent":{"ref":"EID6ee12def-0175-1000-a5a2-19adeeb25ab1"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12eda-0175-1000-fe3f-c79b6cdf6109","parent":{"ref":"EID6ee12def-0175-1000-a5a2-19adeeb25ab1"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12eda-0175-1000-c1c7-35358ad63b31","parent":{"ref":"EID6ee12def-0175-1000-a5a2-19adeeb25ab1"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee12eda-0175-1000-3b5d-4e83a54927d0","parent":{"ref":"EID6ee12def-0175-1000-a5a2-19adeeb25ab1"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:04:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0bab5c9b-eddd-4126-9f3d-1d0a537abc7f"},{"ref":"EID8c7a1450-2d6c-4e17-a69a-855e463eada9"},{"ref":"EID0233c275-88ab-4ef8-8117-0109c272ba7c"}]},"parent":{"ref":"EID6ee12d4e-0175-1000-dd1b-746929da7093"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:04:12Z","duration":162,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:04:12Z","duration":396,"status":"PASSED"},{"id":"EID6ee12ee2-0175-1000-3f93-38b618e2592f","testStepResults":{"TestStepResult":[{"id":"EID6ee12ee2-0175-1000-bea7-41e651b5ae73","attachments":{"attachment":[{"ref":"EID76630266-5cca-4dfe-8cb9-94729a9da178"},{"ref":"EID796ae61f-647f-4c07-af91-6571a898bd13"}]},"parent":{"ref":"EID6ee12ee2-0175-1000-3f93-38b618e2592f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:04:12Z","duration":100,"status":"PASSED"},{"id":"EID6ee12f77-0175-1000-ff3a-30b0ff2d10dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee13040-0175-1000-7a34-bb9a9b9b24b7","parent":{"ref":"EID6ee12f77-0175-1000-ff3a-30b0ff2d10dc"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13040-0175-1000-68db-a8da98ab37e3","parent":{"ref":"EID6ee12f77-0175-1000-ff3a-30b0ff2d10dc"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13040-0175-1000-c17a-9e487c576e20","parent":{"ref":"EID6ee12f77-0175-1000-ff3a-30b0ff2d10dc"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13040-0175-1000-849e-a26bbfb7cb7b","parent":{"ref":"EID6ee12f77-0175-1000-ff3a-30b0ff2d10dc"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13040-0175-1000-c70c-0b18cbd1f797","parent":{"ref":"EID6ee12f77-0175-1000-ff3a-30b0ff2d10dc"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ed6c6fd-6726-43f7-a070-0b78ff0c338a"},{"ref":"EIDe7fac740-3502-43bc-bc29-c0be4046c017"},{"ref":"EIDe340ea56-d326-4c38-856d-70d924e147c0"}]},"parent":{"ref":"EID6ee12ee2-0175-1000-3f93-38b618e2592f"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:04:12Z","duration":107,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:04:12Z","duration":362,"status":"PASSED"},{"id":"EID6ee1304c-0175-1000-c6ba-e2ee8e4cf8a5","testStepResults":{"TestStepResult":[{"id":"EID6ee1304c-0175-1000-48ff-feb03bb2c346","attachments":{"attachment":[{"ref":"EID6c4e2cff-1b42-4d0c-aab7-fe52579d7177"},{"ref":"EID2f725334-27da-4a9a-bbf9-e4c0bf2ad42d"}]},"parent":{"ref":"EID6ee1304c-0175-1000-c6ba-e2ee8e4cf8a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:04:13Z","duration":201,"status":"PASSED"},{"id":"EID6ee13155-0175-1000-28c7-dc5a538ee4b1","parent":{"ref":"EID6ee1304c-0175-1000-c6ba-e2ee8e4cf8a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13155-0175-1000-1edf-495a7aa3cec6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee131c4-0175-1000-4f89-825d351bfa05","parent":{"ref":"EID6ee13155-0175-1000-1edf-495a7aa3cec6"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee131c4-0175-1000-ca7d-56831ac0377c","parent":{"ref":"EID6ee13155-0175-1000-1edf-495a7aa3cec6"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee131c4-0175-1000-c724-a0fdff8ebd21","parent":{"ref":"EID6ee13155-0175-1000-1edf-495a7aa3cec6"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee131c4-0175-1000-bc51-776bdaa6c13f","parent":{"ref":"EID6ee13155-0175-1000-1edf-495a7aa3cec6"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6a3c494d-743b-4858-9dd3-678f248041da"},{"ref":"EID59f1a053-e6d3-48f6-8619-b9624af6160b"},{"ref":"EID1bea0f75-5691-4545-836c-80e2116d5d4d"}]},"parent":{"ref":"EID6ee1304c-0175-1000-c6ba-e2ee8e4cf8a5"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:04:13Z","duration":37,"status":"PASSED"},{"id":"EID6ee131ce-0175-1000-1c29-8864a5d96ddd","attachments":{"attachment":{"ref":"EID4f0150cb-1327-43b3-9d29-bd2798d77c0f"}},"parent":{"ref":"EID6ee1304c-0175-1000-c6ba-e2ee8e4cf8a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee131de-0175-1000-830d-a519bfdba33e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee13294-0175-1000-8f7d-21f40ae3f8f5","parent":{"ref":"EID6ee131de-0175-1000-830d-a519bfdba33e"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13294-0175-1000-a88a-ed91557fbf21","parent":{"ref":"EID6ee131de-0175-1000-830d-a519bfdba33e"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13294-0175-1000-7315-c299e058fdc7","parent":{"ref":"EID6ee131de-0175-1000-830d-a519bfdba33e"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13294-0175-1000-0af3-00420a21a66d","parent":{"ref":"EID6ee131de-0175-1000-830d-a519bfdba33e"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee13294-0175-1000-9702-4e68a116ec5a","parent":{"ref":"EID6ee131de-0175-1000-830d-a519bfdba33e"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:04:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd352b9a4-122f-4aac-a5fd-72731b0dff16"},{"ref":"EID113f0a3b-378f-4a68-9cac-f9a9fc944493"},{"ref":"EIDc2e231a0-4d36-48d0-9103-e0d922ddd1ff"}]},"parent":{"ref":"EID6ee1304c-0175-1000-c6ba-e2ee8e4cf8a5"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:04:13Z","duration":44,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:04:13Z","duration":585,"status":"PASSED"},{"id":"EID6ee1329b-0175-1000-4391-8dc164cf122c","testStepResults":{"TestStepResult":[{"id":"EID6ee1329b-0175-1000-1687-816531867fa2","attachments":{"attachment":[{"ref":"EID12e8c77b-9c91-4d4c-ad1a-43d8e260b049"},{"ref":"EID7d75bc61-a4ff-46c3-956d-1a82532fd117"}]},"parent":{"ref":"EID6ee1329b-0175-1000-4391-8dc164cf122c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:04:13Z","duration":86,"status":"PASSED"},{"id":"EID6ee13328-0175-1000-4c2f-6eb9d2d3b0cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee134b5-0175-1000-e588-719e3c681801","parent":{"ref":"EID6ee13328-0175-1000-4c2f-6eb9d2d3b0cc"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee134b5-0175-1000-6b84-c6257efc6e47","parent":{"ref":"EID6ee13328-0175-1000-4c2f-6eb9d2d3b0cc"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee134b5-0175-1000-a42c-9e807bbdba11","parent":{"ref":"EID6ee13328-0175-1000-4c2f-6eb9d2d3b0cc"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee134b5-0175-1000-506e-92b7b7049a84","parent":{"ref":"EID6ee13328-0175-1000-4c2f-6eb9d2d3b0cc"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd9443b1b-ca16-4ffc-a83c-83be5e730ea2"},{"ref":"EIDe667273d-0df8-4160-aa0c-b53e6126fa49"},{"ref":"EID1fab01ea-48a6-4354-8cc4-f833774635b8"}]},"parent":{"ref":"EID6ee1329b-0175-1000-4391-8dc164cf122c"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:04:13Z","duration":327,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:04:13Z","duration":538,"status":"PASSED"},{"id":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0","testStepResults":{"TestStepResult":[{"id":"EID6ee134bd-0175-1000-ad67-639d3e4491fc","attachments":{"attachment":[{"ref":"EIDc02438d4-3e4b-4f11-aa54-7fe77426b30d"},{"ref":"EID79bc5629-0515-4c38-a59d-147b0ac5f5f9"}]},"parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:04:14Z","duration":230,"status":"PASSED"},{"id":"EID6ee135d1-0175-1000-6a27-d37af3a638fb","parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:04:14Z","duration":1,"status":"PASSED"},{"id":"EID6ee135d2-0175-1000-118a-2464d40fcca0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee136c3-0175-1000-72b8-7cb35632546f","parent":{"ref":"EID6ee135d2-0175-1000-118a-2464d40fcca0"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee136c3-0175-1000-d561-343a92aa76fa","parent":{"ref":"EID6ee135d2-0175-1000-118a-2464d40fcca0"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee136c3-0175-1000-1255-603a3805320c","parent":{"ref":"EID6ee135d2-0175-1000-118a-2464d40fcca0"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee136c3-0175-1000-d733-3c5c6f9cf992","parent":{"ref":"EID6ee135d2-0175-1000-118a-2464d40fcca0"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:04:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID22b0c120-35d9-404d-ae57-08e4ca4b32db"},{"ref":"EID3ebd648e-c267-4d8e-8f4a-d6d0be73112a"},{"ref":"EID25c83eee-9e8e-4591-bdb7-b755ac5e43d6"}]},"parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:04:14Z","duration":137,"status":"PASSED"},{"id":"EID6ee136cb-0175-1000-fa71-b9fa3b9c85ac","attachments":{"attachment":{"ref":"EIDaea395d0-63fa-45e7-8e02-20b4900f9475"}},"parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:04:14Z","duration":1,"status":"PASSED"},{"id":"EID6ee136e6-0175-1000-47a2-79c581ae1292","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee137f8-0175-1000-ea0e-017447377933","parent":{"ref":"EID6ee136e6-0175-1000-47a2-79c581ae1292"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee137f8-0175-1000-b38a-6e2f1a3265ad","parent":{"ref":"EID6ee136e6-0175-1000-47a2-79c581ae1292"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee137f8-0175-1000-4e0f-05d147979917","parent":{"ref":"EID6ee136e6-0175-1000-47a2-79c581ae1292"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID37032479-d251-4e0f-aa2f-cfc5e9895bb6"},{"ref":"EID70bf3a27-9922-4c16-9dec-842221603c9c"},{"ref":"EID46637750-7faa-4dda-8b6e-419c1f4f2531"}]},"parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:04:14Z","duration":218,"status":"PASSED"},{"id":"EID6ee137f8-0175-1000-c653-2c37b0eaa63b","attachments":{"attachment":{"ref":"EID3a454909-4435-4e45-8e9e-1b098d223b25"}},"parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:04:15Z","duration":1,"status":"PASSED"},{"id":"EID6ee13806-0175-1000-59e2-3735b9458522","attachments":{"attachment":{"ref":"EID5fbdf424-f4a6-4bdd-aa0e-a518d145063b"}},"parent":{"ref":"EID6ee134bd-0175-1000-fb07-21684b8fb5a0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:04:14Z","duration":862,"status":"PASSED"},{"id":"EID6ee1381b-0175-1000-5fb0-b2e1f997bfa8","testStepResults":{"TestStepResult":[{"id":"EID6ee1381b-0175-1000-480c-b15bc1696976","attachments":{"attachment":[{"ref":"EID135ebbf7-0972-4dbe-8c50-d4826d7f2cb8"},{"ref":"EID5186a1c4-5c83-4810-abce-3f7fadc4f20a"}]},"parent":{"ref":"EID6ee1381b-0175-1000-5fb0-b2e1f997bfa8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:04:15Z","duration":86,"status":"PASSED"},{"id":"EID6ee13897-0175-1000-ac38-0c3fbafea00f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1391d-0175-1000-5607-db5ed1c383d2","parent":{"ref":"EID6ee13897-0175-1000-ac38-0c3fbafea00f"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee1391d-0175-1000-109b-236d8e8b8921","parent":{"ref":"EID6ee13897-0175-1000-ac38-0c3fbafea00f"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee1391d-0175-1000-61a7-b0d549513912","parent":{"ref":"EID6ee13897-0175-1000-ac38-0c3fbafea00f"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee1391d-0175-1000-2ef7-85c1185f0b4b","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee13897-0175-1000-ac38-0c3fbafea00f"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID5e0b65c6-c716-4c06-aad2-0e0956ee4e47"},{"ref":"EID458a5b83-5552-4232-88df-192e03348d91"},{"ref":"EIDf5807a26-1d24-48fe-a9c4-14990b4f7431"}]},"parent":{"ref":"EID6ee1381b-0175-1000-5fb0-b2e1f997bfa8"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:04:15Z","duration":38,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:04:15Z","duration":258,"status":"PASSED_MANUAL"},{"id":"EID6ee1391d-0175-1000-2d74-082170ef7efc","testStepResults":{"TestStepResult":{"id":"EID6ee1391d-0175-1000-dbb3-833f778d0f18","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee139d2-0175-1000-2e1f-6a08d1139e39","parent":{"ref":"EID6ee1391d-0175-1000-dbb3-833f778d0f18"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee139d3-0175-1000-ef28-625137f890d3","parent":{"ref":"EID6ee1391d-0175-1000-dbb3-833f778d0f18"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee139d3-0175-1000-22db-4e85a7bf90a0","parent":{"ref":"EID6ee1391d-0175-1000-dbb3-833f778d0f18"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee139d3-0175-1000-ea0f-9ab768bcf270","parent":{"ref":"EID6ee1391d-0175-1000-dbb3-833f778d0f18"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc07c4a29-a85c-4e63-a145-5eec5a6ee6f1"},{"ref":"EID743e929f-13f9-4141-b818-28393447d86e"},{"ref":"EIDa426c600-cde9-4ed5-8055-d71086e966d0"}]},"parent":{"ref":"EID6ee1391d-0175-1000-2d74-082170ef7efc"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:04:15Z","duration":92,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:04:15Z","duration":190,"status":"PASSED"},{"id":"EID6ee139db-0175-1000-75f2-d2db3c677fba","testStepResults":{"TestStepResult":{"id":"EID6ee139db-0175-1000-f794-4bbb3dc007ab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee13afe-0175-1000-a812-3ce8b6d22782","parent":{"ref":"EID6ee139db-0175-1000-f794-4bbb3dc007ab"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee13afe-0175-1000-0849-61a8cf164071","parent":{"ref":"EID6ee139db-0175-1000-f794-4bbb3dc007ab"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee13afe-0175-1000-9832-dfbfbe56216c","parent":{"ref":"EID6ee139db-0175-1000-f794-4bbb3dc007ab"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee13afe-0175-1000-5058-1e7cbf94957f","parent":{"ref":"EID6ee139db-0175-1000-f794-4bbb3dc007ab"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:04:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe885b4cc-5fe5-4134-9d2f-44b7ea36ec24"},{"ref":"EIDdca19aec-de42-46d6-9ce0-7c6494acb977"},{"ref":"EID229f757c-6d00-4c75-bc39-8a1b52192f64"}]},"parent":{"ref":"EID6ee139db-0175-1000-75f2-d2db3c677fba"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:04:15Z","duration":200,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:04:15Z","duration":291,"status":"PASSED"},{"id":"EID6ee13afe-0175-1000-e988-35788c725ba8","testStepResults":{"TestStepResult":[{"id":"EID6ee13afe-0175-1000-1841-f9de5b821b49","attachments":{"attachment":[{"ref":"EIDc38ddbd5-bd2e-48aa-848a-10c27b293a7f"},{"ref":"EID6a5ed8ad-1d0f-402a-ad19-039675a9685a"},{"ref":"EID79b71b0b-530c-40fb-b5a0-a4a89a6a0812"},{"ref":"EID4f462f67-010f-41b2-b3be-95e93332008b"},{"ref":"EIDff60d22b-5fa7-46f3-97e9-bb53798875f5"},{"ref":"EID281adf07-d7f5-430f-b70d-d1072526eeef"},{"ref":"EID3caf20bd-2dba-48a7-8eb2-ca8eb329d92a"},{"ref":"EID25f7c9dc-f1fb-4d1a-85c6-809fda7be909"},{"ref":"EIDed8e20a5-2180-45ee-8789-25dcca409d15"},{"ref":"EIDb568e6fe-918a-42be-a4da-ef065021673f"},{"ref":"EID1fe27fd4-15b2-4501-9aa2-a0276451aa55"},{"ref":"EIDa1d13aca-50aa-4138-a1db-7984df8b3c76"}]},"parent":{"ref":"EID6ee13afe-0175-1000-e988-35788c725ba8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:04:15Z","duration":411,"status":"PASSED"},{"id":"EID6ee13d3b-0175-1000-c144-4241d8e040a7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee13dc0-0175-1000-75cc-0c4ac3155f1c","parent":{"ref":"EID6ee13d3b-0175-1000-c144-4241d8e040a7"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13dc0-0175-1000-94d6-94b96a2252dd","parent":{"ref":"EID6ee13d3b-0175-1000-c144-4241d8e040a7"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13dc0-0175-1000-8959-79930087f286","parent":{"ref":"EID6ee13d3b-0175-1000-c144-4241d8e040a7"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13dc0-0175-1000-57aa-777e7c7a40c9","parent":{"ref":"EID6ee13d3b-0175-1000-c144-4241d8e040a7"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13dc0-0175-1000-565d-8e8a314cc8f5","parent":{"ref":"EID6ee13d3b-0175-1000-c144-4241d8e040a7"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4439b17e-abbc-48e2-9e9d-348ef8e6612e"},{"ref":"EID14ff448b-5d84-49c5-8070-60f13f008d90"},{"ref":"EID96a3d1c3-5f81-4612-9a11-6fb25033e5be"}]},"parent":{"ref":"EID6ee13afe-0175-1000-e988-35788c725ba8"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:04:16Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:04:15Z","duration":706,"status":"PASSED"},{"id":"EID6ee13dc0-0175-1000-6a9e-2803365db532","testStepResults":{"TestStepResult":{"id":"EID6ee13dc0-0175-1000-42e5-85f8c39c4b9d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee13e39-0175-1000-b8b6-26a5253167b2","parent":{"ref":"EID6ee13dc0-0175-1000-42e5-85f8c39c4b9d"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13e39-0175-1000-f5c5-28d5ef53479f","parent":{"ref":"EID6ee13dc0-0175-1000-42e5-85f8c39c4b9d"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13e39-0175-1000-392c-f40023863178","parent":{"ref":"EID6ee13dc0-0175-1000-42e5-85f8c39c4b9d"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee13e39-0175-1000-5bf0-bdb421501a67","parent":{"ref":"EID6ee13dc0-0175-1000-42e5-85f8c39c4b9d"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:04:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9751c1e4-1b0c-4800-b08b-cb9e5ce63072"},{"ref":"EID9748e7ab-49a1-41bb-8011-2ce0e2f7c652"},{"ref":"EID55d4d289-cb13-4ea2-9013-ef7cbc566b88"}]},"parent":{"ref":"EID6ee13dc0-0175-1000-6a9e-2803365db532"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:04:16Z","duration":40,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:04:16Z","duration":122,"status":"PASSED"},{"id":"EID6ee13e3c-0175-1000-0030-cf7dfb8c2a48","testStepResults":{"TestStepResult":{"id":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee13f7f-0175-1000-52a6-4b30c12c11c6","parent":{"ref":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee13f7f-0175-1000-928c-f35ca9e2a99e","parent":{"ref":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee13f7f-0175-1000-1f5f-c8e2ef7788f4","parent":{"ref":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee13f7f-0175-1000-1bc5-2600875b7974","parent":{"ref":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee13f7f-0175-1000-6ea7-346a4124dff9","parent":{"ref":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee13f7f-0175-1000-b442-37ffe9f81365","parent":{"ref":"EID6ee13e3c-0175-1000-7741-fb7bcd4bc055"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7fc0bc31-53d7-4873-a033-be51589e18c6"},{"ref":"EID35c37589-f9f4-451d-9279-0f2b354c4e00"},{"ref":"EID5d961a5b-61a9-44a2-be91-f64537f6aa35"}]},"parent":{"ref":"EID6ee13e3c-0175-1000-0030-cf7dfb8c2a48"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:04:16Z","duration":180,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:04:16Z","duration":323,"status":"PASSED"},{"id":"EID6ee13f7f-0175-1000-f8f8-8f3f7bd37c24","testStepResults":{"TestStepResult":{"id":"EID6ee13f7f-0175-1000-b436-f999267f9b00","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14073-0175-1000-2ca1-2150b6221a2f","parent":{"ref":"EID6ee13f7f-0175-1000-b436-f999267f9b00"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee14073-0175-1000-1064-b59ea97649bd","parent":{"ref":"EID6ee13f7f-0175-1000-b436-f999267f9b00"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee14073-0175-1000-90e0-6317417070c7","parent":{"ref":"EID6ee13f7f-0175-1000-b436-f999267f9b00"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee14073-0175-1000-233f-fbb029623f1e","parent":{"ref":"EID6ee13f7f-0175-1000-b436-f999267f9b00"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee14073-0175-1000-1964-f4e455b9f74b","parent":{"ref":"EID6ee13f7f-0175-1000-b436-f999267f9b00"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee14073-0175-1000-9c5b-59ad08caaf11","parent":{"ref":"EID6ee13f7f-0175-1000-b436-f999267f9b00"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5f00215-f307-4429-8356-495ceed2b2e5"},{"ref":"EID81ea17d6-b923-46b7-8be4-ae8ad8e3eec1"},{"ref":"EIDc24046d5-f94a-48ec-bac6-197c3b40c858"}]},"parent":{"ref":"EID6ee13f7f-0175-1000-f8f8-8f3f7bd37c24"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:04:17Z","duration":32,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:04:17Z","duration":311,"status":"PASSED"},{"id":"EID6ee140b6-0175-1000-9fd1-377df08fd4d4","testStepResults":{"TestStepResult":{"id":"EID6ee140b6-0175-1000-cd3f-b864ff911298","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1415c-0175-1000-2f98-59f054143b75","parent":{"ref":"EID6ee140b6-0175-1000-cd3f-b864ff911298"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:04:17Z","duration":1,"status":"PASSED"},{"id":"EID6ee1415d-0175-1000-a921-4f930b1a3eab","parent":{"ref":"EID6ee140b6-0175-1000-cd3f-b864ff911298"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee1415d-0175-1000-043d-f09e0839b3c3","parent":{"ref":"EID6ee140b6-0175-1000-cd3f-b864ff911298"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee1415d-0175-1000-405b-65098bb7855c","parent":{"ref":"EID6ee140b6-0175-1000-cd3f-b864ff911298"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:04:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b227f80-e32d-4ef6-ae62-b1216c859c88"},{"ref":"EID51c3a33a-3cec-4965-b74a-b198d424195f"},{"ref":"EIDd86e0dfe-e066-4861-9d7a-a6821a2717ff"}]},"parent":{"ref":"EID6ee140b6-0175-1000-9fd1-377df08fd4d4"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:04:17Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:04:17Z","duration":167,"status":"PASSED"},{"id":"EID6ee1415d-0175-1000-480f-6999c3ad1c97","testStepResults":{"TestStepResult":[{"id":"EID6ee1415d-0175-1000-e88c-4b2daa1e453c","attachments":{"attachment":[{"ref":"EID61dfa631-3e87-4fb5-933d-fb838021530a"},{"ref":"EID3cb336f1-7eae-41b7-afee-9fac5aecb220"},{"ref":"EIDa4133c53-0238-4849-ba35-611709300ddb"},{"ref":"EID484b4af1-7b49-44ca-9a27-8a4dad84a151"}]},"parent":{"ref":"EID6ee1415d-0175-1000-480f-6999c3ad1c97"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:04:17Z","duration":526,"status":"PASSED"},{"id":"EID6ee143ff-0175-1000-9b0f-f235caf96312","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14520-0175-1000-f1ce-52a593be8afd","parent":{"ref":"EID6ee143ff-0175-1000-9b0f-f235caf96312"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:04:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee14520-0175-1000-d444-a1d9ffe036e0","parent":{"ref":"EID6ee143ff-0175-1000-9b0f-f235caf96312"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:04:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee14520-0175-1000-0821-a34ea6afa958","parent":{"ref":"EID6ee143ff-0175-1000-9b0f-f235caf96312"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:04:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee14520-0175-1000-0417-fe1768d33ec1","parent":{"ref":"EID6ee143ff-0175-1000-9b0f-f235caf96312"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:04:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc47c47e9-4851-4cfc-92ae-d6915825d5b1"},{"ref":"EID7e92b8b7-3289-4108-9137-bb29ce75a962"},{"ref":"EID81be6964-dbdf-4008-bd09-533e2f989aab"}]},"parent":{"ref":"EID6ee1415d-0175-1000-480f-6999c3ad1c97"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:04:18Z","duration":124,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:04:17Z","duration":963,"status":"PASSED"},{"id":"EID6ee14520-0175-1000-a8e6-30733ff3eb30","testStepResults":{"TestStepResult":{"id":"EID6ee14520-0175-1000-8a69-2bfa8d2d9145","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14860-0175-1000-5684-3c39e742c3f7","parent":{"ref":"EID6ee14520-0175-1000-8a69-2bfa8d2d9145"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee14860-0175-1000-b74c-62a5c68575d6","parent":{"ref":"EID6ee14520-0175-1000-8a69-2bfa8d2d9145"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee14860-0175-1000-1355-1e600c9b2251","parent":{"ref":"EID6ee14520-0175-1000-8a69-2bfa8d2d9145"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee14860-0175-1000-5fc7-731d066ab1fb","parent":{"ref":"EID6ee14520-0175-1000-8a69-2bfa8d2d9145"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID461fcf8b-4084-4038-9b35-99a5e40dd3d4"},{"ref":"EID0e8f95d5-97db-4bc1-b2c3-34f96dfd32c6"},{"ref":"EID764c96b5-b748-4dda-b3b9-db0efb97ae50"}]},"parent":{"ref":"EID6ee14520-0175-1000-a8e6-30733ff3eb30"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:04:18Z","duration":766,"status":"PASSED"}},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:04:18Z","duration":853,"status":"PASSED"},{"id":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6","testStepResults":{"TestStepResult":[{"id":"EID6ee1487f-0175-1000-992e-795e7a65e6da","parent":{"ref":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee1487f-0175-1000-09c3-8f8edb89d1dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee149ee-0175-1000-4b72-0ab2a251c2ff","parent":{"ref":"EID6ee1487f-0175-1000-09c3-8f8edb89d1dc"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee149ee-0175-1000-ec21-b3c50d13bf94","parent":{"ref":"EID6ee1487f-0175-1000-09c3-8f8edb89d1dc"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee149ee-0175-1000-edf1-754a8f6f0c5b","parent":{"ref":"EID6ee1487f-0175-1000-09c3-8f8edb89d1dc"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee149ee-0175-1000-3ecb-fcd825b1c0f4","parent":{"ref":"EID6ee1487f-0175-1000-09c3-8f8edb89d1dc"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID75c6ee92-a905-4b89-94db-1953690708d9"},{"ref":"EID827103ed-980c-469e-88ac-90b27a94caf1"},{"ref":"EID90007a7b-5bf6-4a14-a291-c3a70b6e135c"}]},"parent":{"ref":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:04:19Z","duration":160,"status":"PASSED"},{"id":"EID6ee149ee-0175-1000-d078-e5061920c68e","attachments":{"attachment":{"ref":"EID30604ef5-a0ef-48ad-859d-b4d9eac96cc8"}},"parent":{"ref":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-28T11:04:19Z","duration":1,"status":"PASSED"},{"id":"EID6ee149fc-0175-1000-73f6-bcb232ae0af5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14ae7-0175-1000-243c-818f5f4df968","parent":{"ref":"EID6ee149fc-0175-1000-73f6-bcb232ae0af5"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee14ae7-0175-1000-6dca-6744a6ba6cdf","parent":{"ref":"EID6ee149fc-0175-1000-73f6-bcb232ae0af5"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee14ae7-0175-1000-3c1e-d9af363adbad","parent":{"ref":"EID6ee149fc-0175-1000-73f6-bcb232ae0af5"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee14ae7-0175-1000-eaf6-e003eb2e82a3","parent":{"ref":"EID6ee149fc-0175-1000-73f6-bcb232ae0af5"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-28T11:04:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ab45e34-304d-4737-8994-f2ba2ab30d4b"},{"ref":"EID5cfb8555-aac2-4866-b26e-bc2f309eb2d7"},{"ref":"EID5488de2c-accb-4247-b72d-cff5819bfc7d"}]},"parent":{"ref":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-28T11:04:19Z","duration":129,"status":"PASSED"},{"id":"EID6ee14afa-0175-1000-71a2-2fe05c836618","attachments":{"attachment":{"ref":"EIDeafa9b91-dccf-4991-974d-49cab3a9219e"}},"parent":{"ref":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-28T11:04:19Z","duration":1,"status":"PASSED"},{"id":"EID6ee14b2b-0175-1000-a229-aa943f0c2987","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14ba9-0175-1000-d9c9-7c212dfd92a2","parent":{"ref":"EID6ee14b2b-0175-1000-a229-aa943f0c2987"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14ba9-0175-1000-fbe9-f2c375c41b08","parent":{"ref":"EID6ee14b2b-0175-1000-a229-aa943f0c2987"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14ba9-0175-1000-a427-3707f5e9cc03","parent":{"ref":"EID6ee14b2b-0175-1000-a229-aa943f0c2987"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14ba9-0175-1000-db18-9fb832eed1fb","parent":{"ref":"EID6ee14b2b-0175-1000-a229-aa943f0c2987"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7126d721-bd3d-4c34-a01b-96bf04bf1524"},{"ref":"EID231d2e26-1408-4bbb-8c58-dd74b109d254"},{"ref":"EID3e03a38e-fca6-42f8-a794-06edc55e9a2b"}]},"parent":{"ref":"EID6ee14875-0175-1000-bfc5-42275bd5c8f6"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-28T11:04:20Z","duration":37,"status":"PASSED"}]},"parent":{"ref":"EID6ee12c9d-0175-1000-c335-f704c69a75a9"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:04:19Z","duration":820,"status":"PASSED"}]},"parent":{"ref":"EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:04:12Z","duration":7949,"status":"PASSED_MANUAL"},{"id":"EID6ee14baa-0175-1000-1ba5-421ce43c5178","testCaseResults":{"TestCaseResult":[{"id":"EID6ee14baa-0175-1000-ed81-e66b9ccc1df4","testStepResults":{"TestStepResult":[{"id":"EID6ee14baa-0175-1000-dd72-8163d53292c7","parent":{"ref":"EID6ee14baa-0175-1000-ed81-e66b9ccc1df4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:04:20Z","duration":34,"status":"PASSED"},{"id":"EID6ee14bcc-0175-1000-22d1-0f585f9e08ec","parent":{"ref":"EID6ee14baa-0175-1000-ed81-e66b9ccc1df4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:04:20Z","duration":765,"status":"PASSED"},{"id":"EID6ee14bcc-0175-1000-dc37-fa3aac13c880","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14d07-0175-1000-b00e-63705619f31d","parent":{"ref":"EID6ee14bcc-0175-1000-dc37-fa3aac13c880"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14d07-0175-1000-2580-8b659a2c4c84","parent":{"ref":"EID6ee14bcc-0175-1000-dc37-fa3aac13c880"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14d07-0175-1000-2bda-744f79750930","parent":{"ref":"EID6ee14bcc-0175-1000-dc37-fa3aac13c880"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7a7e19d4-3f76-4688-ab61-e025f93bfb2e"},{"ref":"EIDb45a5ce6-159a-40e3-9924-79ad1f3fab50"},{"ref":"EIDa7d666d4-c569-4619-a2a0-55016d76a080"}]},"parent":{"ref":"EID6ee14baa-0175-1000-ed81-e66b9ccc1df4"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:04:20Z","duration":208,"status":"PASSED"},{"id":"EID6ee14d07-0175-1000-6a5b-9267ae0776cb","attachments":{"attachment":{"ref":"EID78e0cb32-ad0c-4e36-ab66-16186e39d0a6"}},"parent":{"ref":"EID6ee14baa-0175-1000-ed81-e66b9ccc1df4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14d12-0175-1000-0319-33b27c3f789a","parent":{"ref":"EID6ee14baa-0175-1000-ed81-e66b9ccc1df4"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:04:20Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:04:20Z","duration":385,"status":"PASSED"},{"id":"EID6ee14d2b-0175-1000-e3f4-1213dce40261","testStepResults":{"TestStepResult":[{"id":"EID6ee14d2b-0175-1000-a9f2-8e29e8940643","parent":{"ref":"EID6ee14d2b-0175-1000-e3f4-1213dce40261"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:04:20Z","duration":100,"status":"PASSED"},{"id":"EID6ee14d2b-0175-1000-065b-2e620d9b3eb0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14dd2-0175-1000-5935-7d0cea57eb68","parent":{"ref":"EID6ee14d2b-0175-1000-065b-2e620d9b3eb0"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14dd2-0175-1000-585e-1185b0f39105","parent":{"ref":"EID6ee14d2b-0175-1000-065b-2e620d9b3eb0"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14dd2-0175-1000-e785-c3ad63a11cc1","parent":{"ref":"EID6ee14d2b-0175-1000-065b-2e620d9b3eb0"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14dd2-0175-1000-d42c-8e3e1bdb0a4c","parent":{"ref":"EID6ee14d2b-0175-1000-065b-2e620d9b3eb0"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14dd2-0175-1000-df8b-cbcc32175fe5","parent":{"ref":"EID6ee14d2b-0175-1000-065b-2e620d9b3eb0"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2f58a1bb-2b5a-4e3b-a4c6-247a66282fea"},{"ref":"EIDb8f25626-102a-4223-b850-b6f9f85590e4"},{"ref":"EIDc755edc7-4ca9-4279-a6d2-77a84024cf66"}]},"parent":{"ref":"EID6ee14d2b-0175-1000-e3f4-1213dce40261"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:04:20Z","duration":66,"status":"PASSED"}]},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:04:20Z","duration":175,"status":"PASSED"},{"id":"EID6ee14ddb-0175-1000-1b17-136b1c8f151e","testStepResults":{"TestStepResult":[{"id":"EID6ee14ddb-0175-1000-8be1-554dfa86d2ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14e31-0175-1000-0bff-c4e360827ffd","parent":{"ref":"EID6ee14ddb-0175-1000-8be1-554dfa86d2ed"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14e31-0175-1000-75ec-ed2f9a20ca58","parent":{"ref":"EID6ee14ddb-0175-1000-8be1-554dfa86d2ed"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee14e31-0175-1000-8983-cd84f62367de","parent":{"ref":"EID6ee14ddb-0175-1000-8be1-554dfa86d2ed"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:04:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5b2805c-9f07-4cf4-8cbf-6fdbd98b7f17"},{"ref":"EID884b5ea3-a4a5-4e55-884a-7e5b970d3fba"},{"ref":"EID9abbe948-ae45-4d03-b4a4-7b441481777e"}]},"parent":{"ref":"EID6ee14ddb-0175-1000-1b17-136b1c8f151e"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:04:20Z","duration":34,"status":"PASSED"},{"id":"EID6ee14e3a-0175-1000-2189-5fb8dd52292e","attachments":{"attachment":{"ref":"EIDa0833efb-8db8-4717-92a3-0e5a371aa4a2"}},"parent":{"ref":"EID6ee14ddb-0175-1000-1b17-136b1c8f151e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:04:20Z","duration":1,"status":"PASSED"},{"id":"EID6ee14e49-0175-1000-5f9f-3e8d07b6c6e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee14f34-0175-1000-7375-99ee10e49767","parent":{"ref":"EID6ee14e49-0175-1000-5f9f-3e8d07b6c6e7"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee14f34-0175-1000-c1df-10286397ab78","parent":{"ref":"EID6ee14e49-0175-1000-5f9f-3e8d07b6c6e7"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee14f34-0175-1000-af5c-ae49cd923a8c","parent":{"ref":"EID6ee14e49-0175-1000-5f9f-3e8d07b6c6e7"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee14f34-0175-1000-205a-174a4e845b6f","parent":{"ref":"EID6ee14e49-0175-1000-5f9f-3e8d07b6c6e7"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee14f34-0175-1000-cb0c-f0ae4689d49e","parent":{"ref":"EID6ee14e49-0175-1000-5f9f-3e8d07b6c6e7"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb604052f-c747-45cc-9939-5d97051446d4"},{"ref":"EID3ec208c8-7eaf-4905-aa2f-8d0958552728"},{"ref":"EID019d2fb3-3211-4ec7-adc4-f63e8f879da2"}]},"parent":{"ref":"EID6ee14ddb-0175-1000-1b17-136b1c8f151e"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:04:20Z","duration":144,"status":"PASSED"}]},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:04:20Z","duration":345,"status":"PASSED"},{"id":"EID6ee14f3f-0175-1000-7be3-04bec683e7a8","testStepResults":{"TestStepResult":[{"id":"EID6ee14f3f-0175-1000-a270-5d95d2db6d37","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1500f-0175-1000-ae72-c17fdc92f3c2","parent":{"ref":"EID6ee14f3f-0175-1000-a270-5d95d2db6d37"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1500f-0175-1000-8247-c08d2ea3e8ef","parent":{"ref":"EID6ee14f3f-0175-1000-a270-5d95d2db6d37"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1500f-0175-1000-9ceb-bc4738eeb628","parent":{"ref":"EID6ee14f3f-0175-1000-a270-5d95d2db6d37"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1500f-0175-1000-59cd-4de27d503301","parent":{"ref":"EID6ee14f3f-0175-1000-a270-5d95d2db6d37"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb321b99e-016f-4c58-a00c-b139b1ac1a2c"},{"ref":"EID31f8d8d1-d3fc-475f-b1d0-5ad30111e5e4"},{"ref":"EID156d642f-f4e7-42c1-8c7d-cc159b99f6c4"}]},"parent":{"ref":"EID6ee14f3f-0175-1000-7be3-04bec683e7a8"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:04:21Z","duration":113,"status":"PASSED"},{"id":"EID6ee15010-0175-1000-204b-fc6495c1744f","attachments":{"attachment":{"ref":"EIDcc9dee56-aa99-489d-97f6-92472bb0a46f"}},"parent":{"ref":"EID6ee14f3f-0175-1000-7be3-04bec683e7a8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1501c-0175-1000-747a-a39bc0b6dd2d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15089-0175-1000-df6d-0dd2de63ff3c","parent":{"ref":"EID6ee1501c-0175-1000-747a-a39bc0b6dd2d"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee15089-0175-1000-e079-65a9bb5159df","parent":{"ref":"EID6ee1501c-0175-1000-747a-a39bc0b6dd2d"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID157ae48a-07a3-422b-980e-199e9034702c"},{"ref":"EIDf76518c5-9b88-4798-8f8f-607ac6b30f5f"}]},"parent":{"ref":"EID6ee14f3f-0175-1000-7be3-04bec683e7a8"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:04:21Z","duration":104,"status":"PASSED"},{"id":"EID6ee15089-0175-1000-dcce-1a86529bf449","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1519a-0175-1000-0b04-e95deccc3490","parent":{"ref":"EID6ee15089-0175-1000-dcce-1a86529bf449"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1519a-0175-1000-46d5-c5063576c627","parent":{"ref":"EID6ee15089-0175-1000-dcce-1a86529bf449"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1519a-0175-1000-c576-a41c09b7ec6b","parent":{"ref":"EID6ee15089-0175-1000-dcce-1a86529bf449"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee1519a-0175-1000-19be-98411addd226","messages":{"message":{"ref":"TR.manual.checkLengthOfDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee15089-0175-1000-dcce-1a86529bf449"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID9f16872c-454a-4032-b6bc-6f65904a4e6f"},{"ref":"EID94e5ce89-2ce9-4f82-aeb9-75b28e4bffcd"},{"ref":"EIDf318e935-0ae1-43bd-8edc-85f88b67f59e"}]},"parent":{"ref":"EID6ee14f3f-0175-1000-7be3-04bec683e7a8"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:04:21Z","duration":198,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:04:21Z","duration":603,"status":"PASSED_MANUAL"},{"id":"EID6ee1519a-0175-1000-eb1e-514e5f9a5534","testStepResults":{"TestStepResult":{"id":"EID6ee1519a-0175-1000-623a-209c460005b3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee152b6-0175-1000-8ca2-0399903aa265","parent":{"ref":"EID6ee1519a-0175-1000-623a-209c460005b3"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee152b6-0175-1000-cc04-0249f171d822","parent":{"ref":"EID6ee1519a-0175-1000-623a-209c460005b3"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee152b6-0175-1000-98b1-9556e0008099","parent":{"ref":"EID6ee1519a-0175-1000-623a-209c460005b3"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:04:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb412fcd3-ff13-4116-9682-7cb218af2aa0"},{"ref":"EID9a03ecd4-1287-47e7-a1d7-6737c59f8230"},{"ref":"EIDb2396de5-23c1-4faa-8fb1-035b3c67416d"}]},"parent":{"ref":"EID6ee1519a-0175-1000-eb1e-514e5f9a5534"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:04:21Z","duration":134,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:04:21Z","duration":284,"status":"PASSED"},{"id":"EID6ee152b7-0175-1000-915f-a0e100ac9cae","testStepResults":{"TestStepResult":{"id":"EID6ee152b7-0175-1000-e69c-2c3b8de0e12d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee153ac-0175-1000-9d10-2c29fda270bd","parent":{"ref":"EID6ee152b7-0175-1000-e69c-2c3b8de0e12d"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee153ac-0175-1000-b50d-c459c5d95c24","parent":{"ref":"EID6ee152b7-0175-1000-e69c-2c3b8de0e12d"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee153ac-0175-1000-9904-263864ac4a67","parent":{"ref":"EID6ee152b7-0175-1000-e69c-2c3b8de0e12d"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca3a14a5-2bdb-4a20-a0a7-87c57a2d8546"},{"ref":"EIDebab61d7-c47f-40d5-a805-a8eff21ac49e"},{"ref":"EIDcbf936ea-c18e-49a6-8341-0b1e7b5e4f18"}]},"parent":{"ref":"EID6ee152b7-0175-1000-915f-a0e100ac9cae"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:04:21Z","duration":142,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:04:21Z","duration":246,"status":"PASSED"},{"id":"EID6ee153ad-0175-1000-b925-f64c53a54c4b","testStepResults":{"TestStepResult":{"id":"EID6ee153ad-0175-1000-e5ea-b6bae16beb39","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1548b-0175-1000-cf78-6cac4866099d","parent":{"ref":"EID6ee153ad-0175-1000-e5ea-b6bae16beb39"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee1548b-0175-1000-d47a-5f950893bb35","parent":{"ref":"EID6ee153ad-0175-1000-e5ea-b6bae16beb39"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee1548b-0175-1000-049a-bcc7eda9e5e8","parent":{"ref":"EID6ee153ad-0175-1000-e5ea-b6bae16beb39"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee1548b-0175-1000-8595-e6ad5922d01d","parent":{"ref":"EID6ee153ad-0175-1000-e5ea-b6bae16beb39"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee1548b-0175-1000-b4ea-969528d3cfb0","parent":{"ref":"EID6ee153ad-0175-1000-e5ea-b6bae16beb39"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID950cbcce-608d-478b-bfe5-b13c61059fc1"},{"ref":"EID1684deda-6ed5-4adf-8489-21afc867ff09"},{"ref":"EIDc70d4d07-97ad-433f-b0d6-fafd528421be"}]},"parent":{"ref":"EID6ee153ad-0175-1000-b925-f64c53a54c4b"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:04:22Z","duration":108,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:04:22Z","duration":222,"status":"PASSED"},{"id":"EID6ee1548c-0175-1000-3bf5-890373c3a4f0","testStepResults":{"TestStepResult":{"id":"EID6ee1548c-0175-1000-de72-7fe2859fbf52","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15515-0175-1000-a5c7-cb04d4e045b4","parent":{"ref":"EID6ee1548c-0175-1000-de72-7fe2859fbf52"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee15515-0175-1000-cb82-8ed08b9e526c","parent":{"ref":"EID6ee1548c-0175-1000-de72-7fe2859fbf52"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee15515-0175-1000-481e-7a204de6f376","parent":{"ref":"EID6ee1548c-0175-1000-de72-7fe2859fbf52"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID096aa9f9-78a3-43c9-a8cc-08e035b2e4db"},{"ref":"EID8767a96c-8a52-4549-a490-42c710ae2cf1"},{"ref":"EID0dd88679-9a30-4b50-84db-9fa8a1148686"}]},"parent":{"ref":"EID6ee1548c-0175-1000-3bf5-890373c3a4f0"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:04:22Z","duration":78,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:04:22Z","duration":137,"status":"PASSED"},{"id":"EID6ee15515-0175-1000-0bf5-d7847b44397c","testStepResults":{"TestStepResult":{"id":"EID6ee15515-0175-1000-2631-b3989866848f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1558c-0175-1000-4d74-8112a9d05bc6","parent":{"ref":"EID6ee15515-0175-1000-2631-b3989866848f"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee1558c-0175-1000-74cc-049bca5a0528","parent":{"ref":"EID6ee15515-0175-1000-2631-b3989866848f"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee1558c-0175-1000-438d-b5c52a15d57b","parent":{"ref":"EID6ee15515-0175-1000-2631-b3989866848f"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9798d1be-7691-4971-9b00-b872a15168f2"},{"ref":"EID08f5185f-3b0c-4171-b762-861f7310b2df"},{"ref":"EIDb4476642-4d75-4b45-a785-68253fcb84c0"}]},"parent":{"ref":"EID6ee15515-0175-1000-0bf5-d7847b44397c"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:04:22Z","duration":51,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:04:22Z","duration":119,"status":"PASSED"},{"id":"EID6ee1558c-0175-1000-73cf-f795126f5bff","testStepResults":{"TestStepResult":{"id":"EID6ee1558c-0175-1000-2683-e27e61653417","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee155fa-0175-1000-c5f8-a2bddd8cf76a","parent":{"ref":"EID6ee1558c-0175-1000-2683-e27e61653417"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee155fa-0175-1000-be58-f97555a2950a","parent":{"ref":"EID6ee1558c-0175-1000-2683-e27e61653417"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee155fa-0175-1000-06fc-0bf78896c69c","parent":{"ref":"EID6ee1558c-0175-1000-2683-e27e61653417"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee155fa-0175-1000-ce4f-ac29924c8a9a","parent":{"ref":"EID6ee1558c-0175-1000-2683-e27e61653417"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:04:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42e79717-e856-4744-821e-f7de9405bc6c"},{"ref":"EID2329e841-7290-4180-9aa6-9fe80e22f96b"},{"ref":"EIDd4839382-ba48-432a-a96c-7e6fa6984186"}]},"parent":{"ref":"EID6ee1558c-0175-1000-73cf-f795126f5bff"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:04:22Z","duration":42,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:04:22Z","duration":110,"status":"PASSED"},{"id":"EID6ee155fa-0175-1000-3b4f-75debab30326","testStepResults":{"TestStepResult":{"id":"EID6ee155fa-0175-1000-8ef1-d0974011eb07","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee156db-0175-1000-a03a-ea17e9538ec1","parent":{"ref":"EID6ee155fa-0175-1000-8ef1-d0974011eb07"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee156db-0175-1000-b8fb-65a4a3d2edef","parent":{"ref":"EID6ee155fa-0175-1000-8ef1-d0974011eb07"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee156db-0175-1000-8fea-94ebd050e94a","parent":{"ref":"EID6ee155fa-0175-1000-8ef1-d0974011eb07"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee156db-0175-1000-258c-eae080cc3bf4","parent":{"ref":"EID6ee155fa-0175-1000-8ef1-d0974011eb07"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d2222e5-cf90-403e-94c1-8d81eba4a8e8"},{"ref":"EIDc6ca32bc-e42a-42da-9278-1eab3b90e9f6"},{"ref":"EID48cbdc26-e5cf-4c26-b70d-81767729c522"}]},"parent":{"ref":"EID6ee155fa-0175-1000-3b4f-75debab30326"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:04:22Z","duration":116,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:04:22Z","duration":235,"status":"PASSED"},{"id":"EID6ee156e5-0175-1000-a101-c61991b0030d","testStepResults":{"TestStepResult":[{"id":"EID6ee156e5-0175-1000-defe-ff6e8470d49b","parent":{"ref":"EID6ee156e5-0175-1000-a101-c61991b0030d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee156e5-0175-1000-fd1c-aae7fa7c6f45","parent":{"ref":"EID6ee156e5-0175-1000-a101-c61991b0030d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:04:23Z","duration":148,"status":"PASSED"},{"id":"EID6ee156e5-0175-1000-84dc-7c3dcb61ee77","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15827-0175-1000-8aeb-157b18b4bae3","parent":{"ref":"EID6ee156e5-0175-1000-84dc-7c3dcb61ee77"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee15827-0175-1000-6c27-7d7bf4423586","parent":{"ref":"EID6ee156e5-0175-1000-84dc-7c3dcb61ee77"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee15827-0175-1000-f85f-e567e9deeb8e","parent":{"ref":"EID6ee156e5-0175-1000-84dc-7c3dcb61ee77"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee15827-0175-1000-ee61-0f4bf9140bda","parent":{"ref":"EID6ee156e5-0175-1000-84dc-7c3dcb61ee77"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3cb7ab63-de60-44fb-ae92-8a4817b34035"},{"ref":"EIDc6e5907e-d91b-49b3-9c0d-d1f45f253eae"},{"ref":"EIDf73060bd-a882-43f6-8bd9-ce3c460b37ab"}]},"parent":{"ref":"EID6ee156e5-0175-1000-a101-c61991b0030d"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:04:23Z","duration":93,"status":"PASSED"},{"id":"EID6ee15827-0175-1000-c515-e589beb76aeb","attachments":{"attachment":{"ref":"EIDd0896923-081c-42e1-9b44-92620e80090a"}},"parent":{"ref":"EID6ee156e5-0175-1000-a101-c61991b0030d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:04:23Z","duration":1,"status":"PASSED"},{"id":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee158ea-0175-1000-0dc4-3314cecce21d","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158ea-0175-1000-3812-27ded1a0708b","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158ea-0175-1000-44a9-81eaf2ffc98f","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158ea-0175-1000-b1ae-4678a5da46ab","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158ea-0175-1000-0976-d22d3004b0f0","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158ea-0175-1000-9088-b57c42338c9d","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158ea-0175-1000-9ab7-6b157e74837f","parent":{"ref":"EID6ee15834-0175-1000-dd12-71b5f0a8b07b"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2e524a72-c56c-48e8-91c1-fb0bdd3644f7"},{"ref":"EIDa864fcdb-461b-4c34-968e-a23535fc5f9c"},{"ref":"EID57bc29fc-0e28-48b0-9d66-5654d2ef0657"}]},"parent":{"ref":"EID6ee156e5-0175-1000-a101-c61991b0030d"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:04:23Z","duration":47,"status":"PASSED"}]},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:04:23Z","duration":525,"status":"PASSED"},{"id":"EID6ee158f3-0175-1000-6289-5915615ea32a","testStepResults":{"TestStepResult":[{"id":"EID6ee158f3-0175-1000-9c3d-2f0374e64c88","parent":{"ref":"EID6ee158f3-0175-1000-6289-5915615ea32a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee158f3-0175-1000-3215-55deeba1b446","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee159df-0175-1000-36f5-9cd54642402d","parent":{"ref":"EID6ee158f3-0175-1000-3215-55deeba1b446"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee159df-0175-1000-75f9-e44f9ebcf371","parent":{"ref":"EID6ee158f3-0175-1000-3215-55deeba1b446"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee159df-0175-1000-87fd-127b13360c69","parent":{"ref":"EID6ee158f3-0175-1000-3215-55deeba1b446"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee159df-0175-1000-686c-6775334a005f","parent":{"ref":"EID6ee158f3-0175-1000-3215-55deeba1b446"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:04:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5381ea55-47a8-4f7f-9f47-75a4d833a040"},{"ref":"EIDd32b469d-a261-40ad-9c18-d55273ff026b"},{"ref":"EID2f01fd83-38f6-4d6c-bcdc-9a0b87d59941"}]},"parent":{"ref":"EID6ee158f3-0175-1000-6289-5915615ea32a"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:04:23Z","duration":142,"status":"PASSED"},{"id":"EID6ee159e0-0175-1000-640b-24c945aeb652","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee159f5-0175-1000-49e4-f0fc824e2ec6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15b13-0175-1000-654f-747bfe5dd883","parent":{"ref":"EID6ee159f5-0175-1000-49e4-f0fc824e2ec6"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15b13-0175-1000-2086-02fe0c109cbb","parent":{"ref":"EID6ee159f5-0175-1000-49e4-f0fc824e2ec6"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15b13-0175-1000-2bb0-c7e6ff9a5b7c","parent":{"ref":"EID6ee159f5-0175-1000-49e4-f0fc824e2ec6"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeafdbb1f-da16-49b2-97dc-457cfd26ca24"},{"ref":"EID4b8bc62c-170c-4a1c-b4ab-7e5571e485bc"},{"ref":"EID91108f2c-09c0-4907-9fdc-fe448a6b52cf"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:04:23Z","duration":151,"status":"PASSED"},{"id":"EID6ee15b1d-0175-1000-a9cf-870af6a023d4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15c13-0175-1000-aafd-cec82eeb2ca5","parent":{"ref":"EID6ee15b1d-0175-1000-a9cf-870af6a023d4"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15c13-0175-1000-6267-c1758991870e","parent":{"ref":"EID6ee15b1d-0175-1000-a9cf-870af6a023d4"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15c13-0175-1000-c1e9-1a7c9fab64f3","parent":{"ref":"EID6ee15b1d-0175-1000-a9cf-870af6a023d4"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd4cd3c96-d1b5-45b9-8772-f1bbb8cba1ef"},{"ref":"EID64297270-8a01-45bc-ac0f-874910167003"},{"ref":"EID99f5e321-73d8-4eb6-aed7-97f5e781da5d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:04:24Z","duration":149,"status":"PASSED"},{"id":"EID6ee15c14-0175-1000-3b4c-a34789605f10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15d01-0175-1000-864b-eacb0928998d","parent":{"ref":"EID6ee15c14-0175-1000-3b4c-a34789605f10"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15d01-0175-1000-ba32-9595c2675062","parent":{"ref":"EID6ee15c14-0175-1000-3b4c-a34789605f10"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15d01-0175-1000-58aa-a669ef485f33","parent":{"ref":"EID6ee15c14-0175-1000-3b4c-a34789605f10"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc80bcf02-e033-4994-a17c-6e566359edf2"},{"ref":"EID68d41654-b9f6-461d-a091-44a30d914bc9"},{"ref":"EID555e4514-3a2e-4dcd-8428-0217f99723cf"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:04:24Z","duration":147,"status":"PASSED"}]},"parent":{"ref":"EID6ee158f3-0175-1000-6289-5915615ea32a"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:04:23Z","duration":802,"status":"PASSED"},{"id":"EID6ee15d02-0175-1000-6968-bae16ddc4fda","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15d78-0175-1000-2aac-208e80bc879d","parent":{"ref":"EID6ee15d02-0175-1000-6968-bae16ddc4fda"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15d78-0175-1000-57d1-ebe24c44bee7","parent":{"ref":"EID6ee15d02-0175-1000-6968-bae16ddc4fda"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15d78-0175-1000-9f69-08e65289d067","parent":{"ref":"EID6ee15d02-0175-1000-6968-bae16ddc4fda"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15d78-0175-1000-a248-d1f620d8b428","parent":{"ref":"EID6ee15d02-0175-1000-6968-bae16ddc4fda"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID56959cd5-4fb0-41cc-9e8b-c9a293928c23"},{"ref":"EIDfd1ebaf9-1635-4c4f-9e08-851cee7940fd"},{"ref":"EIDe695df34-8181-4e6e-8bb3-17781550016d"}]},"parent":{"ref":"EID6ee158f3-0175-1000-6289-5915615ea32a"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:04:24Z","duration":36,"status":"PASSED"}]},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:04:23Z","duration":1157,"status":"PASSED"},{"id":"EID6ee15d78-0175-1000-ef40-a6cc01558132","testStepResults":{"TestStepResult":{"id":"EID6ee15d78-0175-1000-27ef-3a7d00bf7380","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15dfb-0175-1000-73e9-7df37beee12d","parent":{"ref":"EID6ee15d78-0175-1000-27ef-3a7d00bf7380"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15dfb-0175-1000-c185-9baf654e87fc","parent":{"ref":"EID6ee15d78-0175-1000-27ef-3a7d00bf7380"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15dfb-0175-1000-c57d-bad52a3fe4b7","parent":{"ref":"EID6ee15d78-0175-1000-27ef-3a7d00bf7380"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15dfb-0175-1000-8fbc-82cf5da867f0","parent":{"ref":"EID6ee15d78-0175-1000-27ef-3a7d00bf7380"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6d5f5f08-3438-4889-b357-0fae05b61285"},{"ref":"EIDd2b5b26d-954f-4319-a2e1-3e2383cec98d"},{"ref":"EIDbc7b11bc-a789-4e2b-abdc-1aa28582a7e4"}]},"parent":{"ref":"EID6ee15d78-0175-1000-ef40-a6cc01558132"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:04:24Z","duration":40,"status":"PASSED"}},"parent":{"ref":"EID6ee14baa-0175-1000-1ba5-421ce43c5178"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:04:24Z","duration":131,"status":"PASSED"}]},"parent":{"ref":"EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:04:20Z","duration":4691,"status":"PASSED_MANUAL"},{"id":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825","testCaseResults":{"TestCaseResult":[{"id":"EID6ee15dfd-0175-1000-8372-319fab5eb761","testStepResults":{"TestStepResult":[{"id":"EID6ee15dfd-0175-1000-42b4-a8df7bc0d2c3","parent":{"ref":"EID6ee15dfd-0175-1000-8372-319fab5eb761"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:04:24Z","duration":586,"status":"PASSED"},{"id":"EID6ee15dfd-0175-1000-4328-1f17c50bcca2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15e9d-0175-1000-0300-4f1f5bc4e619","parent":{"ref":"EID6ee15dfd-0175-1000-4328-1f17c50bcca2"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15e9d-0175-1000-cd83-4f5302ed5b41","parent":{"ref":"EID6ee15dfd-0175-1000-4328-1f17c50bcca2"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee15e9d-0175-1000-76d5-b233c26bbd6e","parent":{"ref":"EID6ee15dfd-0175-1000-4328-1f17c50bcca2"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:04:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b283689-bf6a-492c-ba46-9eb2a7cf8e43"},{"ref":"EID45df9819-f73f-4d56-9756-7c48b5b2f3fa"},{"ref":"EID2ed476b5-fc73-4487-a572-e738e15b5e24"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-8372-319fab5eb761"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:04:24Z","duration":60,"status":"PASSED"},{"id":"EID6ee15e9d-0175-1000-6e65-b6ca55c46923","attachments":{"attachment":{"ref":"EID9b5f82f3-854d-419b-b47e-4f7a88f37b2d"}},"parent":{"ref":"EID6ee15dfd-0175-1000-8372-319fab5eb761"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:04:24Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:04:24Z","duration":172,"status":"PASSED"},{"id":"EID6ee15ea9-0175-1000-4312-497180b94191","testStepResults":{"TestStepResult":[{"id":"EID6ee15ea9-0175-1000-aa5e-1cc465dcf1ed","parent":{"ref":"EID6ee15ea9-0175-1000-4312-497180b94191"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":586,"status":"PASSED"},{"id":"EID6ee15ea9-0175-1000-d26a-1bb009a194d6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee15f80-0175-1000-3e0f-310c0961dca5","parent":{"ref":"EID6ee15ea9-0175-1000-d26a-1bb009a194d6"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee15f80-0175-1000-d108-ae1aaf913b5f","parent":{"ref":"EID6ee15ea9-0175-1000-d26a-1bb009a194d6"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee15f80-0175-1000-bc05-c8e2bc482799","parent":{"ref":"EID6ee15ea9-0175-1000-d26a-1bb009a194d6"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee15f80-0175-1000-b351-8c46c919039c","parent":{"ref":"EID6ee15ea9-0175-1000-d26a-1bb009a194d6"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3906d24-8d10-4729-a8d6-9a3ddca96ba6"},{"ref":"EID80e1e253-c2b3-4003-9d8e-f6f0b263cfc7"},{"ref":"EID1913b19b-fade-4c5a-bbc2-ba5286c4ccc9"}]},"parent":{"ref":"EID6ee15ea9-0175-1000-4312-497180b94191"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:04:25Z","duration":124,"status":"PASSED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:04:25Z","duration":215,"status":"PASSED"},{"id":"EID6ee15f80-0175-1000-6e81-773863666e7f","testStepResults":{"TestStepResult":[{"id":"EID6ee15f80-0175-1000-ca98-bd863e517314","parent":{"ref":"EID6ee15f80-0175-1000-6e81-773863666e7f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":586,"status":"PASSED"},{"id":"EID6ee15f80-0175-1000-1b31-f415c5fc2edd","parent":{"ref":"EID6ee15f80-0175-1000-6e81-773863666e7f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee160b0-0175-1000-001f-075d0f3e6eaa","parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee160b0-0175-1000-bf10-bdf293d27b88","parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee160b0-0175-1000-b217-eab47ab5a935","parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee160b0-0175-1000-bd1f-6fec5c94d159","parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee160b0-0175-1000-7962-56bd54932646","parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee160b0-0175-1000-70bb-61f64b2a7f56","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:04:25Z","duration":2,"status":"FAILED"},{"id":"EID6ee160b2-0175-1000-e030-af8b60e21f82","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee15f80-0175-1000-4f5c-bb7c9f81bb64"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1b0cce3c-8329-42e8-a594-efbd9dc4bfe2"},{"ref":"EID5369ce0e-486b-4d39-85d7-bd0a0fad80a1"},{"ref":"EID6a10b331-f148-4c84-845a-5aa4d666122b"}]},"parent":{"ref":"EID6ee15f80-0175-1000-6e81-773863666e7f"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:04:25Z","duration":93,"status":"FAILED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:04:25Z","duration":307,"status":"FAILED"},{"id":"EID6ee160b3-0175-1000-cc93-cdc255242aa6","testStepResults":{"TestStepResult":[{"id":"EID6ee160b3-0175-1000-92ea-044fdbdb5813","parent":{"ref":"EID6ee160b3-0175-1000-cc93-cdc255242aa6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":586,"status":"PASSED"},{"id":"EID6ee160b3-0175-1000-cfd9-7ef4a7f6f55d","parent":{"ref":"EID6ee160b3-0175-1000-cc93-cdc255242aa6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee16178-0175-1000-3a68-f53ffbfaf8fe","parent":{"ref":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee16178-0175-1000-c4e8-db3fd74b50f9","parent":{"ref":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee16178-0175-1000-4dac-13adf1786540","parent":{"ref":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee16178-0175-1000-554f-2e5819376b6e","parent":{"ref":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee16178-0175-1000-8a16-f13b82a14715","parent":{"ref":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"PASSED"},{"id":"EID6ee16178-0175-1000-f0a3-a56b46868880","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee160b3-0175-1000-9bc5-d659d0e80a88"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:04:25Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID08692812-ddbd-43ba-9843-86db34db9f58"},{"ref":"EID3d3ab3a1-d120-463f-b191-8a9ee069747b"},{"ref":"EIDc3e1b7db-7af8-4d2e-80e4-b688d5f26bc0"}]},"parent":{"ref":"EID6ee160b3-0175-1000-cc93-cdc255242aa6"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:04:25Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:04:25Z","duration":197,"status":"FAILED"},{"id":"EID6ee16181-0175-1000-3b48-9eae56b23be7","testStepResults":{"TestStepResult":[{"id":"EID6ee16181-0175-1000-97eb-3caafda4f440","parent":{"ref":"EID6ee16181-0175-1000-3b48-9eae56b23be7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":586,"status":"PASSED"},{"id":"EID6ee16181-0175-1000-7c11-f59fd5549524","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID5b9b92dd-cb9e-4cca-9236-85d679ffcfc7"},{"ref":"EID35667e14-4868-4aa1-8772-35bb3ee3654b"},{"ref":"EID8dc32529-ae32-4499-b0f6-ad5f40bcc0dd"},{"ref":"EIDd912f946-8b29-49b4-ae92-f4f9e4ce4bd2"},{"ref":"EID71279b5e-50b4-4759-9fc3-41a928731d22"},{"ref":"EIDbb02504b-eedb-43b9-b519-a173af36d060"},{"ref":"EID0267576d-7bd6-402a-9232-618bb99b8946"},{"ref":"EIDe92abe35-3919-47bf-a5fd-2c8bb688c218"},{"ref":"EID00959181-76db-4c3a-ad3d-aee33cd289c0"},{"ref":"EIDbd90ae50-357c-488e-9908-0cf980049018"},{"ref":"EID217a3c5c-b0ac-46a0-870f-7ee9b4c71e40"},{"ref":"EIDf6c0a848-30e2-411f-84b6-6e6aa5da3225"},{"ref":"EID426b2164-c9f5-4137-b967-202b91ece569"},{"ref":"EIDf8edcc85-3b63-4d45-81de-1d4182273437"},{"ref":"EIDe6c073d4-0d88-4c12-b491-042cc90cb911"}]},"parent":{"ref":"EID6ee16181-0175-1000-3b48-9eae56b23be7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:04:25Z","duration":682,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:04:25Z","duration":1029,"status":"SKIPPED"},{"id":"EID6ee16586-0175-1000-4be6-cde4b5b4d158","testStepResults":{"TestStepResult":[{"id":"EID6ee16586-0175-1000-e531-c4da5200affc","parent":{"ref":"EID6ee16586-0175-1000-4be6-cde4b5b4d158"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:04:26Z","duration":586,"status":"PASSED"},{"id":"EID6ee16586-0175-1000-c17c-86f21ad1c070","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee16647-0175-1000-a6b6-ede79dc78569","parent":{"ref":"EID6ee16586-0175-1000-c17c-86f21ad1c070"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:04:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee16647-0175-1000-c79d-d3728add19d3","parent":{"ref":"EID6ee16586-0175-1000-c17c-86f21ad1c070"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:04:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee16647-0175-1000-81ee-47ea1ed6b66f","parent":{"ref":"EID6ee16586-0175-1000-c17c-86f21ad1c070"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:04:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee16647-0175-1000-3435-adbc4ca19d51","messages":{"message":{"ref":"TR.incorrectFeedSelfReference","translationArguments":{"argument":[{"token":"actual","$":"https://www.nationaalgeoregister.nl/geonetwork/opensearch/dut/d2a05dd5-98e8-4f9c-8ba2-7fe2d5c7c507/OpenSearchDescription.xml"},{"token":"element","$":"/os:OpenSearchDescription/os:Url"},{"token":"expected","$":"https://www.nationaalgeoregister.nl:443/geonetwork/opensearch/dut/d2a05dd5-98e8-4f9c-8ba2-7fe2d5c7c507/OpenSearchDescription.xml"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template"}]}}},"parent":{"ref":"EID6ee16586-0175-1000-c17c-86f21ad1c070"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:04:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID12a5e753-427c-47e0-ab01-a3ad04e3d6c5"},{"ref":"EIDdf03033d-fa51-4fe1-8e4f-863a9f255701"},{"ref":"EID676e8482-7462-4fe7-af81-87debb80a257"}]},"parent":{"ref":"EID6ee16586-0175-1000-4be6-cde4b5b4d158"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:04:26Z","duration":109,"status":"FAILED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:04:26Z","duration":205,"status":"FAILED"},{"id":"EID6ee16653-0175-1000-31cb-5ba8187a98a5","testStepResults":{"TestStepResult":[{"id":"EID6ee16653-0175-1000-65f6-8b0faea7bc66","parent":{"ref":"EID6ee16653-0175-1000-31cb-5ba8187a98a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:04:26Z","duration":586,"status":"PASSED"},{"id":"EID6ee16653-0175-1000-d718-4ce8b89606f3","parent":{"ref":"EID6ee16653-0175-1000-31cb-5ba8187a98a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:04:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee16653-0175-1000-129e-570f5501e29b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1670b-0175-1000-15aa-850470bffa9c","parent":{"ref":"EID6ee16653-0175-1000-129e-570f5501e29b"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee1670b-0175-1000-57ba-326c1fea602c","parent":{"ref":"EID6ee16653-0175-1000-129e-570f5501e29b"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee1670b-0175-1000-ad9e-f2b705b3307e","parent":{"ref":"EID6ee16653-0175-1000-129e-570f5501e29b"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee1670b-0175-1000-ee5a-e8e1a682daea","parent":{"ref":"EID6ee16653-0175-1000-129e-570f5501e29b"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf4ceb4ac-6454-4fca-9190-00c1970fa1bf"},{"ref":"EID2b93d331-2b04-446a-ae3b-ca5bde9b641a"},{"ref":"EID75a7be8d-0372-4720-a11e-360349e7fc78"}]},"parent":{"ref":"EID6ee16653-0175-1000-31cb-5ba8187a98a5"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:04:26Z","duration":97,"status":"PASSED"},{"id":"EID6ee1670b-0175-1000-8879-f33707bc5e98","attachments":{"attachment":{"ref":"EID9748b08d-721d-4e80-8a17-4d4be45896ac"}},"parent":{"ref":"EID6ee16653-0175-1000-31cb-5ba8187a98a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee16724-0175-1000-43c6-5267cb9f6962","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee16733-0175-1000-cb34-38874697bdcd","parent":{"ref":"EID6ee16724-0175-1000-43c6-5267cb9f6962"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee16733-0175-1000-d141-13a26485bc3f","parent":{"ref":"EID6ee16724-0175-1000-43c6-5267cb9f6962"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee16733-0175-1000-74ff-410c82f6ebe7","parent":{"ref":"EID6ee16724-0175-1000-43c6-5267cb9f6962"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a64830b-c0c5-4ae5-a4df-a15e743cdf67"},{"ref":"EIDa238d0a8-85ad-4334-8951-e755d4c7afaf"}]},"parent":{"ref":"EID6ee16653-0175-1000-31cb-5ba8187a98a5"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:04:27Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee15dfd-0175-1000-ebaf-6e0b5747e825"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:04:26Z","duration":224,"status":"PASSED"}]},"parent":{"ref":"EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:04:24Z","duration":2358,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID6d5f5f08-3438-4889-b357-0fae05b61285","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID3caf20bd-2dba-48a7-8eb2-ca8eb329d92a","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3caf20bd-2dba-48a7-8eb2-ca8eb329d92a"}},{"type":"ServiceEndpoint","id":"EID7fc0bc31-53d7-4873-a033-be51589e18c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDdca19aec-de42-46d6-9ce0-7c6494acb977","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDdca19aec-de42-46d6-9ce0-7c6494acb977"}},{"type":"ServiceResponse","id":"EIDa864fcdb-461b-4c34-968e-a23535fc5f9c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDa864fcdb-461b-4c34-968e-a23535fc5f9c"}},{"type":"Message","id":"EIDc02438d4-3e4b-4f11-aa54-7fe77426b30d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDc02438d4-3e4b-4f11-aa54-7fe77426b30d"}},{"type":"ServiceEndpoint","id":"EID42e79717-e856-4744-821e-f7de9405bc6c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID00959181-76db-4c3a-ad3d-aee33cd289c0","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID00959181-76db-4c3a-ad3d-aee33cd289c0"}},{"type":"ServiceResponse","id":"EIDc6ca32bc-e42a-42da-9278-1eab3b90e9f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDc6ca32bc-e42a-42da-9278-1eab3b90e9f6"}},{"type":"ServiceEndpoint","id":"EID22b0c120-35d9-404d-ae57-08e4ca4b32db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID56959cd5-4fb0-41cc-9e8b-c9a293928c23","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID35c37589-f9f4-451d-9279-0f2b354c4e00","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID35c37589-f9f4-451d-9279-0f2b354c4e00"}},{"type":"Message","id":"EID7d75bc61-a4ff-46c3-956d-1a82532fd117","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID7d75bc61-a4ff-46c3-956d-1a82532fd117"}},{"type":"ServiceResponse","id":"EID3ec208c8-7eaf-4905-aa2f-8d0958552728","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3ec208c8-7eaf-4905-aa2f-8d0958552728"}},{"type":"Message","id":"EIDaea395d0-63fa-45e7-8e02-20b4900f9475","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDaea395d0-63fa-45e7-8e02-20b4900f9475"}},{"type":"ServiceEndpoint","id":"EID9751c1e4-1b0c-4800-b08b-cb9e5ce63072","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID68d41654-b9f6-461d-a091-44a30d914bc9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID68d41654-b9f6-461d-a091-44a30d914bc9"}},{"type":"GetParameter","id":"EID5d961a5b-61a9-44a2-be91-f64537f6aa35","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID5b9b92dd-cb9e-4cca-9236-85d679ffcfc7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID5b9b92dd-cb9e-4cca-9236-85d679ffcfc7"}},{"type":"GetParameter","id":"EIDcbf936ea-c18e-49a6-8341-0b1e7b5e4f18","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDb8f25626-102a-4223-b850-b6f9f85590e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDb8f25626-102a-4223-b850-b6f9f85590e4"}},{"type":"ServiceResponse","id":"EID59f1a053-e6d3-48f6-8619-b9624af6160b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID59f1a053-e6d3-48f6-8619-b9624af6160b"}},{"type":"Message","id":"EID5186a1c4-5c83-4810-abce-3f7fadc4f20a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID5186a1c4-5c83-4810-abce-3f7fadc4f20a"}},{"type":"ServiceResponse","id":"EIDebab61d7-c47f-40d5-a805-a8eff21ac49e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDebab61d7-c47f-40d5-a805-a8eff21ac49e"}},{"type":"GetParameter","id":"EID0dd88679-9a30-4b50-84db-9fa8a1148686","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID45df9819-f73f-4d56-9756-7c48b5b2f3fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID45df9819-f73f-4d56-9756-7c48b5b2f3fa"}},{"type":"GetParameter","id":"EID0233c275-88ab-4ef8-8117-0109c272ba7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDb568e6fe-918a-42be-a4da-ef065021673f","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDb568e6fe-918a-42be-a4da-ef065021673f"}},{"type":"ServiceEndpoint","id":"EIDca3a14a5-2bdb-4a20-a0a7-87c57a2d8546","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID827103ed-980c-469e-88ac-90b27a94caf1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID827103ed-980c-469e-88ac-90b27a94caf1"}},{"type":"Message","id":"EID71279b5e-50b4-4759-9fc3-41a928731d22","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID71279b5e-50b4-4759-9fc3-41a928731d22"}},{"type":"Message","id":"EID5fbdf424-f4a6-4bdd-aa0e-a518d145063b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID5fbdf424-f4a6-4bdd-aa0e-a518d145063b"}},{"type":"Message","id":"EID796ae61f-647f-4c07-af91-6571a898bd13","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID796ae61f-647f-4c07-af91-6571a898bd13"}},{"type":"Message","id":"EID6a5ed8ad-1d0f-402a-ad19-039675a9685a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID6a5ed8ad-1d0f-402a-ad19-039675a9685a"}},{"type":"GetParameter","id":"EID91108f2c-09c0-4907-9fdc-fe448a6b52cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID4f0150cb-1327-43b3-9d29-bd2798d77c0f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID4f0150cb-1327-43b3-9d29-bd2798d77c0f"}},{"type":"GetParameter","id":"EID46637750-7faa-4dda-8b6e-419c1f4f2531","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EID57bc29fc-0e28-48b0-9d66-5654d2ef0657","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EIDe885b4cc-5fe5-4134-9d2f-44b7ea36ec24","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID764c96b5-b748-4dda-b3b9-db0efb97ae50","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDa426c600-cde9-4ed5-8055-d71086e966d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDcdb749b8-608c-4788-ac29-878367b4d66a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID99f5e321-73d8-4eb6-aed7-97f5e781da5d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID6a3c494d-743b-4858-9dd3-678f248041da","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDc24046d5-f94a-48ec-bac6-197c3b40c858","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID156d642f-f4e7-42c1-8c7d-cc159b99f6c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EIDc3e1b7db-7af8-4d2e-80e4-b688d5f26bc0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EID3f9f02d5-6d9c-40ed-a417-5e27c82b7288","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3f9f02d5-6d9c-40ed-a417-5e27c82b7288"}},{"type":"GetParameter","id":"EID019d2fb3-3211-4ec7-adc4-f63e8f879da2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID75c6ee92-a905-4b89-94db-1953690708d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDe695df34-8181-4e6e-8bb3-17781550016d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDd32b469d-a261-40ad-9c18-d55273ff026b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDd32b469d-a261-40ad-9c18-d55273ff026b"}},{"type":"ServiceEndpoint","id":"EID9f16872c-454a-4032-b6bc-6f65904a4e6f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID7e92b8b7-3289-4108-9137-bb29ce75a962","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID7e92b8b7-3289-4108-9137-bb29ce75a962"}},{"type":"ServiceResponse","id":"EID64297270-8a01-45bc-ac0f-874910167003","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID64297270-8a01-45bc-ac0f-874910167003"}},{"type":"ServiceEndpoint","id":"EID2f58a1bb-2b5a-4e3b-a4c6-247a66282fea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID0ed6c6fd-6726-43f7-a070-0b78ff0c338a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID5381ea55-47a8-4f7f-9f47-75a4d833a040","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID1913b19b-fade-4c5a-bbc2-ba5286c4ccc9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EID096aa9f9-78a3-43c9-a8cc-08e035b2e4db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID6c4e2cff-1b42-4d0c-aab7-fe52579d7177","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID6c4e2cff-1b42-4d0c-aab7-fe52579d7177"}},{"type":"GetParameter","id":"EIDb2396de5-23c1-4faa-8fb1-035b3c67416d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID2e524a72-c56c-48e8-91c1-fb0bdd3644f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID40789e2a-1886-4e75-8e0e-577c4e2ed0c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"LogFile","id":"EID416783ee-16f5-47a4-be37-eb4a8ff61ecd","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID416783ee-16f5-47a4-be37-eb4a8ff61ecd"}},{"type":"GetParameter","id":"EID90007a7b-5bf6-4a14-a291-c3a70b6e135c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID229f757c-6d00-4c75-bc39-8a1b52192f64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDd2b5b26d-954f-4319-a2e1-3e2383cec98d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDd2b5b26d-954f-4319-a2e1-3e2383cec98d"}},{"type":"ServiceResponse","id":"EID4b8bc62c-170c-4a1c-b4ab-7e5571e485bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID4b8bc62c-170c-4a1c-b4ab-7e5571e485bc"}},{"type":"ServiceEndpoint","id":"EID9798d1be-7691-4971-9b00-b872a15168f2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID0ab45e34-304d-4737-8994-f2ba2ab30d4b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L3htbC5tZXRhZGF0YS5nZXQ="},{"type":"Message","id":"EID1fe27fd4-15b2-4501-9aa2-a0276451aa55","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID1fe27fd4-15b2-4501-9aa2-a0276451aa55"}},{"type":"GetParameter","id":"EIDa520ab06-3152-475f-b3d4-35ec965f28e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID25f7c9dc-f1fb-4d1a-85c6-809fda7be909","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID25f7c9dc-f1fb-4d1a-85c6-809fda7be909"}},{"type":"ServiceResponse","id":"EID94e5ce89-2ce9-4f82-aeb9-75b28e4bffcd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID94e5ce89-2ce9-4f82-aeb9-75b28e4bffcd"}},{"type":"ServiceResponse","id":"EID3ebd648e-c267-4d8e-8f4a-d6d0be73112a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3ebd648e-c267-4d8e-8f4a-d6d0be73112a"}},{"type":"GetParameter","id":"EIDd86e0dfe-e066-4861-9d7a-a6821a2717ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID281adf07-d7f5-430f-b70d-d1072526eeef","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID281adf07-d7f5-430f-b70d-d1072526eeef"}},{"type":"ServiceEndpoint","id":"EIDc07c4a29-a85c-4e63-a145-5eec5a6ee6f1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDcc9dee56-aa99-489d-97f6-92472bb0a46f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDcc9dee56-aa99-489d-97f6-92472bb0a46f"}},{"type":"ServiceEndpoint","id":"EIDa5f00215-f307-4429-8356-495ceed2b2e5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDf73060bd-a882-43f6-8bd9-ce3c460b37ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID9abbe948-ae45-4d03-b4a4-7b441481777e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID676e8482-7462-4fe7-af81-87debb80a257","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EID48cbdc26-e5cf-4c26-b70d-81767729c522","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDe6c073d4-0d88-4c12-b491-042cc90cb911","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDe6c073d4-0d88-4c12-b491-042cc90cb911"}},{"type":"ServiceEndpoint","id":"EIDeafdbb1f-da16-49b2-97dc-457cfd26ca24","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID0fe6b394-a07b-40d5-8f84-a034f6394f3e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID0fe6b394-a07b-40d5-8f84-a034f6394f3e"}},{"type":"GetParameter","id":"EID2f01fd83-38f6-4d6c-bcdc-9a0b87d59941","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDd352b9a4-122f-4aac-a5fd-72731b0dff16","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID51c3a33a-3cec-4965-b74a-b198d424195f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID51c3a33a-3cec-4965-b74a-b198d424195f"}},{"type":"ServiceEndpoint","id":"EID3cb7ab63-de60-44fb-ae92-8a4817b34035","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID96a3d1c3-5f81-4612-9a11-6fb25033e5be","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID113f0a3b-378f-4a68-9cac-f9a9fc944493","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID113f0a3b-378f-4a68-9cac-f9a9fc944493"}},{"type":"ServiceEndpoint","id":"EIDd3906d24-8d10-4729-a8d6-9a3ddca96ba6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EIDf4ceb4ac-6454-4fca-9190-00c1970fa1bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EID9b5f82f3-854d-419b-b47e-4f7a88f37b2d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID9b5f82f3-854d-419b-b47e-4f7a88f37b2d"}},{"type":"GetParameter","id":"EID81be6964-dbdf-4008-bd09-533e2f989aab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID6a10b331-f148-4c84-845a-5aa4d666122b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EIDf76518c5-9b88-4798-8f8f-607ac6b30f5f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2Rvd25sb2Fkcy9pbnZhc2lldmUtZXhvdGVuLmdtbC56aXA="},{"type":"GetParameter","id":"EID2ed476b5-fc73-4487-a572-e738e15b5e24","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID5cfb8555-aac2-4866-b26e-bc2f309eb2d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID5cfb8555-aac2-4866-b26e-bc2f309eb2d7"}},{"type":"ServiceEndpoint","id":"EID1b0cce3c-8329-42e8-a594-efbd9dc4bfe2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EID9748e7ab-49a1-41bb-8011-2ce0e2f7c652","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID9748e7ab-49a1-41bb-8011-2ce0e2f7c652"}},{"type":"GetParameter","id":"EIDc755edc7-4ca9-4279-a6d2-77a84024cf66","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDdf03033d-fa51-4fe1-8e4f-863a9f255701","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDdf03033d-fa51-4fe1-8e4f-863a9f255701"}},{"type":"ServiceEndpoint","id":"EID9a64830b-c0c5-4ae5-a4df-a15e743cdf67","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID950cbcce-608d-478b-bfe5-b13c61059fc1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID461fcf8b-4084-4038-9b35-99a5e40dd3d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDbd90ae50-357c-488e-9908-0cf980049018","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDbd90ae50-357c-488e-9908-0cf980049018"}},{"type":"GetParameter","id":"EIDc70d4d07-97ad-433f-b0d6-fafd528421be","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID8b227f80-e32d-4ef6-ae62-b1216c859c88","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDb4476642-4d75-4b45-a785-68253fcb84c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID78e0cb32-ad0c-4e36-ab66-16186e39d0a6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID78e0cb32-ad0c-4e36-ab66-16186e39d0a6"}},{"type":"ServiceResponse","id":"EID1684deda-6ed5-4adf-8489-21afc867ff09","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID1684deda-6ed5-4adf-8489-21afc867ff09"}},{"type":"ServiceEndpoint","id":"EIDa5b2805c-9f07-4cf4-8cbf-6fdbd98b7f17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID4f462f67-010f-41b2-b3be-95e93332008b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID4f462f67-010f-41b2-b3be-95e93332008b"}},{"type":"ServiceResponse","id":"EID231d2e26-1408-4bbb-8c58-dd74b109d254","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID231d2e26-1408-4bbb-8c58-dd74b109d254"}},{"type":"Message","id":"EIDbb02504b-eedb-43b9-b519-a173af36d060","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDbb02504b-eedb-43b9-b519-a173af36d060"}},{"type":"GetParameter","id":"EID5488de2c-accb-4247-b72d-cff5819bfc7d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L3htbC5tZXRhZGF0YS5nZXQ="},{"type":"ServiceResponse","id":"EID5369ce0e-486b-4d39-85d7-bd0a0fad80a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID5369ce0e-486b-4d39-85d7-bd0a0fad80a1"}},{"type":"ServiceEndpoint","id":"EID6e0be2f2-1b8c-4eb2-9e50-0fa9261053b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDfd1ebaf9-1635-4c4f-9e08-851cee7940fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDfd1ebaf9-1635-4c4f-9e08-851cee7940fd"}},{"type":"ServiceResponse","id":"EID70bf3a27-9922-4c16-9dec-842221603c9c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID70bf3a27-9922-4c16-9dec-842221603c9c"}},{"type":"ServiceResponse","id":"EID08f5185f-3b0c-4171-b762-861f7310b2df","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID08f5185f-3b0c-4171-b762-861f7310b2df"}},{"type":"Message","id":"EID35667e14-4868-4aa1-8772-35bb3ee3654b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID35667e14-4868-4aa1-8772-35bb3ee3654b"}},{"type":"ServiceResponse","id":"EIDb45a5ce6-159a-40e3-9924-79ad1f3fab50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDb45a5ce6-159a-40e3-9924-79ad1f3fab50"}},{"type":"ServiceResponse","id":"EID8767a96c-8a52-4549-a490-42c710ae2cf1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID8767a96c-8a52-4549-a490-42c710ae2cf1"}},{"type":"ServiceResponse","id":"EID2b93d331-2b04-446a-ae3b-ca5bde9b641a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID2b93d331-2b04-446a-ae3b-ca5bde9b641a"}},{"type":"ServiceResponse","id":"EID9a03ecd4-1287-47e7-a1d7-6737c59f8230","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID9a03ecd4-1287-47e7-a1d7-6737c59f8230"}},{"type":"GetParameter","id":"EIDa238d0a8-85ad-4334-8951-e755d4c7afaf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDf8edcc85-3b63-4d45-81de-1d4182273437","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDf8edcc85-3b63-4d45-81de-1d4182273437"}},{"type":"ServiceEndpoint","id":"EID12a5e753-427c-47e0-ab01-a3ad04e3d6c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EID7126d721-bd3d-4c34-a01b-96bf04bf1524","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID555e4514-3a2e-4dcd-8428-0217f99723cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID25c83eee-9e8e-4591-bdb7-b755ac5e43d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID55d4d289-cb13-4ea2-9013-ef7cbc566b88","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID7a7e19d4-3f76-4688-ab61-e025f93bfb2e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb604052f-c747-45cc-9939-5d97051446d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID3d3ab3a1-d120-463f-b191-8a9ee069747b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3d3ab3a1-d120-463f-b191-8a9ee069747b"}},{"type":"GetParameter","id":"EID3e03a38e-fca6-42f8-a794-06edc55e9a2b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDa0833efb-8db8-4717-92a3-0e5a371aa4a2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDa0833efb-8db8-4717-92a3-0e5a371aa4a2"}},{"type":"ServiceResponse","id":"EID3b25d274-160a-471b-a1f7-d6e0a8a068a0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3b25d274-160a-471b-a1f7-d6e0a8a068a0"}},{"type":"ServiceEndpoint","id":"EID8d2222e5-cf90-403e-94c1-8d81eba4a8e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID30604ef5-a0ef-48ad-859d-b4d9eac96cc8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID30604ef5-a0ef-48ad-859d-b4d9eac96cc8"}},{"type":"GetParameter","id":"EIDa7d666d4-c569-4619-a2a0-55016d76a080","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDc2e231a0-4d36-48d0-9103-e0d922ddd1ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID12e8c77b-9c91-4d4c-ad1a-43d8e260b049","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID12e8c77b-9c91-4d4c-ad1a-43d8e260b049"}},{"type":"ServiceEndpoint","id":"EID0bab5c9b-eddd-4126-9f3d-1d0a537abc7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb321b99e-016f-4c58-a00c-b139b1ac1a2c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID75a7be8d-0372-4720-a11e-360349e7fc78","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EIDe340ea56-d326-4c38-856d-70d924e147c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDe667273d-0df8-4160-aa0c-b53e6126fa49","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDe667273d-0df8-4160-aa0c-b53e6126fa49"}},{"type":"Message","id":"EIDc38ddbd5-bd2e-48aa-848a-10c27b293a7f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDc38ddbd5-bd2e-48aa-848a-10c27b293a7f"}},{"type":"GetParameter","id":"EID1fab01ea-48a6-4354-8cc4-f833774635b8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDbc7b11bc-a789-4e2b-abdc-1aa28582a7e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EIDd4cd3c96-d1b5-45b9-8772-f1bbb8cba1ef","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDeafa9b91-dccf-4991-974d-49cab3a9219e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDeafa9b91-dccf-4991-974d-49cab3a9219e"}},{"type":"Message","id":"EIDf6c0a848-30e2-411f-84b6-6e6aa5da3225","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDf6c0a848-30e2-411f-84b6-6e6aa5da3225"}},{"type":"Message","id":"EID135ebbf7-0972-4dbe-8c50-d4826d7f2cb8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID135ebbf7-0972-4dbe-8c50-d4826d7f2cb8"}},{"type":"Message","id":"EIDff60d22b-5fa7-46f3-97e9-bb53798875f5","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDff60d22b-5fa7-46f3-97e9-bb53798875f5"}},{"type":"ServiceResponse","id":"EID81ea17d6-b923-46b7-8be4-ae8ad8e3eec1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID81ea17d6-b923-46b7-8be4-ae8ad8e3eec1"}},{"type":"ServiceResponse","id":"EIDc6e5907e-d91b-49b3-9c0d-d1f45f253eae","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDc6e5907e-d91b-49b3-9c0d-d1f45f253eae"}},{"type":"ServiceEndpoint","id":"EID5e0b65c6-c716-4c06-aad2-0e0956ee4e47","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID3cb336f1-7eae-41b7-afee-9fac5aecb220","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3cb336f1-7eae-41b7-afee-9fac5aecb220"}},{"type":"Message","id":"EID3a454909-4435-4e45-8e9e-1b098d223b25","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3a454909-4435-4e45-8e9e-1b098d223b25"}},{"type":"ServiceEndpoint","id":"EIDd9443b1b-ca16-4ffc-a83c-83be5e730ea2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID157ae48a-07a3-422b-980e-199e9034702c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2Rvd25sb2Fkcy9pbnZhc2lldmUtZXhvdGVuLmdtbC56aXA="},{"type":"ServiceResponse","id":"EID14ff448b-5d84-49c5-8070-60f13f008d90","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID14ff448b-5d84-49c5-8070-60f13f008d90"}},{"type":"Message","id":"EID2f725334-27da-4a9a-bbf9-e4c0bf2ad42d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID2f725334-27da-4a9a-bbf9-e4c0bf2ad42d"}},{"type":"ServiceResponse","id":"EID31f8d8d1-d3fc-475f-b1d0-5ad30111e5e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID31f8d8d1-d3fc-475f-b1d0-5ad30111e5e4"}},{"type":"Message","id":"EIDd912f946-8b29-49b4-ae92-f4f9e4ce4bd2","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDd912f946-8b29-49b4-ae92-f4f9e4ce4bd2"}},{"type":"ServiceEndpoint","id":"EID1f314814-1369-4613-b880-a3af71d2435f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID76630266-5cca-4dfe-8cb9-94729a9da178","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID76630266-5cca-4dfe-8cb9-94729a9da178"}},{"type":"Message","id":"EIDe92abe35-3919-47bf-a5fd-2c8bb688c218","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDe92abe35-3919-47bf-a5fd-2c8bb688c218"}},{"type":"ServiceEndpoint","id":"EID08692812-ddbd-43ba-9843-86db34db9f58","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EIDf318e935-0ae1-43bd-8edc-85f88b67f59e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID8dc32529-ae32-4499-b0f6-ad5f40bcc0dd","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID8dc32529-ae32-4499-b0f6-ad5f40bcc0dd"}},{"type":"Message","id":"EID0267576d-7bd6-402a-9232-618bb99b8946","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID0267576d-7bd6-402a-9232-618bb99b8946"}},{"type":"Message","id":"EID217a3c5c-b0ac-46a0-870f-7ee9b4c71e40","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID217a3c5c-b0ac-46a0-870f-7ee9b4c71e40"}},{"type":"ServiceResponse","id":"EID80e1e253-c2b3-4003-9d8e-f6f0b263cfc7","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID80e1e253-c2b3-4003-9d8e-f6f0b263cfc7"}},{"type":"ServiceEndpoint","id":"EID37032479-d251-4e0f-aa2f-cfc5e9895bb6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EID458a5b83-5552-4232-88df-192e03348d91","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID458a5b83-5552-4232-88df-192e03348d91"}},{"type":"Message","id":"EID61dfa631-3e87-4fb5-933d-fb838021530a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID61dfa631-3e87-4fb5-933d-fb838021530a"}},{"type":"ServiceEndpoint","id":"EID5b283689-bf6a-492c-ba46-9eb2a7cf8e43","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID484b4af1-7b49-44ca-9a27-8a4dad84a151","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID484b4af1-7b49-44ca-9a27-8a4dad84a151"}},{"type":"Message","id":"EIDa4133c53-0238-4849-ba35-611709300ddb","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDa4133c53-0238-4849-ba35-611709300ddb"}},{"type":"ServiceResponse","id":"EID2329e841-7290-4180-9aa6-9fe80e22f96b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID2329e841-7290-4180-9aa6-9fe80e22f96b"}},{"type":"Message","id":"EID79b71b0b-530c-40fb-b5a0-a4a89a6a0812","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID79b71b0b-530c-40fb-b5a0-a4a89a6a0812"}},{"type":"Message","id":"EIDa1d13aca-50aa-4138-a1db-7984df8b3c76","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDa1d13aca-50aa-4138-a1db-7984df8b3c76"}},{"type":"GetParameter","id":"EIDd4839382-ba48-432a-a96c-7e6fa6984186","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID4439b17e-abbc-48e2-9e9d-348ef8e6612e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDd0896923-081c-42e1-9b44-92620e80090a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDd0896923-081c-42e1-9b44-92620e80090a"}},{"type":"Message","id":"EID79bc5629-0515-4c38-a59d-147b0ac5f5f9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID79bc5629-0515-4c38-a59d-147b0ac5f5f9"}},{"type":"ServiceEndpoint","id":"EIDc47c47e9-4851-4cfc-92ae-d6915825d5b1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID3e9aad3d-30b9-44d6-8d8b-2c2d284c7a46","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID3e9aad3d-30b9-44d6-8d8b-2c2d284c7a46"}},{"type":"ServiceResponse","id":"EIDe7fac740-3502-43bc-bc29-c0be4046c017","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDe7fac740-3502-43bc-bc29-c0be4046c017"}},{"type":"ServiceResponse","id":"EID8c7a1450-2d6c-4e17-a69a-855e463eada9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID8c7a1450-2d6c-4e17-a69a-855e463eada9"}},{"type":"ServiceResponse","id":"EID884b5ea3-a4a5-4e55-884a-7e5b970d3fba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID884b5ea3-a4a5-4e55-884a-7e5b970d3fba"}},{"type":"ServiceEndpoint","id":"EIDb412fcd3-ff13-4116-9682-7cb218af2aa0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID9748b08d-721d-4e80-8a17-4d4be45896ac","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID9748b08d-721d-4e80-8a17-4d4be45896ac"}},{"type":"GetParameter","id":"EID1bea0f75-5691-4545-836c-80e2116d5d4d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID743e929f-13f9-4141-b818-28393447d86e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID743e929f-13f9-4141-b818-28393447d86e"}},{"type":"GetParameter","id":"EIDf5807a26-1d24-48fe-a9c4-14990b4f7431","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDc9a9a159-2cdd-470c-930f-91a29a644b19","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDc9a9a159-2cdd-470c-930f-91a29a644b19"}},{"type":"ServiceResponse","id":"EID0e8f95d5-97db-4bc1-b2c3-34f96dfd32c6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID0e8f95d5-97db-4bc1-b2c3-34f96dfd32c6"}},{"type":"Message","id":"EID426b2164-c9f5-4137-b967-202b91ece569","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EID426b2164-c9f5-4137-b967-202b91ece569"}},{"type":"ServiceEndpoint","id":"EID896412e5-7149-4822-bf66-4c8f023986b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDed8e20a5-2180-45ee-8789-25dcca409d15","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc57e8d14-6dad-45bb-870e-8751e61dd4f4/Attachments/EIDed8e20a5-2180-45ee-8789-25dcca409d15"}},{"type":"ServiceEndpoint","id":"EIDc80bcf02-e033-4994-a17c-6e566359edf2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:04:11Z","duration":15541,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:04:36.772 [print] EIDa8673546-9bf4-4a75-9d12-dd457d3cec44
* print response.EtfItemCollection.testRuns.TestRun.status 0.011
11:04:36.783 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:04:36.784 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:04:36.784 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:04:36.785 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a8673546-9bf4-4a75-9d12-dd457d3cec44.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:04:36.785 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a8673546-9bf4-4a75-9d12-dd457d3cec44.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:04:36.786 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa8673546-9bf4-4a75-9d12-dd457d3cec44/log
* def embedUrl = 0.022
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.024
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.002
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.114
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.071
* def a = embedUrl ("../../" + jsonPath , status ) 0.025
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.029
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.001
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.001
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.019
* def Collections = Java.type('java.util.Collections') 0.011
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.042
* print refs 0.000
11:04:37.156 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.incorrectFeedSelfReference"
]
* print sortedrefs 0.000
11:04:37.157 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.002
* def separator = java.lang.System.getProperty("file.separator") 0.002
* def mystorage = Java.type('storage.DataStorage') 0.013
* def db = new mystorage 0.006
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.010
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.125
* def db = db.setfeature(karate.info.featureFileName) 0.016
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.011
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.053
0.404
* print "testing url:" + metadata.url 0.000
11:13:54.371 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.404
11:13:54.372 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:54.776 response time in milliseconds: 403.69
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:54 GMT
1 < ETag: "1a2f9-5af58a1acea00-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:41:28 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.397
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.397
11:13:54.786 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:55.181 response time in milliseconds: 394.91
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:55 GMT
1 < ETag: "1a2f9-5af58a1acea00-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:41:28 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:13:55.183 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.395
* print "testing url:" + metadata.url 0.000
11:10:56.719 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.395
11:10:56.720 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:57.115 response time in milliseconds: 395.04
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:10:57 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.388
Given url metadata.url 0.000
When method HEAD 0.387
11:10:57.119 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:57.506 response time in milliseconds: 387.19
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:10:57 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.572
* print "testing url:" + metadata.url 0.000
11:12:51.547 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.572
11:12:51.548 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:52.119 response time in milliseconds: 571.20
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 7165
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:52 GMT
1 < Etag: "a477efe52b464353930e4767fc4d3506-1"
1 < Last-Modified: Tue, 12 Nov 2019 10:10:42 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642239C6A5EA936
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.406
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.405
11:12:52.125 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:52.530 response time in milliseconds: 405.14
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 7165
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:52 GMT
1 < Etag: "a477efe52b464353930e4767fc4d3506-1"
1 < Last-Modified: Tue, 12 Nov 2019 10:10:42 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642239C87381155
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:12:52.531 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.033
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:03.086 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.033
11:14:03.086 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 315
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS"}}}

11:14:06.119 response time in milliseconds: 2925.73
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883645948","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:06.119 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.403
* print "testing url:" + metadata.url 0.000
11:15:16.088 [print] testing url:https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.403
11:15:16.089 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:16.491 response time in milliseconds: 402.30
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:16 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.393
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.392
11:15:16.494 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:16.886 response time in milliseconds: 391.83
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:16 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:16.887 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.396
* print "testing url:" + metadata.url 0.000
11:09:55.667 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.396
11:09:55.668 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:56.063 response time in milliseconds: 395.43
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:56 GMT
1 < ETag: "1abe8-5af58a6516b63-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.411
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.411
11:09:56.072 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:56.481 response time in milliseconds: 408.31
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:56 GMT
1 < ETag: "1abe8-5af58a6516b63-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:56.482 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
30.338
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:05:28.105 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.337
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
11:05:28.109 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 252
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}}}

11:05:58.442 java.net.SocketTimeoutException: Read timed out, http call failed after 30333 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:05:58.443 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.411
* print "testing url:" + metadata.url 0.000
11:15:33.567 [print] testing url:https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.411
11:15:33.567 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:33.978 response time in milliseconds: 410.54
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:33 GMT
1 < ETag: "19397-5af58a6558dff-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.429
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.429
11:15:33.984 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:34.413 response time in milliseconds: 428.40
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:34 GMT
1 < ETag: "19397-5af58a6558dff-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:34.414 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.428
* print "testing url:" + metadata.url 0.000
11:13:19.216 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.427
11:13:19.217 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:19.644 response time in milliseconds: 426.56
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:19 GMT
1 < ETag: "184b1-5af58a6522eb4-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.395
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.394
11:13:19.649 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:20.044 response time in milliseconds: 393.82
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:19 GMT
1 < ETag: "184b1-5af58a6522eb4-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:13:20.044 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.402
* print "testing url:" + metadata.url 0.000
11:12:08.408 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.402
11:12:08.408 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:08.810 response time in milliseconds: 401.98
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:08 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.424
Given url metadata.url 0.000
When method HEAD 0.423
11:12:08.815 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:09.238 response time in milliseconds: 422.31
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:08 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.425
* print "testing url:" + metadata.url 0.000
11:12:19.685 [print] testing url:https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.425
11:12:19.686 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:20.111 response time in milliseconds: 424.60
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:20 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.419
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.419
11:12:20.119 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:20.537 response time in milliseconds: 417.89
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:20 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:20.538 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
24.665
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:36.924 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.512
11:06:36.924 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:06:44.434 response time in milliseconds: 6752.46
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:43 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/cc34ea27-265e-49a1-91f7-abac50e9b010.json","testRuns":{"TestRun":{"id":"EIDcc34ea27-265e-49a1-91f7-abac50e9b010","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:41.665Z","testTasks":{"TestTask":{"id":"EIDf9141656-7b35-454f-8f05-7a7187b34cb5","parent":{"ref":"EIDcc34ea27-265e-49a1-91f7-abac50e9b010"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7ddc5e0b-ca6e-4987-8185-571a93e87c72"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7ddc5e0b-ca6e-4987-8185-571a93e87c72","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:37.424Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:40.863Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:44.437 [print] EIDcc34ea27-265e-49a1-91f7-abac50e9b010
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:44.437 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:44.437 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:44.438 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/cc34ea27-265e-49a1-91f7-abac50e9b010.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:44.438 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:06:44.438 [print] statuspath TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010
* print 'progresspath ', progresspath 0.000
11:06:44.438 [print] progresspath  TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/progress
Given path progresspath 0.000
When method GET 0.538
11:06:44.456 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:44.977 response time in milliseconds: 520.75
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:44 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:06:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:41 UTC 2020)","28.10.2020 11:06:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:41 - Preparing 1 Test Task:","28.10.2020 11:06:41 -  TestTask 1 (f9141656-7b35-454f-8f05-7a7187b34cb5)","28.10.2020 11:06:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:41 -  with parameters: ","28.10.2020 11:06:41 - etf.testcases = *","28.10.2020 11:06:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:41 - Setting state to CREATED","28.10.2020 11:06:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:42 - Starting TestRun.cc34ea27-265e-49a1-91f7-abac50e9b010 at 2020-10-28T11:06:43Z","28.10.2020 11:06:43 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:43 - Project Properties: ","28.10.2020 11:06:43 - etf.testcases - * ","28.10.2020 11:06:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:06:43 - username -  ","28.10.2020 11:06:43 - authUser -  ","28.10.2020 11:06:43 - authMethod - basic ","28.10.2020 11:06:43 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:06:44.978 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:06:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:41 UTC 2020)",
    "28.10.2020 11:06:41 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:06:41 - Preparing 1 Test Task:",
    "28.10.2020 11:06:41 -  TestTask 1 (f9141656-7b35-454f-8f05-7a7187b34cb5)",
    "28.10.2020 11:06:41 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:06:41 -  with parameters: ",
    "28.10.2020 11:06:41 - etf.testcases = *",
    "28.10.2020 11:06:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:06:41 - Setting state to CREATED",
    "28.10.2020 11:06:41 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:06:42 - Starting TestRun.cc34ea27-265e-49a1-91f7-abac50e9b010 at 2020-10-28T11:06:43Z",
    "28.10.2020 11:06:43 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:06:43 - Project Properties: ",
    "28.10.2020 11:06:43 - etf.testcases - * ",
    "28.10.2020 11:06:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:06:43 - username -  ",
    "28.10.2020 11:06:43 - authUser -  ",
    "28.10.2020 11:06:43 - authMethod - basic ",
    "28.10.2020 11:06:43 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 13.060
11:06:44.979 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:45.493 response time in milliseconds: 513.60
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:45 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:06:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:41 UTC 2020)","28.10.2020 11:06:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:41 - Preparing 1 Test Task:","28.10.2020 11:06:41 -  TestTask 1 (f9141656-7b35-454f-8f05-7a7187b34cb5)","28.10.2020 11:06:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:41 -  with parameters: ","28.10.2020 11:06:41 - etf.testcases = *","28.10.2020 11:06:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:41 - Setting state to CREATED","28.10.2020 11:06:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:42 - Starting TestRun.cc34ea27-265e-49a1-91f7-abac50e9b010 at 2020-10-28T11:06:43Z","28.10.2020 11:06:43 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:43 - Project Properties: ","28.10.2020 11:06:43 - etf.testcases - * ","28.10.2020 11:06:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:06:43 - username -  ","28.10.2020 11:06:43 - authUser -  ","28.10.2020 11:06:43 - authMethod - basic ","28.10.2020 11:06:43 - TestRunTask initialized"]}

11:06:45.494 retry condition not satisfied: response.val == response.max
11:06:45.494 sleeping before retry #1
11:06:50.495 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:51.011 response time in milliseconds: 515.21
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:50 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"88","max":"89","log":["28.10.2020 11:06:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:41 UTC 2020)","28.10.2020 11:06:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:41 - Preparing 1 Test Task:","28.10.2020 11:06:41 -  TestTask 1 (f9141656-7b35-454f-8f05-7a7187b34cb5)","28.10.2020 11:06:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:41 -  with parameters: ","28.10.2020 11:06:41 - etf.testcases = *","28.10.2020 11:06:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:41 - Setting state to CREATED","28.10.2020 11:06:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:42 - Starting TestRun.cc34ea27-265e-49a1-91f7-abac50e9b010 at 2020-10-28T11:06:43Z","28.10.2020 11:06:43 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:43 - Project Properties: ","28.10.2020 11:06:43 - etf.testcases - * ","28.10.2020 11:06:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:06:43 - username -  ","28.10.2020 11:06:43 - authUser -  ","28.10.2020 11:06:43 - authMethod - basic ","28.10.2020 11:06:43 - TestRunTask initialized","28.10.2020 11:06:47 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:06:47 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:06:48 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:06:50 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:06:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:06:51.020 retry condition not satisfied: response.val == response.max
11:06:51.020 sleeping before retry #2
11:06:56.021 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:58.038 response time in milliseconds: 2016.69
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:06:57 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:06:58.039 retry condition satisfied
* print response 0.000
11:06:58.039 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.520
11:06:58.040 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:01.556 response time in milliseconds: 2545.72
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:07:00 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:06:58 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/cc34ea27-265e-49a1-91f7-abac50e9b010.json","testRuns":{"TestRun":{"id":"EIDcc34ea27-265e-49a1-91f7-abac50e9b010","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:41.665Z","testTasks":{"TestTask":{"id":"EIDf9141656-7b35-454f-8f05-7a7187b34cb5","parent":{"ref":"EIDcc34ea27-265e-49a1-91f7-abac50e9b010"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7ddc5e0b-ca6e-4987-8185-571a93e87c72"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7ddc5e0b-ca6e-4987-8185-571a93e87c72","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:37.424Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:40.863Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b","testObject":{"ref":"EID7ddc5e0b-ca6e-4987-8185-571a93e87c72"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee37c33-0175-1000-dcd6-ba718b841627","testCaseResults":{"TestCaseResult":[{"id":"EID6ee37c33-0175-1000-1991-db1233396f4e","testStepResults":{"TestStepResult":[{"id":"EID6ee37c34-0175-1000-3177-ae68219e05bd","parent":{"ref":"EID6ee37c33-0175-1000-1991-db1233396f4e"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:06:43Z","duration":12,"status":"PASSED"},{"id":"EID6ee37c41-0175-1000-eb8e-6b19c8aea7a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37d27-0175-1000-f947-7a6209935ae3","parent":{"ref":"EID6ee37c41-0175-1000-eb8e-6b19c8aea7a2"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee37d27-0175-1000-3163-23fe5a2aa8dd","parent":{"ref":"EID6ee37c41-0175-1000-eb8e-6b19c8aea7a2"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee37d27-0175-1000-8105-b89a836d4646","parent":{"ref":"EID6ee37c41-0175-1000-eb8e-6b19c8aea7a2"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee37d27-0175-1000-646a-02967308a4f3","parent":{"ref":"EID6ee37c41-0175-1000-eb8e-6b19c8aea7a2"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:06:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91e18ff7-8086-47e2-922d-93c59a9077e5"},{"ref":"EID6d424729-1554-40ac-a168-a2ae8fb0acc0"},{"ref":"EID13415609-06d0-43e8-9ad8-0574718b1ce1"}]},"parent":{"ref":"EID6ee37c33-0175-1000-1991-db1233396f4e"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:06:43Z","duration":45,"status":"PASSED"}]},"parent":{"ref":"EID6ee37c33-0175-1000-dcd6-ba718b841627"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:06:43Z","duration":244,"status":"PASSED"},{"id":"EID6ee37d27-0175-1000-1935-0b39cd826684","testStepResults":{"TestStepResult":{"id":"EID6ee37d32-0175-1000-a5a2-92f0ce29524f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37e12-0175-1000-8ef0-04f88f512e00","parent":{"ref":"EID6ee37d32-0175-1000-a5a2-92f0ce29524f"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37e12-0175-1000-2b9b-c39cf100f7c2","parent":{"ref":"EID6ee37d32-0175-1000-a5a2-92f0ce29524f"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37e12-0175-1000-6c91-78080a3a51f5","parent":{"ref":"EID6ee37d32-0175-1000-a5a2-92f0ce29524f"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb6f04ce-3b17-4c35-8f8b-25f6fb2c522c"},{"ref":"EID8dc434c2-04cc-40ff-80cb-75921d248ed6"},{"ref":"EID3baed7fc-62dd-4b6d-8146-d74e949c0b5d"}]},"parent":{"ref":"EID6ee37d27-0175-1000-1935-0b39cd826684"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:06:43Z","duration":113,"status":"PASSED"}},"parent":{"ref":"EID6ee37c33-0175-1000-dcd6-ba718b841627"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:06:43Z","duration":236,"status":"PASSED"}]},"parent":{"ref":"EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:06:43Z","duration":480,"status":"PASSED"},{"id":"EID6ee37e13-0175-1000-4011-292527e5c3b8","testCaseResults":{"TestCaseResult":[{"id":"EID6ee37e13-0175-1000-4558-4f2fe88a96cd","testStepResults":{"TestStepResult":[{"id":"EID6ee37e13-0175-1000-6a1a-75d9828fe2ac","parent":{"ref":"EID6ee37e13-0175-1000-4558-4f2fe88a96cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:06:44Z","duration":132,"status":"PASSED"},{"id":"EID6ee37e26-0175-1000-970d-5539ca648db3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee37eda-0175-1000-8a74-29d5e8e008dd","parent":{"ref":"EID6ee37e26-0175-1000-970d-5539ca648db3"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37eda-0175-1000-0c33-8e8fc0101766","parent":{"ref":"EID6ee37e26-0175-1000-970d-5539ca648db3"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37eda-0175-1000-d254-bf3c80186341","parent":{"ref":"EID6ee37e26-0175-1000-970d-5539ca648db3"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37eda-0175-1000-76b2-0924f33ec050","parent":{"ref":"EID6ee37e26-0175-1000-970d-5539ca648db3"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee37eda-0175-1000-7ab1-d6c65aff23ba","parent":{"ref":"EID6ee37e26-0175-1000-970d-5539ca648db3"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID547c9a45-a127-4d69-9d29-aea85b2b7ad1"},{"ref":"EID8d09580e-e47e-479a-b0e3-db32abdf1be1"},{"ref":"EIDfc0dffcd-697c-40da-93e6-fdb84e3553e7"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4558-4f2fe88a96cd"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:06:44Z","duration":63,"status":"PASSED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:06:44Z","duration":199,"status":"PASSED"},{"id":"EID6ee37edb-0175-1000-3070-4692623149d7","testStepResults":{"TestStepResult":[{"id":"EID6ee37edb-0175-1000-9e0d-287943211c87","attachments":{"attachment":[{"ref":"EID1a88b553-8c62-4a0c-b697-854d5fe57c7f"},{"ref":"EID658a0a9e-a907-442c-bd27-4521f203d441"}]},"parent":{"ref":"EID6ee37edb-0175-1000-3070-4692623149d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:06:44Z","duration":77,"status":"PASSED"},{"id":"EID6ee37f51-0175-1000-8b4c-a480e19bf4f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38058-0175-1000-3a19-3cba71de1efc","parent":{"ref":"EID6ee37f51-0175-1000-8b4c-a480e19bf4f2"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee38058-0175-1000-1e66-674d91ec61fe","parent":{"ref":"EID6ee37f51-0175-1000-8b4c-a480e19bf4f2"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee38058-0175-1000-1502-318564501175","parent":{"ref":"EID6ee37f51-0175-1000-8b4c-a480e19bf4f2"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee38058-0175-1000-722b-4ae99b6d19d1","parent":{"ref":"EID6ee37f51-0175-1000-8b4c-a480e19bf4f2"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:06:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8f1a0caa-c5b4-45f3-9f42-e45d40535a99"},{"ref":"EIDe2ab73f5-1f63-4073-b37f-f3a71c5c8ef6"},{"ref":"EID3085dfe0-085e-476d-96e4-c3d888df4bbb"}]},"parent":{"ref":"EID6ee37edb-0175-1000-3070-4692623149d7"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:06:44Z","duration":66,"status":"PASSED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:06:44Z","duration":381,"status":"PASSED"},{"id":"EID6ee38059-0175-1000-7c27-0ff9e0b8f088","testStepResults":{"TestStepResult":[{"id":"EID6ee38059-0175-1000-5932-be02b7f0140f","attachments":{"attachment":[{"ref":"EID4b3e2578-a1fb-446e-86a1-adf3a684d3a4"},{"ref":"EID206a94bf-f42d-4ffd-9d7d-d8773365dbc1"}]},"parent":{"ref":"EID6ee38059-0175-1000-7c27-0ff9e0b8f088"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:06:44Z","duration":119,"status":"PASSED"},{"id":"EID6ee38106-0175-1000-c3d4-761b86332f79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee381b9-0175-1000-17ef-2b60c16acebc","parent":{"ref":"EID6ee38106-0175-1000-c3d4-761b86332f79"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee381b9-0175-1000-5159-98d54b232bf2","parent":{"ref":"EID6ee38106-0175-1000-c3d4-761b86332f79"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee381b9-0175-1000-eadf-f592f083cb12","parent":{"ref":"EID6ee38106-0175-1000-c3d4-761b86332f79"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee381b9-0175-1000-46dc-e23c8b9fa8f3","parent":{"ref":"EID6ee38106-0175-1000-c3d4-761b86332f79"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee381b9-0175-1000-f875-08c985ba8395","parent":{"ref":"EID6ee38106-0175-1000-c3d4-761b86332f79"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5bf70ac-edbf-4b7b-928e-1bbd6129b2b1"},{"ref":"EIDe0fce02e-e421-4b2f-b66e-895e5d066c26"},{"ref":"EID1ab712fe-09db-4f4f-a2f1-5ed3118059d3"}]},"parent":{"ref":"EID6ee38059-0175-1000-7c27-0ff9e0b8f088"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:06:44Z","duration":52,"status":"PASSED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:06:44Z","duration":352,"status":"PASSED"},{"id":"EID6ee381ba-0175-1000-a2e5-b01b51f28507","testStepResults":{"TestStepResult":[{"id":"EID6ee381ba-0175-1000-e37f-270470d02f64","attachments":{"attachment":[{"ref":"EIDcfa10e12-b474-4cd7-9580-c38fe9dd947d"},{"ref":"EIDa7b7f9c0-4b2d-419f-ac2c-e03cedf44d32"}]},"parent":{"ref":"EID6ee381ba-0175-1000-a2e5-b01b51f28507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:06:45Z","duration":247,"status":"PASSED"},{"id":"EID6ee382d4-0175-1000-90e4-f6ab67b21fb8","parent":{"ref":"EID6ee381ba-0175-1000-a2e5-b01b51f28507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:06:45Z","duration":1,"status":"PASSED"},{"id":"EID6ee382d5-0175-1000-0316-526beda8e6d0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee383af-0175-1000-8c5e-cba141072243","parent":{"ref":"EID6ee382d5-0175-1000-0316-526beda8e6d0"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee383af-0175-1000-5f91-f9ff9141fd32","parent":{"ref":"EID6ee382d5-0175-1000-0316-526beda8e6d0"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee383af-0175-1000-e1f3-1d6cacb99f8f","parent":{"ref":"EID6ee382d5-0175-1000-0316-526beda8e6d0"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee383af-0175-1000-7fc4-cc738dd3a3f8","parent":{"ref":"EID6ee382d5-0175-1000-0316-526beda8e6d0"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6c64ce86-898c-4ff0-a478-d9f5ff39cd4c"},{"ref":"EID67af464e-2766-4f17-9710-932b10bbe941"},{"ref":"EID27dcd268-4a3f-43cb-b78b-b86c8c3652dc"}]},"parent":{"ref":"EID6ee381ba-0175-1000-a2e5-b01b51f28507"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:06:45Z","duration":111,"status":"PASSED"},{"id":"EID6ee383b0-0175-1000-98a4-1ac14ddbbf5b","attachments":{"attachment":{"ref":"EID0295b212-4a2c-4722-934a-b892841340fa"}},"parent":{"ref":"EID6ee381ba-0175-1000-a2e5-b01b51f28507"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:06:45Z","duration":1,"status":"PASSED"},{"id":"EID6ee383bd-0175-1000-7868-555508012b01","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38476-0175-1000-369d-0e4e9e9768b7","parent":{"ref":"EID6ee383bd-0175-1000-7868-555508012b01"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38476-0175-1000-9fc2-c871c15c722b","parent":{"ref":"EID6ee383bd-0175-1000-7868-555508012b01"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38476-0175-1000-7fa4-b2d6aa079fb5","parent":{"ref":"EID6ee383bd-0175-1000-7868-555508012b01"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38476-0175-1000-7353-9f7683b66029","parent":{"ref":"EID6ee383bd-0175-1000-7868-555508012b01"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee38476-0175-1000-d492-435fd45d8a5f","parent":{"ref":"EID6ee383bd-0175-1000-7868-555508012b01"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:06:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf734862c-844a-47da-ab94-8e219eea7a06"},{"ref":"EID0e260ccd-48b4-4061-8145-e896d7745241"},{"ref":"EIDeb4db861-f00c-43fa-9d3e-a59e7141c26a"}]},"parent":{"ref":"EID6ee381ba-0175-1000-a2e5-b01b51f28507"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:06:45Z","duration":46,"status":"PASSED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:06:45Z","duration":713,"status":"PASSED"},{"id":"EID6ee38483-0175-1000-3af9-edd915ff7299","testStepResults":{"TestStepResult":[{"id":"EID6ee38483-0175-1000-62cc-cbc5281c50eb","attachments":{"attachment":[{"ref":"EID17a3208b-c449-44a0-8a9a-c15dcb9391a3"},{"ref":"EIDf175083f-026d-42a2-ad0a-f46dc9037b19"}]},"parent":{"ref":"EID6ee38483-0175-1000-3af9-edd915ff7299"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:06:45Z","duration":120,"status":"PASSED"},{"id":"EID6ee3852e-0175-1000-7ed1-8ef8e418bb55","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee386b8-0175-1000-bd50-7d7364364d2d","parent":{"ref":"EID6ee3852e-0175-1000-7ed1-8ef8e418bb55"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee386b8-0175-1000-9932-92834826df08","parent":{"ref":"EID6ee3852e-0175-1000-7ed1-8ef8e418bb55"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee386b8-0175-1000-ae2e-0c6ed4893d4c","parent":{"ref":"EID6ee3852e-0175-1000-7ed1-8ef8e418bb55"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee386b8-0175-1000-4f10-8b17c2fde904","parent":{"ref":"EID6ee3852e-0175-1000-7ed1-8ef8e418bb55"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID18703854-1f65-4dd9-be9a-f0f818399820"},{"ref":"EID0b14f9a9-ad5c-4596-b678-a0482887b9df"},{"ref":"EID76d9e683-fc03-41e9-a5a1-3e2236b5bcc6"}]},"parent":{"ref":"EID6ee38483-0175-1000-3af9-edd915ff7299"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:06:45Z","duration":62,"status":"PASSED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:06:45Z","duration":565,"status":"PASSED"},{"id":"EID6ee386b8-0175-1000-3c34-589e2bde6db8","testStepResults":{"TestStepResult":[{"id":"EID6ee386b8-0175-1000-0cad-a32bb3560853","attachments":{"attachment":[{"ref":"EID14791756-9a12-4f55-b70b-8dddfa07943e"},{"ref":"EID15391eb4-4a05-4b78-8f71-750deca49948"}]},"parent":{"ref":"EID6ee386b8-0175-1000-3c34-589e2bde6db8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:06:46Z","duration":123,"status":"PASSED"},{"id":"EID6ee38766-0175-1000-b4b4-e73faf6f0e5b","parent":{"ref":"EID6ee386b8-0175-1000-3c34-589e2bde6db8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee38766-0175-1000-f56f-9c2fdde68a0b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3882b-0175-1000-7957-f0bd073c270e","parent":{"ref":"EID6ee38766-0175-1000-f56f-9c2fdde68a0b"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee3882b-0175-1000-91e3-1bf18c85a4e6","parent":{"ref":"EID6ee38766-0175-1000-f56f-9c2fdde68a0b"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee3882b-0175-1000-d5fd-06a3a78cdf4e","parent":{"ref":"EID6ee38766-0175-1000-f56f-9c2fdde68a0b"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee3882b-0175-1000-60db-ec443540ea11","parent":{"ref":"EID6ee38766-0175-1000-f56f-9c2fdde68a0b"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:06:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID37ba3243-5c5f-4ef6-99a9-660b285f0b75"},{"ref":"EID6325f624-1367-4965-a74a-b0c07ec21570"},{"ref":"EID0aaa6ca0-1200-4ac4-8ee0-76a9eed8c9e6"}]},"parent":{"ref":"EID6ee386b8-0175-1000-3c34-589e2bde6db8"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:06:46Z","duration":49,"status":"PASSED"},{"id":"EID6ee38835-0175-1000-f6f1-95efaddd0d2f","attachments":{"attachment":{"ref":"EID4335695d-675c-4f9a-b52c-ade8c28f9fd0"}},"parent":{"ref":"EID6ee386b8-0175-1000-3c34-589e2bde6db8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:06:46Z","duration":1,"status":"PASSED"},{"id":"EID6ee3885c-0175-1000-9e67-10db954b6f44","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38966-0175-1000-7c96-c98c11b13f90","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee3885c-0175-1000-9e67-10db954b6f44"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:06:47Z","duration":19,"status":"FAILED"},{"id":"EID6ee38979-0175-1000-0f2d-d77a63dc0612","parent":{"ref":"EID6ee3885c-0175-1000-9e67-10db954b6f44"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38979-0175-1000-2324-91187f64b78f","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee3885c-0175-1000-9e67-10db954b6f44"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8dbd5f7d-2f4e-43e0-924c-1138e3c3ab11"},{"ref":"EID8fdc6ffb-11c1-4e35-86f9-a2d43d4b1562"},{"ref":"EIDcafe9af8-73fb-469a-b399-720b63b90b16"}]},"parent":{"ref":"EID6ee386b8-0175-1000-3c34-589e2bde6db8"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:06:46Z","duration":204,"status":"FAILED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:06:46Z","duration":705,"status":"FAILED"},{"id":"EID6ee38979-0175-1000-c737-464f37e71482","testStepResults":{"TestStepResult":[{"id":"EID6ee38979-0175-1000-8bcf-cfed1b59053f","attachments":{"attachment":[{"ref":"EID6f87a8fd-e466-4166-8643-ff6828408f62"},{"ref":"EIDd93bbf99-7a8d-45e1-9425-ac7b05991718"}]},"parent":{"ref":"EID6ee38979-0175-1000-c737-464f37e71482"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:06:47Z","duration":124,"status":"PASSED"},{"id":"EID6ee38a4c-0175-1000-99e7-8c9cc644e2dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38b69-0175-1000-b475-f85dbe363b98","parent":{"ref":"EID6ee38a4c-0175-1000-99e7-8c9cc644e2dd"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38b69-0175-1000-ecf3-599a258e72c9","parent":{"ref":"EID6ee38a4c-0175-1000-99e7-8c9cc644e2dd"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38b69-0175-1000-e450-97412265efaf","parent":{"ref":"EID6ee38a4c-0175-1000-99e7-8c9cc644e2dd"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38b69-0175-1000-f2f7-3d9987083396","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee38a4c-0175-1000-99e7-8c9cc644e2dd"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID215fa88d-43fa-4150-9e81-d6f49effceea"},{"ref":"EIDbb303e8b-804e-4c4f-97f4-f31c66dc9325"},{"ref":"EID961a274c-3fb8-4ca0-b9d3-cf032452f319"}]},"parent":{"ref":"EID6ee38979-0175-1000-c737-464f37e71482"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:06:47Z","duration":60,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:06:47Z","duration":497,"status":"PASSED_MANUAL"},{"id":"EID6ee38b6b-0175-1000-5b57-93ac96e27726","testStepResults":{"TestStepResult":{"id":"EID6ee38b6b-0175-1000-2ac1-796ba19327d7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38c61-0175-1000-7f21-27046f1719e5","parent":{"ref":"EID6ee38b6b-0175-1000-2ac1-796ba19327d7"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38c61-0175-1000-585e-e0028a125034","parent":{"ref":"EID6ee38b6b-0175-1000-2ac1-796ba19327d7"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38c61-0175-1000-6f7a-d132da252b09","parent":{"ref":"EID6ee38b6b-0175-1000-2ac1-796ba19327d7"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38c61-0175-1000-dae1-ae579d3b6f7e","parent":{"ref":"EID6ee38b6b-0175-1000-2ac1-796ba19327d7"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID743eea24-b408-4f02-b54b-efabaa5e906e"},{"ref":"EIDd58e8063-63cd-4851-abd4-ba73ae8c7df5"},{"ref":"EIDeaafe1f2-3672-486e-b4c5-d0bea434c521"}]},"parent":{"ref":"EID6ee38b6b-0175-1000-5b57-93ac96e27726"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:06:47Z","duration":111,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:06:47Z","duration":247,"status":"PASSED"},{"id":"EID6ee38c62-0175-1000-3ee6-cd3788ad3d1c","testStepResults":{"TestStepResult":{"id":"EID6ee38c62-0175-1000-3fe3-7d8f7ea77c04","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee38d3b-0175-1000-a3dd-c9e47e7ae586","parent":{"ref":"EID6ee38c62-0175-1000-3fe3-7d8f7ea77c04"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38d3b-0175-1000-a231-b357a9685224","parent":{"ref":"EID6ee38c62-0175-1000-3fe3-7d8f7ea77c04"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38d3b-0175-1000-ff6c-eae24064c344","parent":{"ref":"EID6ee38c62-0175-1000-3fe3-7d8f7ea77c04"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee38d3b-0175-1000-be26-149814ae7c24","parent":{"ref":"EID6ee38c62-0175-1000-3fe3-7d8f7ea77c04"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:06:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc863a893-738a-4f11-8ba4-4dfc07fed172"},{"ref":"EID2db56f1c-7c65-4e05-9d49-5d80c23a9d5c"},{"ref":"EID938aa210-2ec8-43b8-9a5a-b7e37de49005"}]},"parent":{"ref":"EID6ee38c62-0175-1000-3ee6-cd3788ad3d1c"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:06:47Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:06:47Z","duration":226,"status":"PASSED"},{"id":"EID6ee38d44-0175-1000-78c4-55f6d599bcd7","testStepResults":{"TestStepResult":{"id":"EID6ee38d44-0175-1000-9a23-5e468c632342","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDb370a515-862f-471c-8273-023f3bd977bb"},{"ref":"EIDaff926a4-0658-4b98-a4a6-52cd613b4053"},{"ref":"EIDa567ccc6-0983-4135-a13c-c5db4d223a2f"},{"ref":"EID9bd42647-23bf-4535-830a-8189e4a4f98b"},{"ref":"EID353fb4ae-1e32-4f52-a532-5d783fb4b9bc"},{"ref":"EID9d1bb8a8-d95a-4fb7-a71c-6ba9a075c5d1"},{"ref":"EID69579b05-ccbb-4569-a2b2-a0841ab4f66a"},{"ref":"EID6786b2be-ab62-4741-8d7e-6d93e19f6071"},{"ref":"EIDdc032220-b32f-4f6b-9016-725963d44381"}]},"parent":{"ref":"EID6ee38d44-0175-1000-78c4-55f6d599bcd7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:06:48Z","duration":680,"status":"SKIPPED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:06:48Z","duration":847,"status":"SKIPPED"},{"id":"EID6ee39093-0175-1000-9bca-d08999afa97e","testStepResults":{"TestStepResult":{"id":"EID6ee39093-0175-1000-36c8-089b6f477e09","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee391b3-0175-1000-170f-3166e156d9a6","parent":{"ref":"EID6ee39093-0175-1000-36c8-089b6f477e09"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee391b3-0175-1000-5ee7-9865fb6c4fe6","parent":{"ref":"EID6ee39093-0175-1000-36c8-089b6f477e09"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee391b3-0175-1000-9bb8-aabee9d932a1","parent":{"ref":"EID6ee39093-0175-1000-36c8-089b6f477e09"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee391b3-0175-1000-757d-22bb73e94dfa","parent":{"ref":"EID6ee39093-0175-1000-36c8-089b6f477e09"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID910e81b3-7550-4413-9931-b648e4ad1ccb"},{"ref":"EIDaf572255-188b-4c21-b216-d756af4eb5eb"},{"ref":"EID859df24d-b82b-4128-a3b2-cc22a4c5bb3f"}]},"parent":{"ref":"EID6ee39093-0175-1000-9bca-d08999afa97e"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:06:48Z","duration":180,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:06:48Z","duration":288,"status":"PASSED"},{"id":"EID6ee391b3-0175-1000-7ca3-30735ac2d196","testStepResults":{"TestStepResult":{"id":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3929b-0175-1000-f8e5-7e90e47d69b8","parent":{"ref":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3929b-0175-1000-aa2d-223e827edd92","parent":{"ref":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3929b-0175-1000-65d2-841dcd86d1ba","parent":{"ref":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3929b-0175-1000-7e28-83249930f6d8","parent":{"ref":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3929b-0175-1000-f560-3614cd7e7482","parent":{"ref":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee3929b-0175-1000-2486-dd10783f1a42","parent":{"ref":"EID6ee391b3-0175-1000-fdcf-e6d790e57d30"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfddba5d6-ef04-4246-8a74-7596c10cbc3a"},{"ref":"EID910606e4-3c61-4694-8a0d-0f3783161f01"},{"ref":"EID3afaf194-86fb-4656-a566-c9e34579a4a4"}]},"parent":{"ref":"EID6ee391b3-0175-1000-7ca3-30735ac2d196"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:06:49Z","duration":91,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:06:49Z","duration":246,"status":"PASSED"},{"id":"EID6ee392a9-0175-1000-2bfa-0eaea0cc991c","testStepResults":{"TestStepResult":{"id":"EID6ee392a9-0175-1000-050d-03bab9a06da7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39369-0175-1000-4c65-bce4b461b5f1","parent":{"ref":"EID6ee392a9-0175-1000-050d-03bab9a06da7"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39369-0175-1000-15a6-f03b9c3913cc","parent":{"ref":"EID6ee392a9-0175-1000-050d-03bab9a06da7"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39369-0175-1000-e5c4-c832063b4338","parent":{"ref":"EID6ee392a9-0175-1000-050d-03bab9a06da7"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39369-0175-1000-62f9-9467c60d05f9","parent":{"ref":"EID6ee392a9-0175-1000-050d-03bab9a06da7"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39369-0175-1000-1f26-2c9d703ec0ab","parent":{"ref":"EID6ee392a9-0175-1000-050d-03bab9a06da7"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee39369-0175-1000-10b4-007639ce72c9","parent":{"ref":"EID6ee392a9-0175-1000-050d-03bab9a06da7"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID66139a35-4294-4b5b-a26f-d19fbe5689b7"},{"ref":"EIDbf49b797-f48d-4aaa-ba22-2ef294092282"},{"ref":"EID33456ec8-0e1a-4bee-a7f2-608f31d15082"}]},"parent":{"ref":"EID6ee392a9-0175-1000-2bfa-0eaea0cc991c"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:06:49Z","duration":64,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:06:49Z","duration":192,"status":"PASSED"},{"id":"EID6ee39369-0175-1000-71c7-32f58ed2e27e","testStepResults":{"TestStepResult":{"id":"EID6ee39369-0175-1000-301a-bee152f2b642","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee393f8-0175-1000-df53-095f0eaa198c","parent":{"ref":"EID6ee39369-0175-1000-301a-bee152f2b642"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee393f8-0175-1000-7d92-8a933a963f24","parent":{"ref":"EID6ee39369-0175-1000-301a-bee152f2b642"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee393f8-0175-1000-b864-e00d94b0ead3","parent":{"ref":"EID6ee39369-0175-1000-301a-bee152f2b642"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee393f8-0175-1000-7a9d-c33eb328f585","parent":{"ref":"EID6ee39369-0175-1000-301a-bee152f2b642"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:06:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1020c25d-6cd6-46ed-a312-8639320eb2c8"},{"ref":"EID1fca3f8c-737d-460e-b1f5-619f7ba94f6f"},{"ref":"EID782b92af-c90c-4abe-ab39-611167e3934c"}]},"parent":{"ref":"EID6ee39369-0175-1000-71c7-32f58ed2e27e"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:06:49Z","duration":40,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:06:49Z","duration":143,"status":"PASSED"},{"id":"EID6ee393f8-0175-1000-2188-8e4f8b45ca22","testStepResults":{"TestStepResult":[{"id":"EID6ee393f8-0175-1000-b312-440e0661f69d","attachments":{"attachment":[{"ref":"EIDf5b873e1-7cdf-40ca-ad60-14b5b85192d7"},{"ref":"EID43cdb495-bf5d-4194-83e5-107190876353"},{"ref":"EIDdcb5cb8e-94ca-4d57-ac9e-d6693cd76980"},{"ref":"EIDfa2ff913-12a4-422c-8ae1-2c55ab5d70c4"}]},"parent":{"ref":"EID6ee393f8-0175-1000-2188-8e4f8b45ca22"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:06:49Z","duration":336,"status":"PASSED"},{"id":"EID6ee3958a-0175-1000-5e32-03cfc0076c10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3965f-0175-1000-7083-807d1992b9de","parent":{"ref":"EID6ee3958a-0175-1000-5e32-03cfc0076c10"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee3965f-0175-1000-b1e4-0a18f0e1c330","parent":{"ref":"EID6ee3958a-0175-1000-5e32-03cfc0076c10"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee3965f-0175-1000-f837-0b854d5ef348","parent":{"ref":"EID6ee3958a-0175-1000-5e32-03cfc0076c10"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee3965f-0175-1000-5443-1a57acd11c82","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee3958a-0175-1000-5e32-03cfc0076c10"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf0c0c48e-95c2-4ce7-8aa9-0b9d6ba07c39"},{"ref":"EID266ab1fe-eba7-4bc9-a5e3-fc8ef9c3d66a"},{"ref":"EID62c72fa4-1c78-4622-a264-c7d2374da846"}]},"parent":{"ref":"EID6ee393f8-0175-1000-2188-8e4f8b45ca22"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:06:50Z","duration":113,"status":"FAILED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:06:49Z","duration":615,"status":"FAILED"},{"id":"EID6ee3965f-0175-1000-5cb7-ecfa885fc6fa","testStepResults":{"TestStepResult":{"id":"EID6ee3965f-0175-1000-7d59-4b6678560f2b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee396f2-0175-1000-3e7f-6939258e220b","parent":{"ref":"EID6ee3965f-0175-1000-7d59-4b6678560f2b"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee396f2-0175-1000-301c-9c061e0c3368","parent":{"ref":"EID6ee3965f-0175-1000-7d59-4b6678560f2b"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee396f2-0175-1000-c570-1efe10b94c9a","parent":{"ref":"EID6ee3965f-0175-1000-7d59-4b6678560f2b"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee396f2-0175-1000-e299-1d69d480d4c0","parent":{"ref":"EID6ee3965f-0175-1000-7d59-4b6678560f2b"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID19cf9d9b-209a-4db9-a896-8d5d206f2455"},{"ref":"EID70f01b58-582a-469d-b931-ee925de3bd90"},{"ref":"EID963179c1-b670-406d-9dea-7a7704c11fa1"}]},"parent":{"ref":"EID6ee3965f-0175-1000-5cb7-ecfa885fc6fa"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:06:50Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:06:50Z","duration":164,"status":"PASSED"},{"id":"EID6ee39703-0175-1000-014a-9f92120c0923","testStepResults":{"TestStepResult":[{"id":"EID6ee39703-0175-1000-f934-c1fc3a861379","parent":{"ref":"EID6ee39703-0175-1000-014a-9f92120c0923"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee39703-0175-1000-7810-e52ca6f3d514","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee397a6-0175-1000-c59a-d4599e12294c","parent":{"ref":"EID6ee39703-0175-1000-7810-e52ca6f3d514"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee397a6-0175-1000-58c0-4b991fe31e9f","parent":{"ref":"EID6ee39703-0175-1000-7810-e52ca6f3d514"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee397a6-0175-1000-2639-5aa10681c55b","parent":{"ref":"EID6ee39703-0175-1000-7810-e52ca6f3d514"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee397a6-0175-1000-d51f-ef1678a083d2","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee39703-0175-1000-7810-e52ca6f3d514"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID555af60b-d15f-46d7-99ee-93b5e2db89c0"},{"ref":"EID76e2ae78-3583-4125-a24e-8c09479c1474"},{"ref":"EIDcd153ae5-bd4e-4e94-98ab-cb5d122e4351"}]},"parent":{"ref":"EID6ee39703-0175-1000-014a-9f92120c0923"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:06:50Z","duration":57,"status":"FAILED"}]},"parent":{"ref":"EID6ee37e13-0175-1000-4011-292527e5c3b8"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:06:50Z","duration":163,"status":"FAILED"}]},"parent":{"ref":"EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:06:44Z","duration":6547,"status":"FAILED"},{"id":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362","testCaseResults":{"TestCaseResult":[{"id":"EID6ee397a6-0175-1000-f8db-957d41626ee4","testStepResults":{"TestStepResult":[{"id":"EID6ee397af-0175-1000-d88b-ae1facc3422d","parent":{"ref":"EID6ee397a6-0175-1000-f8db-957d41626ee4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee397af-0175-1000-bd01-85a74317a3d0","parent":{"ref":"EID6ee397a6-0175-1000-f8db-957d41626ee4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:06:50Z","duration":52,"status":"PASSED"},{"id":"EID6ee397af-0175-1000-a9a0-a9e2c13a1d49","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3986b-0175-1000-877b-f10f76329327","parent":{"ref":"EID6ee397af-0175-1000-a9a0-a9e2c13a1d49"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee3986b-0175-1000-00a4-72ea30c98dfe","parent":{"ref":"EID6ee397af-0175-1000-a9a0-a9e2c13a1d49"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee3986b-0175-1000-1484-d3b4a2568622","parent":{"ref":"EID6ee397af-0175-1000-a9a0-a9e2c13a1d49"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID32a4517a-2ebe-4039-94bd-932252a4cd10"},{"ref":"EIDa4757c20-2d48-4920-9dfb-f278f8b59516"},{"ref":"EID1a627511-3eca-43e3-b490-9297b867f932"}]},"parent":{"ref":"EID6ee397a6-0175-1000-f8db-957d41626ee4"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:06:50Z","duration":68,"status":"PASSED"},{"id":"EID6ee3986b-0175-1000-f5dc-ee7b55be577c","attachments":{"attachment":{"ref":"EIDef7fbd4e-e94e-4d4f-b5ca-45dac34df7b8"}},"parent":{"ref":"EID6ee397a6-0175-1000-f8db-957d41626ee4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee39877-0175-1000-6e9d-6e451ba2f7f6","parent":{"ref":"EID6ee397a6-0175-1000-f8db-957d41626ee4"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:06:50Z","duration":26,"status":"PASSED"}]},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:06:50Z","duration":236,"status":"PASSED"},{"id":"EID6ee39892-0175-1000-fa51-d22fd341a253","testStepResults":{"TestStepResult":[{"id":"EID6ee39892-0175-1000-f680-be77b14ab06c","parent":{"ref":"EID6ee39892-0175-1000-fa51-d22fd341a253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:06:50Z","duration":113,"status":"PASSED"},{"id":"EID6ee39892-0175-1000-0873-ecfa5fdcab28","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee398e8-0175-1000-121a-99b9f5e973b0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39892-0175-1000-0873-ecfa5fdcab28"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:06:50Z","duration":12,"status":"FAILED"},{"id":"EID6ee398f4-0175-1000-5c01-7c68c8fc28a5","parent":{"ref":"EID6ee39892-0175-1000-0873-ecfa5fdcab28"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee398f4-0175-1000-4e03-4e0c9de45b68","parent":{"ref":"EID6ee39892-0175-1000-0873-ecfa5fdcab28"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee398f4-0175-1000-a784-122ae36f9cb1","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee39892-0175-1000-0873-ecfa5fdcab28"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"FAILED"},{"id":"EID6ee398f4-0175-1000-1a99-ed2c204e2d08","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee39892-0175-1000-0873-ecfa5fdcab28"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:06:50Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3895d0f4-00b5-4ae4-9491-cc4ba3875129"},{"ref":"EIDcd9e4749-4744-4bbf-9c98-5c3cfa368451"},{"ref":"EID099d2c0b-18ba-45c6-b8c5-fc177a8f61da"}]},"parent":{"ref":"EID6ee39892-0175-1000-fa51-d22fd341a253"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:06:50Z","duration":25,"status":"FAILED"}]},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:06:50Z","duration":99,"status":"FAILED"},{"id":"EID6ee398f5-0175-1000-2888-cdd1e3f004e1","testStepResults":{"TestStepResult":{"id":"EID6ee398f5-0175-1000-c2d5-a5f3048a4164","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39951-0175-1000-e67b-eeda7b7c9e2d","parent":{"ref":"EID6ee398f5-0175-1000-c2d5-a5f3048a4164"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39951-0175-1000-5988-cffd177dd186","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee398f5-0175-1000-c2d5-a5f3048a4164"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:06:51Z","duration":10,"status":"FAILED"},{"id":"EID6ee3995c-0175-1000-4f1d-02e97513afe6","parent":{"ref":"EID6ee398f5-0175-1000-c2d5-a5f3048a4164"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID823ab470-f4fc-4101-9cb3-04b20244864b"},{"ref":"EID80961ac1-b628-4f99-b9b3-e2c64d557955"},{"ref":"EID0b3ef28a-63f2-4d2b-9954-7c3d4beae942"}]},"parent":{"ref":"EID6ee398f5-0175-1000-2888-cdd1e3f004e1"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:06:50Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:06:50Z","duration":103,"status":"FAILED"},{"id":"EID6ee3995c-0175-1000-9856-8d8dffc8bcc1","testStepResults":{"TestStepResult":{"id":"EID6ee3995c-0175-1000-4711-3458103891e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee399c0-0175-1000-a446-27b37e7c1c06","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee3995c-0175-1000-4711-3458103891e7"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"},{"id":"EID6ee399c0-0175-1000-696d-7cf1fd17620a","parent":{"ref":"EID6ee3995c-0175-1000-4711-3458103891e7"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:06:51Z","duration":1,"status":"PASSED"},{"id":"EID6ee399c1-0175-1000-5ced-88a7da563675","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee3995c-0175-1000-4711-3458103891e7"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:06:51Z","duration":10,"status":"FAILED"},{"id":"EID6ee399cb-0175-1000-5e6a-c0fa772a1cde","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee3995c-0175-1000-4711-3458103891e7"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5a7fa202-0a0c-4cfc-8f70-08728c47066f"},{"ref":"EIDa0ef7e19-b49b-4551-a21b-a490bf499c64"},{"ref":"EIDe91cefba-2b5d-43cf-9bc6-8c2c763509a2"}]},"parent":{"ref":"EID6ee3995c-0175-1000-9856-8d8dffc8bcc1"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:06:51Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:06:51Z","duration":111,"status":"FAILED"},{"id":"EID6ee399cc-0175-1000-e6de-787913f0ab36","testStepResults":{"TestStepResult":{"id":"EID6ee399cc-0175-1000-f412-1672394a0d96","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39a41-0175-1000-0e98-7feb3ac6e48a","parent":{"ref":"EID6ee399cc-0175-1000-f412-1672394a0d96"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39a41-0175-1000-8bcf-bc99d553c943","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee399cc-0175-1000-f412-1672394a0d96"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:06:51Z","duration":11,"status":"FAILED"},{"id":"EID6ee39a4c-0175-1000-98fb-959b8ac8281c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee399cc-0175-1000-f412-1672394a0d96"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID96c89765-4ee9-46d9-a202-9fb2e5f45407"},{"ref":"EID3e0f1e45-9f24-491b-8e74-c607cf1a0813"},{"ref":"EIDc2c34307-b549-4589-b8be-9c76a97bf867"}]},"parent":{"ref":"EID6ee399cc-0175-1000-e6de-787913f0ab36"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:06:51Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:06:51Z","duration":135,"status":"FAILED"},{"id":"EID6ee39a53-0175-1000-d1bf-87b5b9332945","testStepResults":{"TestStepResult":{"id":"EID6ee39a53-0175-1000-a755-f9687189d89d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39aa5-0175-1000-e66d-c513ee8ff8ff","parent":{"ref":"EID6ee39a53-0175-1000-a755-f9687189d89d"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39aa5-0175-1000-b1e9-e20d9e63bc8f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39a53-0175-1000-a755-f9687189d89d"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:06:51Z","duration":10,"status":"FAILED"},{"id":"EID6ee39aaf-0175-1000-c5f3-db4d70ab4ac9","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee39a53-0175-1000-a755-f9687189d89d"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4b4fd024-81c4-4ef8-ab68-0e01ea84a494"},{"ref":"EIDe5fe116f-5678-4da6-b608-9ecdb1fe2163"},{"ref":"EID4030f437-9294-41f1-a356-e8bd53bbba53"}]},"parent":{"ref":"EID6ee39a53-0175-1000-d1bf-87b5b9332945"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:06:51Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:06:51Z","duration":92,"status":"FAILED"},{"id":"EID6ee39aaf-0175-1000-da6d-e1134b095e5f","testStepResults":{"TestStepResult":{"id":"EID6ee39aaf-0175-1000-e808-2aca0888a82a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39b20-0175-1000-32d5-20e4c7d0d9b9","parent":{"ref":"EID6ee39aaf-0175-1000-e808-2aca0888a82a"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39b20-0175-1000-b80c-f289a97d9146","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39aaf-0175-1000-e808-2aca0888a82a"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:06:51Z","duration":11,"status":"FAILED"},{"id":"EID6ee39b2b-0175-1000-29da-e1446908aa18","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee39aaf-0175-1000-e808-2aca0888a82a"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"},{"id":"EID6ee39b2b-0175-1000-82a2-3d20aaf4ff95","parent":{"ref":"EID6ee39aaf-0175-1000-e808-2aca0888a82a"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39b2b-0175-1000-609e-d5dd6ec34e9b","parent":{"ref":"EID6ee39aaf-0175-1000-e808-2aca0888a82a"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a2cb4c0-48c0-455e-95f0-a697ceed1ba8"},{"ref":"EIDd14e8296-843e-4ad1-895b-eea20ddd6676"},{"ref":"EID47fcd249-8bd5-4e59-9e5c-f755edbe151c"}]},"parent":{"ref":"EID6ee39aaf-0175-1000-da6d-e1134b095e5f"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:06:51Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:06:51Z","duration":124,"status":"FAILED"},{"id":"EID6ee39b2b-0175-1000-fbfb-1a034edbdfd5","testStepResults":{"TestStepResult":{"id":"EID6ee39b2b-0175-1000-6156-4b36af98d71f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39ba7-0175-1000-3f76-a7025206b741","parent":{"ref":"EID6ee39b2b-0175-1000-6156-4b36af98d71f"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39ba7-0175-1000-d0f0-35d24e4bae89","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39b2b-0175-1000-6156-4b36af98d71f"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:06:51Z","duration":10,"status":"FAILED"},{"id":"EID6ee39bb1-0175-1000-9201-ae14cc2fe803","parent":{"ref":"EID6ee39b2b-0175-1000-6156-4b36af98d71f"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID78658bd9-8f58-442f-a467-db1300cd292d"},{"ref":"EID02c2df25-64db-455d-a20f-074056dced01"},{"ref":"EIDe2be9dcd-a772-41d5-977d-024b42dac9d2"}]},"parent":{"ref":"EID6ee39b2b-0175-1000-fbfb-1a034edbdfd5"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:06:51Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:06:51Z","duration":134,"status":"FAILED"},{"id":"EID6ee39bb1-0175-1000-f2c8-8f8cc33f3663","testStepResults":{"TestStepResult":{"id":"EID6ee39bb2-0175-1000-bdcd-db5a1b3148e6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39c04-0175-1000-8069-a7480a8407aa","parent":{"ref":"EID6ee39bb2-0175-1000-bdcd-db5a1b3148e6"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39c04-0175-1000-4b37-cf5ca013044f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39bb2-0175-1000-bdcd-db5a1b3148e6"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:06:51Z","duration":12,"status":"FAILED"},{"id":"EID6ee39c10-0175-1000-a620-46c8ef26ece5","parent":{"ref":"EID6ee39bb2-0175-1000-bdcd-db5a1b3148e6"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3bd186e0-4bef-4f22-b498-441c057f419f"},{"ref":"EID9f384e4d-7463-4cbf-8be6-3bead02e2802"},{"ref":"EIDe6cf3605-8981-4b19-9425-7a531d09cd01"}]},"parent":{"ref":"EID6ee39bb1-0175-1000-f2c8-8f8cc33f3663"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:06:51Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:06:51Z","duration":95,"status":"FAILED"},{"id":"EID6ee39c10-0175-1000-6885-91998fb4f26d","testStepResults":{"TestStepResult":{"id":"EID6ee39c10-0175-1000-4211-d2e2a1ace979","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39c78-0175-1000-04bb-27405376e2af","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39c10-0175-1000-4211-d2e2a1ace979"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:06:51Z","duration":13,"status":"FAILED"},{"id":"EID6ee39c85-0175-1000-8cd1-c9d40b77e23b","parent":{"ref":"EID6ee39c10-0175-1000-4211-d2e2a1ace979"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee39c85-0175-1000-815b-5236f3978876","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee39c10-0175-1000-4211-d2e2a1ace979"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"},{"id":"EID6ee39c85-0175-1000-fa66-43ef7874bb47","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee39c10-0175-1000-4211-d2e2a1ace979"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:06:51Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDeee48913-9acc-410b-a161-5cb34a19e466"},{"ref":"EID30ad64dc-b1e7-4069-86bd-f8deaa6ca1be"},{"ref":"EIDd2fd1fb5-1393-4ed5-87ce-ef25726fd3cf"}]},"parent":{"ref":"EID6ee39c10-0175-1000-6885-91998fb4f26d"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:06:51Z","duration":38,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:06:51Z","duration":117,"status":"FAILED"},{"id":"EID6ee39c85-0175-1000-b7c6-bc63bc48ff0b","testStepResults":{"TestStepResult":{"id":"EID6ee39c85-0175-1000-2f81-5a7a252cff0f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39ce8-0175-1000-b14c-132aeaf518d3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39c85-0175-1000-2f81-5a7a252cff0f"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:06:52Z","duration":12,"status":"FAILED"},{"id":"EID6ee39cf4-0175-1000-42af-98d93e6362b6","parent":{"ref":"EID6ee39c85-0175-1000-2f81-5a7a252cff0f"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39cf4-0175-1000-f11f-d735521aedc1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee39c85-0175-1000-2f81-5a7a252cff0f"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"FAILED"},{"id":"EID6ee39cf4-0175-1000-7a99-dbeaba03bb9e","parent":{"ref":"EID6ee39c85-0175-1000-2f81-5a7a252cff0f"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfec26891-52f5-4684-b9b4-06f3f1ee0497"},{"ref":"EID9eff53f0-8c37-4b3b-8574-c701f1819924"},{"ref":"EIDd3b58ae8-3252-49a4-928c-3dd9e4c4b4d8"}]},"parent":{"ref":"EID6ee39c85-0175-1000-b7c6-bc63bc48ff0b"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:06:51Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:06:51Z","duration":111,"status":"FAILED"},{"id":"EID6ee39cf4-0175-1000-259a-e471dad25d0b","testStepResults":{"TestStepResult":[{"id":"EID6ee39cf4-0175-1000-437b-43b2cca43a3f","parent":{"ref":"EID6ee39cf4-0175-1000-259a-e471dad25d0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39cf4-0175-1000-5e8a-f660e2997620","parent":{"ref":"EID6ee39cf4-0175-1000-259a-e471dad25d0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:06:52Z","duration":176,"status":"PASSED"},{"id":"EID6ee39cf4-0175-1000-04d2-1b3b545efe3a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39dc3-0175-1000-e150-ac8e25dafcd8","parent":{"ref":"EID6ee39cf4-0175-1000-04d2-1b3b545efe3a"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39dc3-0175-1000-cf5c-dab46ea857ad","parent":{"ref":"EID6ee39cf4-0175-1000-04d2-1b3b545efe3a"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39dc3-0175-1000-853a-d35c22dc7ced","parent":{"ref":"EID6ee39cf4-0175-1000-04d2-1b3b545efe3a"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39dc3-0175-1000-e8e2-a7e1343749c9","parent":{"ref":"EID6ee39cf4-0175-1000-04d2-1b3b545efe3a"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDad17f911-5a67-457a-8bc2-f89c6f025264"},{"ref":"EID847a6c4f-f90e-4aaa-9671-038ad7266121"},{"ref":"EIDfee52f71-0f64-4be8-a3dc-9af5043166fc"}]},"parent":{"ref":"EID6ee39cf4-0175-1000-259a-e471dad25d0b"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:06:52Z","duration":56,"status":"PASSED"},{"id":"EID6ee39dc4-0175-1000-5346-f50448b5a0a9","attachments":{"attachment":{"ref":"EIDe55f6090-ffed-4511-847e-58ca774ed792"}},"parent":{"ref":"EID6ee39cf4-0175-1000-259a-e471dad25d0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:06:52Z","duration":4,"status":"PASSED"},{"id":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39e3a-0175-1000-606b-76dd71d9bee1","parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39e3a-0175-1000-91ee-3c3c7b723c43","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:06:52Z","duration":12,"status":"FAILED"},{"id":"EID6ee39e46-0175-1000-710f-c6dce4d7d421","parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39e46-0175-1000-2c9b-adb732e33b0c","parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39e46-0175-1000-9b9b-5d5e9f845b28","parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39e46-0175-1000-885e-b609053b5d37","parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39e46-0175-1000-8f4c-9725fc03b896","parent":{"ref":"EID6ee39dd2-0175-1000-0958-f8b5b95b22a0"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID780b1a0f-ace9-47b5-ad5b-74a8e83a1e5e"},{"ref":"EIDc0461eb7-d79f-4352-9531-caf9f9dec92b"},{"ref":"EID2e171123-e068-4524-8349-c1f50564397b"}]},"parent":{"ref":"EID6ee39cf4-0175-1000-259a-e471dad25d0b"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:06:52Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:06:52Z","duration":338,"status":"FAILED"},{"id":"EID6ee39e46-0175-1000-5d5c-7f579229afb7","testStepResults":{"TestStepResult":[{"id":"EID6ee39e46-0175-1000-5814-aba0b3632de3","parent":{"ref":"EID6ee39e46-0175-1000-5d5c-7f579229afb7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39e46-0175-1000-8338-9eeda9383c47","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee39f3c-0175-1000-f046-436ff9d98793","parent":{"ref":"EID6ee39e46-0175-1000-8338-9eeda9383c47"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39f3c-0175-1000-c511-f9614aa184be","parent":{"ref":"EID6ee39e46-0175-1000-8338-9eeda9383c47"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39f3c-0175-1000-f1b8-73267ca7faa7","parent":{"ref":"EID6ee39e46-0175-1000-8338-9eeda9383c47"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee39f3c-0175-1000-c027-44f32cb1dfa7","parent":{"ref":"EID6ee39e46-0175-1000-8338-9eeda9383c47"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ac23234-6ff7-45fe-b503-884a415b146a"},{"ref":"EIDbc6fba12-013f-4dd5-8eb0-b6b582d9a214"},{"ref":"EID701ec4ad-5ab0-440e-8fee-0a28fc13f304"}]},"parent":{"ref":"EID6ee39e46-0175-1000-5d5c-7f579229afb7"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:06:52Z","duration":145,"status":"PASSED"},{"id":"EID6ee39f48-0175-1000-89d8-1e4fac26e556","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee39f59-0175-1000-9125-457ae660d03a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3a042-0175-1000-b20b-671df1222a25","parent":{"ref":"EID6ee39f59-0175-1000-9125-457ae660d03a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a042-0175-1000-61ca-f9cc3bb82afe","parent":{"ref":"EID6ee39f59-0175-1000-9125-457ae660d03a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a042-0175-1000-c5f3-3da624948072","parent":{"ref":"EID6ee39f59-0175-1000-9125-457ae660d03a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID74199133-c1a0-4752-a99b-23b6654a8a76"},{"ref":"EIDe868e43b-4a05-409a-9ac1-5b8ff884f651"},{"ref":"EID140c89a3-7dc3-41cb-90ab-610567b0e9b5"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:52Z","duration":150,"status":"PASSED"},{"id":"EID6ee3a044-0175-1000-5167-a5f6021c850c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3a110-0175-1000-65f4-c272ee2198ac","parent":{"ref":"EID6ee3a044-0175-1000-5167-a5f6021c850c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a110-0175-1000-ac40-6c89f5c4afd0","parent":{"ref":"EID6ee3a044-0175-1000-5167-a5f6021c850c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a110-0175-1000-a7ce-7ed628ecf3f1","parent":{"ref":"EID6ee3a044-0175-1000-5167-a5f6021c850c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6d18a340-f43c-4130-bbfb-3d9afde2518f"},{"ref":"EID56f075a6-2cb4-43c2-aecb-90968d51c4b2"},{"ref":"EIDac388227-d8d1-4b02-b68c-ab8f4a7582b2"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:52Z","duration":150,"status":"PASSED"},{"id":"EID6ee3a111-0175-1000-9d67-6a06c569aaf8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3a1d6-0175-1000-f61b-17b65c00e14c","parent":{"ref":"EID6ee3a111-0175-1000-9d67-6a06c569aaf8"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a1d6-0175-1000-4537-99d657e23ec5","parent":{"ref":"EID6ee3a111-0175-1000-9d67-6a06c569aaf8"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a1d6-0175-1000-f5bc-37fdd13e27b0","parent":{"ref":"EID6ee3a111-0175-1000-9d67-6a06c569aaf8"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa95bca3f-9d1c-4ab3-88a9-512ceb67c3db"},{"ref":"EIDaa06fe03-477c-43b0-b221-beb4332e636f"},{"ref":"EIDeff735b1-5687-448b-b217-50c03bef67b2"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:06:53Z","duration":148,"status":"PASSED"}]},"parent":{"ref":"EID6ee39e46-0175-1000-5d5c-7f579229afb7"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:06:52Z","duration":655,"status":"PASSED"},{"id":"EID6ee3a1d7-0175-1000-9e56-ce3b6e098a10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3a254-0175-1000-033e-06b62d1166fc","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee3a1d7-0175-1000-9e56-ce3b6e098a10"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:06:53Z","duration":11,"status":"FAILED"},{"id":"EID6ee3a25f-0175-1000-eac3-63038d0d82a2","parent":{"ref":"EID6ee3a1d7-0175-1000-9e56-ce3b6e098a10"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a25f-0175-1000-d400-0bdff5de0353","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee3a1d7-0175-1000-9e56-ce3b6e098a10"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"FAILED"},{"id":"EID6ee3a25f-0175-1000-3f22-8773ab2281f1","parent":{"ref":"EID6ee3a1d7-0175-1000-9e56-ce3b6e098a10"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf8a4ef19-20a1-4cff-869c-b265abc45d9c"},{"ref":"EIDc0c9a1f1-414f-4d31-a171-a883f6793ce8"},{"ref":"EID0ccb3f56-849c-4f44-9148-8ef197669570"}]},"parent":{"ref":"EID6ee39e46-0175-1000-5d5c-7f579229afb7"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:06:53Z","duration":32,"status":"FAILED"}]},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:06:52Z","duration":1050,"status":"FAILED"},{"id":"EID6ee3a260-0175-1000-fe58-5edb5f21c4e0","testStepResults":{"TestStepResult":{"id":"EID6ee3a260-0175-1000-a9d6-596fa02ea415","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3a2e1-0175-1000-89a5-ae3cdbde92af","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee3a260-0175-1000-a9d6-596fa02ea415"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:06:53Z","duration":18,"status":"FAILED"},{"id":"EID6ee3a2f3-0175-1000-a237-c63f55939779","parent":{"ref":"EID6ee3a260-0175-1000-a9d6-596fa02ea415"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee3a2f3-0175-1000-0873-8e64af74ad41","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee3a260-0175-1000-a9d6-596fa02ea415"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"FAILED"},{"id":"EID6ee3a2f3-0175-1000-3f9b-f66d409c64f2","parent":{"ref":"EID6ee3a260-0175-1000-a9d6-596fa02ea415"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92c868d6-a91f-46ca-a661-a8d97ba3afc2"},{"ref":"EIDbab1fa12-9057-4c0d-b67e-b62e0fc5daf0"},{"ref":"EID2fb58d5e-3469-48b2-a8c3-0881bc676aab"}]},"parent":{"ref":"EID6ee3a260-0175-1000-fe58-5edb5f21c4e0"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:06:53Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee397a6-0175-1000-511a-e9ecbd0fb362"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:06:53Z","duration":174,"status":"FAILED"}]},"parent":{"ref":"EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:06:50Z","duration":2920,"status":"FAILED"},{"id":"EID6ee3a30e-0175-1000-256a-a20685fa86c5","testCaseResults":{"TestCaseResult":[{"id":"EID6ee3a30e-0175-1000-6aea-13f0f0772513","testStepResults":{"TestStepResult":{"id":"EID6ee3a30e-0175-1000-70fc-46e6803d6a86","parent":{"ref":"EID6ee3a30e-0175-1000-6aea-13f0f0772513"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee3a30e-0175-1000-8844-ce915c8436bf","testStepResults":{"TestStepResult":{"id":"EID6ee3a30e-0175-1000-8c95-cae3f1e0a7a5","parent":{"ref":"EID6ee3a30e-0175-1000-8844-ce915c8436bf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee3a30e-0175-1000-e09d-4284aa49cafe","testStepResults":{"TestStepResult":{"id":"EID6ee3a30e-0175-1000-0263-6d3695383307","parent":{"ref":"EID6ee3a30e-0175-1000-e09d-4284aa49cafe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee3a30e-0175-1000-083b-255a47f3da14","testStepResults":{"TestStepResult":{"id":"EID6ee3a30e-0175-1000-ca6b-affc60d6f490","parent":{"ref":"EID6ee3a30e-0175-1000-083b-255a47f3da14"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee3a30f-0175-1000-e9a0-5d189635d5cf","testStepResults":{"TestStepResult":{"id":"EID6ee3a31a-0175-1000-a34f-bdf1f5983390","parent":{"ref":"EID6ee3a30f-0175-1000-e9a0-5d189635d5cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:06:53Z","duration":11,"status":"SKIPPED"},{"id":"EID6ee3a31a-0175-1000-a9ec-65a7a3e4ad21","testStepResults":{"TestStepResult":{"id":"EID6ee3a31a-0175-1000-f685-e87dfc6ed67d","parent":{"ref":"EID6ee3a31a-0175-1000-a9ec-65a7a3e4ad21"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:06:53Z","duration":1,"status":"SKIPPED"},{"id":"EID6ee3a31b-0175-1000-9f46-286f33f4f4ed","testStepResults":{"TestStepResult":{"id":"EID6ee3a31b-0175-1000-39af-81f4e8bc69e3","parent":{"ref":"EID6ee3a31b-0175-1000-9f46-286f33f4f4ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:06:53Z","duration":367,"status":"SKIPPED"}},"parent":{"ref":"EID6ee3a30e-0175-1000-256a-a20685fa86c5"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:06:53Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:06:53Z","duration":13,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EIDaf572255-188b-4c21-b216-d756af4eb5eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDaf572255-188b-4c21-b216-d756af4eb5eb"}},{"type":"Error","id":"EID7b3d9727-c9cb-4536-bac2-d4aa8aa25ad0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID7b3d9727-c9cb-4536-bac2-d4aa8aa25ad0"}},{"type":"LogFile","id":"EID90def791-4375-4ac9-8bbd-fcaceaaf5637","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID90def791-4375-4ac9-8bbd-fcaceaaf5637"}},{"type":"ServiceEndpoint","id":"EIDfddba5d6-ef04-4246-8a74-7596c10cbc3a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID9bd42647-23bf-4535-830a-8189e4a4f98b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID9bd42647-23bf-4535-830a-8189e4a4f98b"}},{"type":"GetParameter","id":"EIDe6cf3605-8981-4b19-9425-7a531d09cd01","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID9eff53f0-8c37-4b3b-8574-c701f1819924","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID9eff53f0-8c37-4b3b-8574-c701f1819924"}},{"type":"ServiceEndpoint","id":"EID1020c25d-6cd6-46ed-a312-8639320eb2c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID76e2ae78-3583-4125-a24e-8c09479c1474","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID76e2ae78-3583-4125-a24e-8c09479c1474"}},{"type":"ServiceEndpoint","id":"EIDa5bf70ac-edbf-4b7b-928e-1bbd6129b2b1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf0c0c48e-95c2-4ce7-8aa9-0b9d6ba07c39","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID7d8bd063-5443-4647-8ae2-4a51bb7fafb2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID7d8bd063-5443-4647-8ae2-4a51bb7fafb2"}},{"type":"ServiceEndpoint","id":"EIDf8a4ef19-20a1-4cff-869c-b265abc45d9c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID963179c1-b670-406d-9dea-7a7704c11fa1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6c64ce86-898c-4ff0-a478-d9f5ff39cd4c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5a7fa202-0a0c-4cfc-8f70-08728c47066f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID353fb4ae-1e32-4f52-a532-5d783fb4b9bc","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID353fb4ae-1e32-4f52-a532-5d783fb4b9bc"}},{"type":"GetParameter","id":"EID2e171123-e068-4524-8349-c1f50564397b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID74199133-c1a0-4752-a99b-23b6654a8a76","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Error","id":"EID101894f0-eafc-43ad-9944-efb65e785352","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID101894f0-eafc-43ad-9944-efb65e785352"}},{"type":"ServiceResponse","id":"EID56f075a6-2cb4-43c2-aecb-90968d51c4b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID56f075a6-2cb4-43c2-aecb-90968d51c4b2"}},{"type":"Message","id":"EID6786b2be-ab62-4741-8d7e-6d93e19f6071","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID6786b2be-ab62-4741-8d7e-6d93e19f6071"}},{"type":"ServiceResponse","id":"EIDe5fe116f-5678-4da6-b608-9ecdb1fe2163","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDe5fe116f-5678-4da6-b608-9ecdb1fe2163"}},{"type":"GetParameter","id":"EID3baed7fc-62dd-4b6d-8146-d74e949c0b5d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfc0dffcd-697c-40da-93e6-fdb84e3553e7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID15391eb4-4a05-4b78-8f71-750deca49948","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID15391eb4-4a05-4b78-8f71-750deca49948"}},{"type":"ServiceEndpoint","id":"EID780b1a0f-ace9-47b5-ad5b-74a8e83a1e5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID19cf9d9b-209a-4db9-a896-8d5d206f2455","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID96c89765-4ee9-46d9-a202-9fb2e5f45407","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID30ad64dc-b1e7-4069-86bd-f8deaa6ca1be","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID30ad64dc-b1e7-4069-86bd-f8deaa6ca1be"}},{"type":"ServiceResponse","id":"EIDcd9e4749-4744-4bbf-9c98-5c3cfa368451","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDcd9e4749-4744-4bbf-9c98-5c3cfa368451"}},{"type":"ServiceResponse","id":"EIDd58e8063-63cd-4851-abd4-ba73ae8c7df5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDd58e8063-63cd-4851-abd4-ba73ae8c7df5"}},{"type":"ServiceResponse","id":"EID0b14f9a9-ad5c-4596-b678-a0482887b9df","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID0b14f9a9-ad5c-4596-b678-a0482887b9df"}},{"type":"Message","id":"EIDaff926a4-0658-4b98-a4a6-52cd613b4053","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDaff926a4-0658-4b98-a4a6-52cd613b4053"}},{"type":"ServiceResponse","id":"EID2db56f1c-7c65-4e05-9d49-5d80c23a9d5c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID2db56f1c-7c65-4e05-9d49-5d80c23a9d5c"}},{"type":"GetParameter","id":"EIDeff735b1-5687-448b-b217-50c03bef67b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID1ab712fe-09db-4f4f-a2f1-5ed3118059d3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe91cefba-2b5d-43cf-9bc6-8c2c763509a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDd3b58ae8-3252-49a4-928c-3dd9e4c4b4d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDfec26891-52f5-4684-b9b4-06f3f1ee0497","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID910e81b3-7550-4413-9931-b648e4ad1ccb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3bd186e0-4bef-4f22-b498-441c057f419f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDeee48913-9acc-410b-a161-5cb34a19e466","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDd14e8296-843e-4ad1-895b-eea20ddd6676","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDd14e8296-843e-4ad1-895b-eea20ddd6676"}},{"type":"GetParameter","id":"EID13415609-06d0-43e8-9ad8-0574718b1ce1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID67af464e-2766-4f17-9710-932b10bbe941","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID67af464e-2766-4f17-9710-932b10bbe941"}},{"type":"Message","id":"EIDf5b873e1-7cdf-40ca-ad60-14b5b85192d7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDf5b873e1-7cdf-40ca-ad60-14b5b85192d7"}},{"type":"ServiceEndpoint","id":"EID547c9a45-a127-4d69-9d29-aea85b2b7ad1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDdc032220-b32f-4f6b-9016-725963d44381","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDdc032220-b32f-4f6b-9016-725963d44381"}},{"type":"ServiceResponse","id":"EIDbf49b797-f48d-4aaa-ba22-2ef294092282","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDbf49b797-f48d-4aaa-ba22-2ef294092282"}},{"type":"Message","id":"EID6f87a8fd-e466-4166-8643-ff6828408f62","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID6f87a8fd-e466-4166-8643-ff6828408f62"}},{"type":"Message","id":"EID4b3e2578-a1fb-446e-86a1-adf3a684d3a4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID4b3e2578-a1fb-446e-86a1-adf3a684d3a4"}},{"type":"ServiceResponse","id":"EIDc0c9a1f1-414f-4d31-a171-a883f6793ce8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDc0c9a1f1-414f-4d31-a171-a883f6793ce8"}},{"type":"GetParameter","id":"EID099d2c0b-18ba-45c6-b8c5-fc177a8f61da","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID206a94bf-f42d-4ffd-9d7d-d8773365dbc1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID206a94bf-f42d-4ffd-9d7d-d8773365dbc1"}},{"type":"Message","id":"EIDd93bbf99-7a8d-45e1-9425-ac7b05991718","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDd93bbf99-7a8d-45e1-9425-ac7b05991718"}},{"type":"ServiceEndpoint","id":"EID8dbd5f7d-2f4e-43e0-924c-1138e3c3ab11","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID76d9e683-fc03-41e9-a5a1-3e2236b5bcc6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID66139a35-4294-4b5b-a26f-d19fbe5689b7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe868e43b-4a05-409a-9ac1-5b8ff884f651","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDe868e43b-4a05-409a-9ac1-5b8ff884f651"}},{"type":"Error","id":"EIDccf17cdc-c31d-4765-b256-538a55899036","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDccf17cdc-c31d-4765-b256-538a55899036"}},{"type":"GetParameter","id":"EID33456ec8-0e1a-4bee-a7f2-608f31d15082","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc863a893-738a-4f11-8ba4-4dfc07fed172","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3085dfe0-085e-476d-96e4-c3d888df4bbb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID21129a57-897b-45f3-b76e-2065549ae93a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID21129a57-897b-45f3-b76e-2065549ae93a"}},{"type":"ServiceEndpoint","id":"EID92c868d6-a91f-46ca-a661-a8d97ba3afc2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID859df24d-b82b-4128-a3b2-cc22a4c5bb3f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0295b212-4a2c-4722-934a-b892841340fa","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID0295b212-4a2c-4722-934a-b892841340fa"}},{"type":"Error","id":"EIDfa1ac4f7-2e5b-4aa4-b8e0-5d6e2c5ba2be","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDfa1ac4f7-2e5b-4aa4-b8e0-5d6e2c5ba2be"}},{"type":"ServiceEndpoint","id":"EID823ab470-f4fc-4101-9cb3-04b20244864b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID555af60b-d15f-46d7-99ee-93b5e2db89c0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID18703854-1f65-4dd9-be9a-f0f818399820","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID701ec4ad-5ab0-440e-8fee-0a28fc13f304","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID4030f437-9294-41f1-a356-e8bd53bbba53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDcafe9af8-73fb-469a-b399-720b63b90b16","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID78658bd9-8f58-442f-a467-db1300cd292d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDd2fd1fb5-1393-4ed5-87ce-ef25726fd3cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID140c89a3-7dc3-41cb-90ab-610567b0e9b5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Error","id":"EID16a0c515-2494-4f3b-b998-5deed9367df7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID16a0c515-2494-4f3b-b998-5deed9367df7"}},{"type":"Message","id":"EIDb370a515-862f-471c-8273-023f3bd977bb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDb370a515-862f-471c-8273-023f3bd977bb"}},{"type":"Message","id":"EID9d1bb8a8-d95a-4fb7-a71c-6ba9a075c5d1","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID9d1bb8a8-d95a-4fb7-a71c-6ba9a075c5d1"}},{"type":"ServiceResponse","id":"EID70f01b58-582a-469d-b931-ee925de3bd90","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID70f01b58-582a-469d-b931-ee925de3bd90"}},{"type":"Message","id":"EIDa7b7f9c0-4b2d-419f-ac2c-e03cedf44d32","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDa7b7f9c0-4b2d-419f-ac2c-e03cedf44d32"}},{"type":"GetParameter","id":"EIDeb4db861-f00c-43fa-9d3e-a59e7141c26a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Error","id":"EID2adc3419-0c2d-4957-a55f-9f870638db8c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID2adc3419-0c2d-4957-a55f-9f870638db8c"}},{"type":"ServiceResponse","id":"EID266ab1fe-eba7-4bc9-a5e3-fc8ef9c3d66a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID266ab1fe-eba7-4bc9-a5e3-fc8ef9c3d66a"}},{"type":"ServiceResponse","id":"EIDbc6fba12-013f-4dd5-8eb0-b6b582d9a214","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDbc6fba12-013f-4dd5-8eb0-b6b582d9a214"}},{"type":"GetParameter","id":"EID3afaf194-86fb-4656-a566-c9e34579a4a4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3e0f1e45-9f24-491b-8e74-c607cf1a0813","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID3e0f1e45-9f24-491b-8e74-c607cf1a0813"}},{"type":"ServiceResponse","id":"EID80961ac1-b628-4f99-b9b3-e2c64d557955","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID80961ac1-b628-4f99-b9b3-e2c64d557955"}},{"type":"ServiceEndpoint","id":"EID32a4517a-2ebe-4039-94bd-932252a4cd10","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDef7fbd4e-e94e-4d4f-b5ca-45dac34df7b8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDef7fbd4e-e94e-4d4f-b5ca-45dac34df7b8"}},{"type":"Message","id":"EIDa567ccc6-0983-4135-a13c-c5db4d223a2f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDa567ccc6-0983-4135-a13c-c5db4d223a2f"}},{"type":"ServiceResponse","id":"EIDa4757c20-2d48-4920-9dfb-f278f8b59516","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDa4757c20-2d48-4920-9dfb-f278f8b59516"}},{"type":"GetParameter","id":"EID2fb58d5e-3469-48b2-a8c3-0881bc676aab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID961a274c-3fb8-4ca0-b9d3-cf032452f319","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4b4fd024-81c4-4ef8-ab68-0e01ea84a494","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDeb6f04ce-3b17-4c35-8f8b-25f6fb2c522c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDfa2ff913-12a4-422c-8ae1-2c55ab5d70c4","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDfa2ff913-12a4-422c-8ae1-2c55ab5d70c4"}},{"type":"GetParameter","id":"EIDcd153ae5-bd4e-4e94-98ab-cb5d122e4351","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID910606e4-3c61-4694-8a0d-0f3783161f01","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID910606e4-3c61-4694-8a0d-0f3783161f01"}},{"type":"GetParameter","id":"EID62c72fa4-1c78-4622-a264-c7d2374da846","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDdcb5cb8e-94ca-4d57-ac9e-d6693cd76980","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDdcb5cb8e-94ca-4d57-ac9e-d6693cd76980"}},{"type":"ServiceEndpoint","id":"EID3895d0f4-00b5-4ae4-9491-cc4ba3875129","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID8d09580e-e47e-479a-b0e3-db32abdf1be1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID8d09580e-e47e-479a-b0e3-db32abdf1be1"}},{"type":"ServiceEndpoint","id":"EID743eea24-b408-4f02-b54b-efabaa5e906e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID91e18ff7-8086-47e2-922d-93c59a9077e5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc2c34307-b549-4589-b8be-9c76a97bf867","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID02c2df25-64db-455d-a20f-074056dced01","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID02c2df25-64db-455d-a20f-074056dced01"}},{"type":"GetParameter","id":"EID27dcd268-4a3f-43cb-b78b-b86c8c3652dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1a627511-3eca-43e3-b490-9297b867f932","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6d424729-1554-40ac-a168-a2ae8fb0acc0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID6d424729-1554-40ac-a168-a2ae8fb0acc0"}},{"type":"ServiceResponse","id":"EIDe0fce02e-e421-4b2f-b66e-895e5d066c26","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDe0fce02e-e421-4b2f-b66e-895e5d066c26"}},{"type":"Error","id":"EIDa637ef9f-2f6d-4839-b486-c790ac26665f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDa637ef9f-2f6d-4839-b486-c790ac26665f"}},{"type":"Error","id":"EIDb9435eac-e06d-4dc8-8bdb-2c3598823f93","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDb9435eac-e06d-4dc8-8bdb-2c3598823f93"}},{"type":"ServiceEndpoint","id":"EID215fa88d-43fa-4150-9e81-d6f49effceea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf734862c-844a-47da-ab94-8e219eea7a06","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Error","id":"EID2a985607-6efe-4092-be50-4a7b432a4997","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID2a985607-6efe-4092-be50-4a7b432a4997"}},{"type":"ServiceResponse","id":"EIDaa06fe03-477c-43b0-b221-beb4332e636f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDaa06fe03-477c-43b0-b221-beb4332e636f"}},{"type":"GetParameter","id":"EIDac388227-d8d1-4b02-b68c-ab8f4a7582b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID8f1a0caa-c5b4-45f3-9f42-e45d40535a99","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc0461eb7-d79f-4352-9531-caf9f9dec92b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDc0461eb7-d79f-4352-9531-caf9f9dec92b"}},{"type":"ServiceResponse","id":"EIDbab1fa12-9057-4c0d-b67e-b62e0fc5daf0","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDbab1fa12-9057-4c0d-b67e-b62e0fc5daf0"}},{"type":"Message","id":"EID14791756-9a12-4f55-b70b-8dddfa07943e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID14791756-9a12-4f55-b70b-8dddfa07943e"}},{"type":"ServiceResponse","id":"EIDa0ef7e19-b49b-4551-a21b-a490bf499c64","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDa0ef7e19-b49b-4551-a21b-a490bf499c64"}},{"type":"GetParameter","id":"EIDfee52f71-0f64-4be8-a3dc-9af5043166fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID19273994-ecd2-42ae-86ca-f4d9a644b374","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID19273994-ecd2-42ae-86ca-f4d9a644b374"}},{"type":"Message","id":"EIDcfa10e12-b474-4cd7-9580-c38fe9dd947d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDcfa10e12-b474-4cd7-9580-c38fe9dd947d"}},{"type":"ServiceEndpoint","id":"EID1ac23234-6ff7-45fe-b503-884a415b146a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID47fcd249-8bd5-4e59-9e5c-f755edbe151c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID658a0a9e-a907-442c-bd27-4521f203d441","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID658a0a9e-a907-442c-bd27-4521f203d441"}},{"type":"GetParameter","id":"EIDe2be9dcd-a772-41d5-977d-024b42dac9d2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDe2ab73f5-1f63-4073-b37f-f3a71c5c8ef6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDe2ab73f5-1f63-4073-b37f-f3a71c5c8ef6"}},{"type":"ServiceResponse","id":"EIDbb303e8b-804e-4c4f-97f4-f31c66dc9325","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDbb303e8b-804e-4c4f-97f4-f31c66dc9325"}},{"type":"GetParameter","id":"EID782b92af-c90c-4abe-ab39-611167e3934c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9f384e4d-7463-4cbf-8be6-3bead02e2802","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID9f384e4d-7463-4cbf-8be6-3bead02e2802"}},{"type":"Message","id":"EID1a88b553-8c62-4a0c-b697-854d5fe57c7f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID1a88b553-8c62-4a0c-b697-854d5fe57c7f"}},{"type":"ServiceEndpoint","id":"EID37ba3243-5c5f-4ef6-99a9-660b285f0b75","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDad17f911-5a67-457a-8bc2-f89c6f025264","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa95bca3f-9d1c-4ab3-88a9-512ceb67c3db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID6d18a340-f43c-4130-bbfb-3d9afde2518f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID6325f624-1367-4965-a74a-b0c07ec21570","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID6325f624-1367-4965-a74a-b0c07ec21570"}},{"type":"ServiceResponse","id":"EID8fdc6ffb-11c1-4e35-86f9-a2d43d4b1562","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID8fdc6ffb-11c1-4e35-86f9-a2d43d4b1562"}},{"type":"ServiceResponse","id":"EID1fca3f8c-737d-460e-b1f5-619f7ba94f6f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID1fca3f8c-737d-460e-b1f5-619f7ba94f6f"}},{"type":"Message","id":"EID43cdb495-bf5d-4194-83e5-107190876353","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID43cdb495-bf5d-4194-83e5-107190876353"}},{"type":"Error","id":"EIDbe386912-aac2-4407-bd6d-76680368cf16","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDbe386912-aac2-4407-bd6d-76680368cf16"}},{"type":"Message","id":"EID17a3208b-c449-44a0-8a9a-c15dcb9391a3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID17a3208b-c449-44a0-8a9a-c15dcb9391a3"}},{"type":"GetParameter","id":"EID0aaa6ca0-1200-4ac4-8ee0-76a9eed8c9e6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0e260ccd-48b4-4061-8145-e896d7745241","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID0e260ccd-48b4-4061-8145-e896d7745241"}},{"type":"Error","id":"EIDb9eab29c-16aa-4e7c-91de-eaa920372e60","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDb9eab29c-16aa-4e7c-91de-eaa920372e60"}},{"type":"Message","id":"EIDf175083f-026d-42a2-ad0a-f46dc9037b19","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDf175083f-026d-42a2-ad0a-f46dc9037b19"}},{"type":"GetParameter","id":"EIDeaafe1f2-3672-486e-b4c5-d0bea434c521","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDe55f6090-ffed-4511-847e-58ca774ed792","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EIDe55f6090-ffed-4511-847e-58ca774ed792"}},{"type":"GetParameter","id":"EID0ccb3f56-849c-4f44-9148-8ef197669570","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID8dc434c2-04cc-40ff-80cb-75921d248ed6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID8dc434c2-04cc-40ff-80cb-75921d248ed6"}},{"type":"ServiceResponse","id":"EID847a6c4f-f90e-4aaa-9671-038ad7266121","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID847a6c4f-f90e-4aaa-9671-038ad7266121"}},{"type":"GetParameter","id":"EID938aa210-2ec8-43b8-9a5a-b7e37de49005","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0b3ef28a-63f2-4d2b-9954-7c3d4beae942","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID4335695d-675c-4f9a-b52c-ade8c28f9fd0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID4335695d-675c-4f9a-b52c-ade8c28f9fd0"}},{"type":"ServiceEndpoint","id":"EID3a2cb4c0-48c0-455e-95f0-a697ceed1ba8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID69579b05-ccbb-4569-a2b2-a0841ab4f66a","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8b70bc7c-83b1-4b3e-b336-f9bc98f93f2b/Attachments/EID69579b05-ccbb-4569-a2b2-a0841ab4f66a"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:06:43Z","duration":9998,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:07:01.560 [print] EIDcc34ea27-265e-49a1-91f7-abac50e9b010
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:07:01.561 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:07:01.561 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:07:01.561 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:07:01.561 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/cc34ea27-265e-49a1-91f7-abac50e9b010.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:07:01.561 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/cc34ea27-265e-49a1-91f7-abac50e9b010.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:07:01.561 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDcc34ea27-265e-49a1-91f7-abac50e9b010/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.008
* def a = embedUrl ("../../" + jsonPath , status ) 0.006
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:07:01.586 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:07:01.586 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.003
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.399
Scenario check service url
Steps
* print "testing url:" + metadata.url 0.000
11:10:43.472 [print] testing url:https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?
Given url metadata.url 0.000
When method HEAD 0.398
11:10:43.473 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:43.871 response time in milliseconds: 398.04
1 < 400
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:43 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:13 - status code was: 400, expected: 200, response time: 398, url: https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?, response: 
11:10:43.871 status code was: 400, expected: 200, response time: 398, url: https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?, response:
0.413
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.413
11:10:43.876 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:44.286 response time in milliseconds: 408.95
1 < 400
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:10:43 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:19 - status code was: 400, expected: 200, response time: 409, url: https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?, response: 
11:10:44.290 status code was: 400, expected: 200, response time: 409, url: https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?, response:
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.397
* print "testing url:" + metadata.url 0.000
11:11:01.373 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.397
11:11:01.373 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:01.768 response time in milliseconds: 394.42
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:11:01 GMT
1 < ETag: "18e6e-5af58ad5256ff-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.403
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.402
11:11:01.777 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:02.178 response time in milliseconds: 401.27
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:11:02 GMT
1 < ETag: "18e6e-5af58ad5256ff-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:11:02.180 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.424
* print "testing url:" + metadata.url 0.000
11:12:12.970 [print] testing url:https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.423
11:12:12.973 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:13.394 response time in milliseconds: 420.89
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:13 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.449
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.448
11:12:13.419 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:13.852 response time in milliseconds: 432.23
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:13 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:13.852 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.690
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:17.514 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.689
11:13:17.515 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 282
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities"}}}

11:13:19.197 response time in milliseconds: 1576.88
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883599024","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:19.204 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.418
* print "testing url:" + metadata.url 0.000
11:16:51.503 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.418
11:16:51.504 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:51.922 response time in milliseconds: 418.17
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:51 GMT
1 < ETag: "19a18-5af58a652f9d5-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.393
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.392
11:16:51.928 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:52.320 response time in milliseconds: 391.46
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:52 GMT
1 < ETag: "19a18-5af58ad529196-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:52.322 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.401
* print "testing url:" + metadata.url 0.000
11:16:35.017 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.401
11:16:35.017 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:35.418 response time in milliseconds: 401.11
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4277
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:16:35 GMT
1 < Etag: "5c262b5c1b0f1bdc5a11f94b82d3a6c1-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:12:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223D06C5F03E6
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.396
Given url metadata.url 0.000
When method HEAD 0.395
11:16:35.423 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:35.816 response time in milliseconds: 392.52
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4277
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:16:35 GMT
1 < Etag: "5c262b5c1b0f1bdc5a11f94b82d3a6c1-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:12:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223D084863208
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
56.673
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:57.325 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.716
11:09:57.326 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:10:28.040 response time in milliseconds: 29986.75
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:27 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:10:11 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/79694b8d-d89e-4ab6-b867-eaa5799017ee.json","testRuns":{"TestRun":{"id":"EID79694b8d-d89e-4ab6-b867-eaa5799017ee","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:08.551Z","testTasks":{"TestTask":{"id":"EIDf40d70f0-5d7a-4630-8ed4-5d40af02a8c6","parent":{"ref":"EID79694b8d-d89e-4ab6-b867-eaa5799017ee"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0f96ec4d-e691-4b70-8972-702363fa76cc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0f96ec4d-e691-4b70-8972-702363fa76cc","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:09:57.774Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:05.877Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.001
11:10:28.044 [print] EID79694b8d-d89e-4ab6-b867-eaa5799017ee
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:28.045 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:10:28.045 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:28.045 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/79694b8d-d89e-4ab6-b867-eaa5799017ee.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:10:28.045 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:10:28.046 [print] statuspath TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee
* print 'progresspath ', progresspath 0.000
11:10:28.046 [print] progresspath  TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/progress
Given path progresspath 0.000
When method GET 0.516
11:10:28.049 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:28.563 response time in milliseconds: 513.75
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:10:28 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:10:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:08 UTC 2020)","28.10.2020 11:10:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:08 - Preparing 1 Test Task:","28.10.2020 11:10:08 -  TestTask 1 (f40d70f0-5d7a-4630-8ed4-5d40af02a8c6)","28.10.2020 11:10:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:08 -  with parameters: ","28.10.2020 11:10:08 - etf.testcases = *","28.10.2020 11:10:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:08 - Setting state to CREATED","28.10.2020 11:10:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.79694b8d-d89e-4ab6-b867-eaa5799017ee at 2020-10-28T11:10:12Z","28.10.2020 11:10:12 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:12 - Project Properties: ","28.10.2020 11:10:12 - etf.testcases - * ","28.10.2020 11:10:12 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:10:12 - username -  ","28.10.2020 11:10:12 - authUser -  ","28.10.2020 11:10:12 - authMethod - basic ","28.10.2020 11:10:12 - TestRunTask initialized","28.10.2020 11:10:16 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:10:16 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:10:18 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:10:19 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:22 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:10:28.563 [print] {
  "val": "148",
  "max": "149",
  "log": [
    "28.10.2020 11:10:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:08 UTC 2020)",
    "28.10.2020 11:10:08 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:10:08 - Preparing 1 Test Task:",
    "28.10.2020 11:10:08 -  TestTask 1 (f40d70f0-5d7a-4630-8ed4-5d40af02a8c6)",
    "28.10.2020 11:10:08 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:10:08 -  with parameters: ",
    "28.10.2020 11:10:08 - etf.testcases = *",
    "28.10.2020 11:10:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:10:08 - Setting state to CREATED",
    "28.10.2020 11:10:08 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:10:11 - Starting TestRun.79694b8d-d89e-4ab6-b867-eaa5799017ee at 2020-10-28T11:10:12Z",
    "28.10.2020 11:10:12 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:10:12 - Project Properties: ",
    "28.10.2020 11:10:12 - etf.testcases - * ",
    "28.10.2020 11:10:12 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:10:12 - username -  ",
    "28.10.2020 11:10:12 - authUser -  ",
    "28.10.2020 11:10:12 - authMethod - basic ",
    "28.10.2020 11:10:12 - TestRunTask initialized",
    "28.10.2020 11:10:16 ERROR Response status code:500 is not in acceptable list of status codes",
    "28.10.2020 11:10:16 ERROR Assertion failed with error 'TR.unexpectedHtml'",
    "28.10.2020 11:10:18 ERROR Assertion failed with error 'TR.unexpectedHtml'",
    "28.10.2020 11:10:19 ERROR Assertion failed with error 'TR.uniqueDatasetIdentifiers'",
    "28.10.2020 11:10:20 ERROR Assertion failed with error 'TR.missingLinkToMetadataRecordForDownloadService'",
    "28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:20 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:10:20 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingOneFeedEntryWithDlFile'",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingFeedUpdatedInformation'",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingLinkToRegistry'",
    "28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:21 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
    "28.10.2020 11:10:22 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:23 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
    "28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:10:23 ERROR Assertion failed with error 'TR.missingFeedRootElement'"
  ]
}
Given path progresspath 0.000
When method GET 11.561
11:10:28.564 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:29.077 response time in milliseconds: 512.44
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:10:29 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:10:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:08 UTC 2020)","28.10.2020 11:10:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:08 - Preparing 1 Test Task:","28.10.2020 11:10:08 -  TestTask 1 (f40d70f0-5d7a-4630-8ed4-5d40af02a8c6)","28.10.2020 11:10:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:08 -  with parameters: ","28.10.2020 11:10:08 - etf.testcases = *","28.10.2020 11:10:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:08 - Setting state to CREATED","28.10.2020 11:10:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.79694b8d-d89e-4ab6-b867-eaa5799017ee at 2020-10-28T11:10:12Z","28.10.2020 11:10:12 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:12 - Project Properties: ","28.10.2020 11:10:12 - etf.testcases - * ","28.10.2020 11:10:12 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:10:12 - username -  ","28.10.2020 11:10:12 - authUser -  ","28.10.2020 11:10:12 - authMethod - basic ","28.10.2020 11:10:12 - TestRunTask initialized","28.10.2020 11:10:16 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:10:16 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:10:18 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:10:19 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:22 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:10:29.077 retry condition not satisfied: response.val == response.max
11:10:29.077 sleeping before retry #1
11:10:34.078 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:34.598 response time in milliseconds: 519.28
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:10:34 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:10:08 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:08 UTC 2020)","28.10.2020 11:10:08 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:08 - Preparing 1 Test Task:","28.10.2020 11:10:08 -  TestTask 1 (f40d70f0-5d7a-4630-8ed4-5d40af02a8c6)","28.10.2020 11:10:08 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:08 -  with parameters: ","28.10.2020 11:10:08 - etf.testcases = *","28.10.2020 11:10:08 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:08 - Setting state to CREATED","28.10.2020 11:10:08 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.79694b8d-d89e-4ab6-b867-eaa5799017ee at 2020-10-28T11:10:12Z","28.10.2020 11:10:12 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:12 - Project Properties: ","28.10.2020 11:10:12 - etf.testcases - * ","28.10.2020 11:10:12 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:10:12 - username -  ","28.10.2020 11:10:12 - authUser -  ","28.10.2020 11:10:12 - authMethod - basic ","28.10.2020 11:10:12 - TestRunTask initialized","28.10.2020 11:10:16 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:10:16 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:10:18 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:10:19 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:20 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:20 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:10:21 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:21 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:22 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:10:23 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:10:23 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:10:34.598 retry condition not satisfied: response.val == response.max
11:10:34.598 sleeping before retry #2
11:10:39.599 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:40.125 response time in milliseconds: 525.47
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:10:40 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

11:10:40.125 retry condition satisfied
* print response 0.000
11:10:40.125 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 13.841
11:10:40.126 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:53.963 response time in milliseconds: 12868.33
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:10:52 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:10:37 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/79694b8d-d89e-4ab6-b867-eaa5799017ee.json","testRuns":{"TestRun":{"id":"EID79694b8d-d89e-4ab6-b867-eaa5799017ee","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:08.551Z","testTasks":{"TestTask":{"id":"EIDf40d70f0-5d7a-4630-8ed4-5d40af02a8c6","parent":{"ref":"EID79694b8d-d89e-4ab6-b867-eaa5799017ee"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0f96ec4d-e691-4b70-8972-702363fa76cc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID25b017db-1c8c-4a2d-975b-464e8abba882"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0f96ec4d-e691-4b70-8972-702363fa76cc","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:09:57.774Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:05.877Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID25b017db-1c8c-4a2d-975b-464e8abba882","testObject":{"ref":"EID0f96ec4d-e691-4b70-8972-702363fa76cc"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee6ad0d-0175-1000-e92d-3b97d892afdf","testCaseResults":{"TestCaseResult":[{"id":"EID6ee6ad0d-0175-1000-3429-d3a61b8b655a","testStepResults":{"TestStepResult":[{"id":"EID6ee6ad0e-0175-1000-c20b-02d4617120e2","parent":{"ref":"EID6ee6ad0d-0175-1000-3429-d3a61b8b655a"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:10:12Z","duration":33,"status":"PASSED"},{"id":"EID6ee6ad30-0175-1000-8731-97dee4d1d80b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6ae9d-0175-1000-48f7-c6d8fe423d89","parent":{"ref":"EID6ee6ad30-0175-1000-8731-97dee4d1d80b"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ae9e-0175-1000-97a1-093ac9a94b47","parent":{"ref":"EID6ee6ad30-0175-1000-8731-97dee4d1d80b"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ae9e-0175-1000-8459-ca2cc24cf6ce","parent":{"ref":"EID6ee6ad30-0175-1000-8731-97dee4d1d80b"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ae9e-0175-1000-c10c-10397d9feded","parent":{"ref":"EID6ee6ad30-0175-1000-8731-97dee4d1d80b"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDee3c1803-2ce8-4c92-8564-aa8e36da91b9"},{"ref":"EIDdad7b2ef-eea8-43f0-8868-d7cd96ee3a66"},{"ref":"EIDd3d5be19-4b16-4cf6-b705-77c0c9dd3ec4"}]},"parent":{"ref":"EID6ee6ad0d-0175-1000-3429-d3a61b8b655a"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:10:12Z","duration":184,"status":"PASSED"}]},"parent":{"ref":"EID6ee6ad0d-0175-1000-e92d-3b97d892afdf"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:10:12Z","duration":401,"status":"PASSED"},{"id":"EID6ee6aea1-0175-1000-b2d5-ddc0ce6ebcfb","testStepResults":{"TestStepResult":{"id":"EID6ee6aea1-0175-1000-3957-63e2cd2f1539","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6afaf-0175-1000-6f1e-efbd9f6f6114","parent":{"ref":"EID6ee6aea1-0175-1000-3957-63e2cd2f1539"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6afaf-0175-1000-35ed-c03020713d58","parent":{"ref":"EID6ee6aea1-0175-1000-3957-63e2cd2f1539"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6afaf-0175-1000-bc69-42840e2d1994","parent":{"ref":"EID6ee6aea1-0175-1000-3957-63e2cd2f1539"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaee85f80-0004-4eea-b728-5b1f0ff9c6cc"},{"ref":"EID317752a3-bb1b-42e9-886e-58c34e67bfd2"},{"ref":"EID16dd7660-2168-4e99-ae78-8f0ff85178f4"}]},"parent":{"ref":"EID6ee6aea1-0175-1000-b2d5-ddc0ce6ebcfb"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:10:13Z","duration":88,"status":"PASSED"}},"parent":{"ref":"EID6ee6ad0d-0175-1000-e92d-3b97d892afdf"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:10:13Z","duration":270,"status":"PASSED"}]},"parent":{"ref":"EID25b017db-1c8c-4a2d-975b-464e8abba882"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:10:12Z","duration":674,"status":"PASSED"},{"id":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f","testCaseResults":{"TestCaseResult":[{"id":"EID6ee6afb0-0175-1000-ec2b-8fee23379e5c","testStepResults":{"TestStepResult":[{"id":"EID6ee6afb0-0175-1000-a0e3-554ff6850fb7","parent":{"ref":"EID6ee6afb0-0175-1000-ec2b-8fee23379e5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:10:13Z","duration":88,"status":"PASSED"},{"id":"EID6ee6afb0-0175-1000-37b8-9cdaed6c8fe8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b07a-0175-1000-4cc5-bfbbfdb29bbc","parent":{"ref":"EID6ee6afb0-0175-1000-37b8-9cdaed6c8fe8"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b07a-0175-1000-a7e0-00e9b5969dc3","parent":{"ref":"EID6ee6afb0-0175-1000-37b8-9cdaed6c8fe8"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b07a-0175-1000-1b79-d687d6409608","parent":{"ref":"EID6ee6afb0-0175-1000-37b8-9cdaed6c8fe8"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b07b-0175-1000-926d-26840334203d","parent":{"ref":"EID6ee6afb0-0175-1000-37b8-9cdaed6c8fe8"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b07b-0175-1000-6dc7-d8edf687c9e9","parent":{"ref":"EID6ee6afb0-0175-1000-37b8-9cdaed6c8fe8"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:10:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbdb32183-f335-49c1-a7cb-7fd8433ac38a"},{"ref":"EIDdd4d8b3f-313c-469f-8335-5f5b929c2237"},{"ref":"EIDc46a602e-1d38-4927-b945-04e124db708a"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-ec2b-8fee23379e5c"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:10:13Z","duration":49,"status":"PASSED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:10:13Z","duration":203,"status":"PASSED"},{"id":"EID6ee6b07b-0175-1000-ed47-c71db7a1195a","testStepResults":{"TestStepResult":[{"id":"EID6ee6b07c-0175-1000-acc2-ecadd724c75b","attachments":{"attachment":[{"ref":"EID96064ab0-c858-4b14-8b1f-6e767e8ce0ac"},{"ref":"EID71b57d79-d97a-4f2b-a8d0-6400a659b78a"}]},"parent":{"ref":"EID6ee6b07b-0175-1000-ed47-c71db7a1195a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:10:13Z","duration":182,"status":"PASSED"},{"id":"EID6ee6b181-0175-1000-d969-67bf082bd10c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b31b-0175-1000-60d6-58347705fc52","parent":{"ref":"EID6ee6b181-0175-1000-d969-67bf082bd10c"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b31b-0175-1000-b90f-99bfc45a80a5","parent":{"ref":"EID6ee6b181-0175-1000-d969-67bf082bd10c"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b31b-0175-1000-5c69-baf8c2318f56","parent":{"ref":"EID6ee6b181-0175-1000-d969-67bf082bd10c"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b31b-0175-1000-8ccb-03d23f1bc186","parent":{"ref":"EID6ee6b181-0175-1000-d969-67bf082bd10c"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd82bca6f-e1a8-4316-81a7-0d2234d9d6e3"},{"ref":"EIDc27ffbb4-79d1-4488-b62e-00e2380faf5b"},{"ref":"EIDbee807fb-ac19-460d-9123-c54a6a79208a"}]},"parent":{"ref":"EID6ee6b07b-0175-1000-ed47-c71db7a1195a"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:10:13Z","duration":111,"status":"PASSED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:10:13Z","duration":672,"status":"PASSED"},{"id":"EID6ee6b31b-0175-1000-aee5-e8292e75cf55","testStepResults":{"TestStepResult":[{"id":"EID6ee6b31b-0175-1000-1e87-77457702b31c","attachments":{"attachment":[{"ref":"EIDdf8523d5-592d-49f2-a293-119dbe19b339"},{"ref":"EID1835506f-b02a-4e79-9b90-cf9655102dce"}]},"parent":{"ref":"EID6ee6b31b-0175-1000-aee5-e8292e75cf55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:10:14Z","duration":115,"status":"PASSED"},{"id":"EID6ee6b3b8-0175-1000-655a-478561104cb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b4de-0175-1000-20a9-9587064b0c0d","parent":{"ref":"EID6ee6b3b8-0175-1000-655a-478561104cb4"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4de-0175-1000-579c-e089cc84efa6","parent":{"ref":"EID6ee6b3b8-0175-1000-655a-478561104cb4"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4de-0175-1000-0e22-c9e9b6708aad","parent":{"ref":"EID6ee6b3b8-0175-1000-655a-478561104cb4"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4de-0175-1000-51bd-73d2df9f9fc1","parent":{"ref":"EID6ee6b3b8-0175-1000-655a-478561104cb4"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b4de-0175-1000-7f24-9ba8bfe878b6","parent":{"ref":"EID6ee6b3b8-0175-1000-655a-478561104cb4"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:10:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0f73d0e5-01e4-4dce-a3bd-6c8eb2da4af7"},{"ref":"EIDa688b9f0-7144-4a49-a461-c4806ab06804"},{"ref":"EID43659396-7e47-4225-9706-d3d1b812e8d1"}]},"parent":{"ref":"EID6ee6b31b-0175-1000-aee5-e8292e75cf55"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:10:14Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:10:14Z","duration":452,"status":"PASSED"},{"id":"EID6ee6b4df-0175-1000-6446-46bb5b3050ce","testStepResults":{"TestStepResult":[{"id":"EID6ee6b4df-0175-1000-4928-9c2c2c433638","attachments":{"attachment":[{"ref":"EIDa61519e7-f336-4e22-8730-306d08756538"},{"ref":"EIDdce576ea-42cf-478e-992e-c05320d5fef8"}]},"parent":{"ref":"EID6ee6b4df-0175-1000-6446-46bb5b3050ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:10:14Z","duration":200,"status":"PASSED"},{"id":"EID6ee6b5e4-0175-1000-804b-85458cba88e0","parent":{"ref":"EID6ee6b4df-0175-1000-6446-46bb5b3050ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b5e4-0175-1000-2092-758a1ae6ffce","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b6b1-0175-1000-58f4-5e3fae4eb3a7","parent":{"ref":"EID6ee6b5e4-0175-1000-2092-758a1ae6ffce"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b6b1-0175-1000-5285-dd4fddf46412","parent":{"ref":"EID6ee6b5e4-0175-1000-2092-758a1ae6ffce"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b6b1-0175-1000-d137-3da64854d705","parent":{"ref":"EID6ee6b5e4-0175-1000-2092-758a1ae6ffce"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b6b1-0175-1000-56e2-6f7fc8f81c52","parent":{"ref":"EID6ee6b5e4-0175-1000-2092-758a1ae6ffce"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4daa1f86-8b02-4bac-a6ee-20c444b55b63"},{"ref":"EID55c9aac5-8915-4f19-a75c-b68e3b946ee5"},{"ref":"EID6ebf4941-f40b-4d21-8fe0-044a26c5dc3a"}]},"parent":{"ref":"EID6ee6b4df-0175-1000-6446-46bb5b3050ce"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:10:15Z","duration":52,"status":"PASSED"},{"id":"EID6ee6b6b1-0175-1000-a434-c944be757ce2","attachments":{"attachment":{"ref":"EID5e347b8c-14dc-42c2-a15c-a2b54f422a7a"}},"parent":{"ref":"EID6ee6b4df-0175-1000-6446-46bb5b3050ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":2,"status":"PASSED"},{"id":"EID6ee6b6c9-0175-1000-78f3-b5dbd5153c83","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b789-0175-1000-ff33-83a0d646e63c","parent":{"ref":"EID6ee6b6c9-0175-1000-78f3-b5dbd5153c83"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b789-0175-1000-3983-df63d98dee75","parent":{"ref":"EID6ee6b6c9-0175-1000-78f3-b5dbd5153c83"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b789-0175-1000-17f8-39170231db81","parent":{"ref":"EID6ee6b6c9-0175-1000-78f3-b5dbd5153c83"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b789-0175-1000-aae3-ec1c63402c48","parent":{"ref":"EID6ee6b6c9-0175-1000-78f3-b5dbd5153c83"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b789-0175-1000-7755-9b451e62ae20","parent":{"ref":"EID6ee6b6c9-0175-1000-78f3-b5dbd5153c83"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcf4ab4d0-77a7-4028-aeb6-d42bb28e7bd1"},{"ref":"EID6e74e409-f5a7-4e81-9520-9bbac6df0305"},{"ref":"EIDa289910d-c994-4c8d-8b47-c7fdbe909d6c"}]},"parent":{"ref":"EID6ee6b4df-0175-1000-6446-46bb5b3050ce"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:10:15Z","duration":31,"status":"PASSED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:10:14Z","duration":682,"status":"PASSED"},{"id":"EID6ee6b789-0175-1000-3764-5111450f2e1e","testStepResults":{"TestStepResult":[{"id":"EID6ee6b789-0175-1000-688f-aea97dd03f5d","attachments":{"attachment":[{"ref":"EIDae05c67b-6afe-4bc6-8181-4a26cb425636"},{"ref":"EID75f0de1e-c0ec-4d8c-8ef2-6e74aad4b873"}]},"parent":{"ref":"EID6ee6b789-0175-1000-3764-5111450f2e1e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":156,"status":"PASSED"},{"id":"EID6ee6b86f-0175-1000-a0e5-589dd5897f11","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6b96a-0175-1000-58d5-ee881bac2064","parent":{"ref":"EID6ee6b86f-0175-1000-a0e5-589dd5897f11"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b96a-0175-1000-b4d6-c2eaaea6ed67","parent":{"ref":"EID6ee6b86f-0175-1000-a0e5-589dd5897f11"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b96a-0175-1000-a8e1-4b104f2c1fa1","parent":{"ref":"EID6ee6b86f-0175-1000-a0e5-589dd5897f11"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee6b96a-0175-1000-0f72-6ab65a78ca04","parent":{"ref":"EID6ee6b86f-0175-1000-a0e5-589dd5897f11"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:10:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0813b6d3-c08e-4928-a73c-eb49cea6b106"},{"ref":"EIDe9045e75-497a-4a91-a679-50d333648834"},{"ref":"EIDf04755ff-1f38-4531-85d5-e6a15ab2131f"}]},"parent":{"ref":"EID6ee6b789-0175-1000-3764-5111450f2e1e"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:10:15Z","duration":108,"status":"PASSED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:10:15Z","duration":481,"status":"PASSED"},{"id":"EID6ee6b96a-0175-1000-a3f1-65bfddced74e","testStepResults":{"TestStepResult":[{"id":"EID6ee6b96a-0175-1000-4375-f255065a2b1f","attachments":{"attachment":[{"ref":"EIDc737b51a-d062-4170-b048-7b21e31121a8"},{"ref":"EID2c386c07-bff7-4c93-9c4a-4ed43b06b748"}]},"parent":{"ref":"EID6ee6b96a-0175-1000-a3f1-65bfddced74e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:10:15Z","duration":205,"status":"PASSED"},{"id":"EID6ee6ba6a-0175-1000-bd36-b006f042114d","parent":{"ref":"EID6ee6b96a-0175-1000-a3f1-65bfddced74e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ba6a-0175-1000-fd5b-bcfb74d52638","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6bb66-0175-1000-856d-502a892b1437","parent":{"ref":"EID6ee6ba6a-0175-1000-fd5b-bcfb74d52638"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bb66-0175-1000-f253-b838804d3549","parent":{"ref":"EID6ee6ba6a-0175-1000-fd5b-bcfb74d52638"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bb66-0175-1000-c846-f06c487e2db4","parent":{"ref":"EID6ee6ba6a-0175-1000-fd5b-bcfb74d52638"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bb66-0175-1000-1040-b9c794ce3b3b","parent":{"ref":"EID6ee6ba6a-0175-1000-fd5b-bcfb74d52638"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6972b1c1-0ef0-46fc-8a85-77a1bc823fdb"},{"ref":"EID7b9cbe21-6a3a-4381-8dae-2786a7eea46e"},{"ref":"EIDfbb8ca8d-9522-4003-9bc1-c9bbfa250c09"}]},"parent":{"ref":"EID6ee6b96a-0175-1000-a3f1-65bfddced74e"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:10:16Z","duration":100,"status":"PASSED"},{"id":"EID6ee6bb66-0175-1000-1a7f-dc68b3140e0c","attachments":{"attachment":{"ref":"EIDcca1aaab-3fa9-44e8-b81f-e53c380c5671"}},"parent":{"ref":"EID6ee6b96a-0175-1000-a3f1-65bfddced74e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:10:16Z","duration":2,"status":"PASSED"},{"id":"EID6ee6bb73-0175-1000-ed07-75854962db9b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6bce6-0175-1000-a85e-10c0ea00c8fe","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6bb73-0175-1000-ed07-75854962db9b"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:10:16Z","duration":11,"status":"FAILED"},{"id":"EID6ee6bcf1-0175-1000-9cc8-4fbc584c198d","parent":{"ref":"EID6ee6bb73-0175-1000-ed07-75854962db9b"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bcf1-0175-1000-ff1f-20fbd1198fd0","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee6bb73-0175-1000-ed07-75854962db9b"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:10:16Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf5907d73-391e-46b8-8dfe-7b68a60199f2"},{"ref":"EID80c5d6e6-5190-4546-bbee-582b42043ff3"},{"ref":"EIDe6431b12-aeb2-440f-89e6-09e74606cc34"}]},"parent":{"ref":"EID6ee6b96a-0175-1000-a3f1-65bfddced74e"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:10:16Z","duration":293,"status":"FAILED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:10:15Z","duration":903,"status":"FAILED"},{"id":"EID6ee6bcf1-0175-1000-206d-8fa87c9f7200","testStepResults":{"TestStepResult":[{"id":"EID6ee6bcf1-0175-1000-b4c4-17ab855378a7","attachments":{"attachment":[{"ref":"EID0306b981-fd3d-4576-9d53-3aef0d67c407"},{"ref":"EID0c052eb0-165d-4c37-8565-efc7840f96dc"}]},"parent":{"ref":"EID6ee6bcf1-0175-1000-206d-8fa87c9f7200"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:10:16Z","duration":166,"status":"PASSED"},{"id":"EID6ee6bdca-0175-1000-8c8b-b639826fe523","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6beb2-0175-1000-76f8-b4ceb376e718","parent":{"ref":"EID6ee6bdca-0175-1000-8c8b-b639826fe523"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6beb2-0175-1000-e429-fd191ff9a316","parent":{"ref":"EID6ee6bdca-0175-1000-8c8b-b639826fe523"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6beb2-0175-1000-0dc5-ae76b34869fe","parent":{"ref":"EID6ee6bdca-0175-1000-8c8b-b639826fe523"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6beb2-0175-1000-b7e5-41e9f18f4fe5","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee6bdca-0175-1000-8c8b-b639826fe523"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID9093344f-00bd-435a-baf6-3be8496c4b66"},{"ref":"EID6e4d0a94-1696-42ea-96f1-eb4bdb3c80b9"},{"ref":"EID6381e6e9-95b3-4777-a522-a720106262ee"}]},"parent":{"ref":"EID6ee6bcf1-0175-1000-206d-8fa87c9f7200"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:10:17Z","duration":57,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:10:16Z","duration":450,"status":"PASSED_MANUAL"},{"id":"EID6ee6beb3-0175-1000-0793-d7ac2c01228d","testStepResults":{"TestStepResult":{"id":"EID6ee6beb3-0175-1000-b83f-e1d15a8312b1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6bf7b-0175-1000-fc00-5190b1fe08a7","parent":{"ref":"EID6ee6beb3-0175-1000-b83f-e1d15a8312b1"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bf7b-0175-1000-2615-4935ba34e42f","parent":{"ref":"EID6ee6beb3-0175-1000-b83f-e1d15a8312b1"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bf7b-0175-1000-e860-2ac4142ea06e","parent":{"ref":"EID6ee6beb3-0175-1000-b83f-e1d15a8312b1"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6bf7b-0175-1000-fe50-3bcaa912d056","parent":{"ref":"EID6ee6beb3-0175-1000-b83f-e1d15a8312b1"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID832d9056-9152-43f5-89b0-ab1af5ccb75e"},{"ref":"EIDf8607571-0611-4121-a6f4-1f8e4d7090f6"},{"ref":"EID3f064c1e-09e5-4160-903a-bf1c963baf4c"}]},"parent":{"ref":"EID6ee6beb3-0175-1000-0793-d7ac2c01228d"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:10:17Z","duration":97,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:10:17Z","duration":200,"status":"PASSED"},{"id":"EID6ee6bf7b-0175-1000-0dd4-11099740f519","testStepResults":{"TestStepResult":{"id":"EID6ee6bf7b-0175-1000-c26f-18ce14ef1f54","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c021-0175-1000-c3b2-f92bde11ed0b","parent":{"ref":"EID6ee6bf7b-0175-1000-c26f-18ce14ef1f54"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c021-0175-1000-3651-9f8a91db99c1","parent":{"ref":"EID6ee6bf7b-0175-1000-c26f-18ce14ef1f54"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c021-0175-1000-dc1c-e11ac7c64b21","parent":{"ref":"EID6ee6bf7b-0175-1000-c26f-18ce14ef1f54"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c021-0175-1000-797f-f823fbf85c16","parent":{"ref":"EID6ee6bf7b-0175-1000-c26f-18ce14ef1f54"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:10:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcca5b888-4259-4166-aadd-6b517373c82c"},{"ref":"EID00ff4bdf-f8bf-43df-aef5-6edad22ea4b4"},{"ref":"EIDa893051b-d569-482d-bbbc-a15857fcc6d7"}]},"parent":{"ref":"EID6ee6bf7b-0175-1000-0dd4-11099740f519"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:10:17Z","duration":36,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:10:17Z","duration":166,"status":"PASSED"},{"id":"EID6ee6c021-0175-1000-e1f5-1059bd61f14b","testStepResults":{"TestStepResult":{"id":"EID6ee6c021-0175-1000-aed3-04943a97ed60","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID2a7cd215-a5b7-43ad-ab7f-290ed31ec6e4"},{"ref":"EIDcfa62734-0b55-4626-b336-eb9ece019c96"},{"ref":"EIDfcbd199a-3a1f-4f95-a38a-a0937e4ed890"},{"ref":"EID42efd07a-e6fd-40c5-9b9a-ce913fc69d7a"},{"ref":"EIDb5c0c208-16f4-4b1e-9dfd-9c10095a6af0"},{"ref":"EID11542187-2602-4977-8e1f-9e6f1e954e3e"},{"ref":"EIDf834874a-1e41-4a13-b68b-ece2b67e29d6"},{"ref":"EID8de072b1-c3ea-4293-9077-0344be43625d"},{"ref":"EIDe2b554e2-bc8d-4616-911c-17839feb7d91"}]},"parent":{"ref":"EID6ee6c021-0175-1000-e1f5-1059bd61f14b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:10:17Z","duration":596,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:10:17Z","duration":719,"status":"SKIPPED"},{"id":"EID6ee6c2f0-0175-1000-a195-7a9c37f8385e","testStepResults":{"TestStepResult":{"id":"EID6ee6c2f0-0175-1000-5d62-3df12d018d30","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c3a9-0175-1000-fe83-28ac3ee97127","parent":{"ref":"EID6ee6c2f0-0175-1000-5d62-3df12d018d30"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c3a9-0175-1000-c91b-a1f15035ecd5","parent":{"ref":"EID6ee6c2f0-0175-1000-5d62-3df12d018d30"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c3a9-0175-1000-1a85-cb8c184ee2c2","parent":{"ref":"EID6ee6c2f0-0175-1000-5d62-3df12d018d30"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c3a9-0175-1000-64ae-74adc2a9c7cc","parent":{"ref":"EID6ee6c2f0-0175-1000-5d62-3df12d018d30"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ec97693-9c11-46ed-b863-28617d0e415c"},{"ref":"EID525e4ee6-331e-41c0-9194-1a4e882f3a84"},{"ref":"EID49b6ab9b-fdee-490f-af2c-0bb247c10f9a"}]},"parent":{"ref":"EID6ee6c2f0-0175-1000-a195-7a9c37f8385e"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:10:18Z","duration":79,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:10:18Z","duration":185,"status":"PASSED"},{"id":"EID6ee6c3a9-0175-1000-b402-dde0d5f7da2c","testStepResults":{"TestStepResult":{"id":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c4cb-0175-1000-749e-f78e146f9f17","parent":{"ref":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c4cb-0175-1000-93bc-8f1bc06c9e0d","parent":{"ref":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c4cb-0175-1000-a42e-379c80ad61fd","parent":{"ref":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c4cb-0175-1000-ee53-3a5b2ee7a4d2","parent":{"ref":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c4cb-0175-1000-7126-e866398c7778","parent":{"ref":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c4cb-0175-1000-e427-2cbcbb114987","parent":{"ref":"EID6ee6c3a9-0175-1000-e9b9-daace22d0f77"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04d73f82-2973-4fc0-a2ff-0e4d94b36c0f"},{"ref":"EIDcff3971b-ab3d-4c34-8218-bd04026cea1f"},{"ref":"EID62814f09-6520-4970-9b60-fc01634c8441"}]},"parent":{"ref":"EID6ee6c3a9-0175-1000-b402-dde0d5f7da2c"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:10:18Z","duration":134,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:10:18Z","duration":291,"status":"PASSED"},{"id":"EID6ee6c4cc-0175-1000-3d57-c1ea253c74cf","testStepResults":{"TestStepResult":{"id":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c56d-0175-1000-3dd5-6e7eedbe01d3","parent":{"ref":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c56d-0175-1000-0ac2-ee583ee4a5c2","parent":{"ref":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c56d-0175-1000-4629-35b1b37a73ec","parent":{"ref":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c56d-0175-1000-37f8-c261efa25ddc","parent":{"ref":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c56d-0175-1000-f304-f1681f51866e","parent":{"ref":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c56d-0175-1000-507b-da78b447faba","parent":{"ref":"EID6ee6c4cc-0175-1000-89c7-818de1ea2722"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:10:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID15cee3ba-dd40-48ec-92ac-c129aeaac38e"},{"ref":"EID5e616899-1468-4b5a-b4f6-95039dcf4f69"},{"ref":"EID9a3a115d-e281-474e-8fbd-90321c190ef8"}]},"parent":{"ref":"EID6ee6c4cc-0175-1000-3d57-c1ea253c74cf"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:10:18Z","duration":32,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:10:18Z","duration":161,"status":"PASSED"},{"id":"EID6ee6c56d-0175-1000-265e-b1466759c431","testStepResults":{"TestStepResult":{"id":"EID6ee6c56d-0175-1000-92ca-8cf20e085026","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c67d-0175-1000-1818-b051f845765f","parent":{"ref":"EID6ee6c56d-0175-1000-92ca-8cf20e085026"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c67d-0175-1000-0eca-d1ee4a5e9762","parent":{"ref":"EID6ee6c56d-0175-1000-92ca-8cf20e085026"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c67d-0175-1000-3980-80d9c2272c8f","parent":{"ref":"EID6ee6c56d-0175-1000-92ca-8cf20e085026"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c67d-0175-1000-b22a-2bdec47b075a","parent":{"ref":"EID6ee6c56d-0175-1000-92ca-8cf20e085026"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4874b72b-b97c-428e-9930-e1412c6acf32"},{"ref":"EIDc846e184-5050-42bd-80f8-990a833675b0"},{"ref":"EID224c2d91-d639-49d0-b473-d0e597949193"}]},"parent":{"ref":"EID6ee6c56d-0175-1000-265e-b1466759c431"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:10:18Z","duration":83,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:10:18Z","duration":272,"status":"PASSED"},{"id":"EID6ee6c67d-0175-1000-093a-9293ef6e3213","testStepResults":{"TestStepResult":[{"id":"EID6ee6c67d-0175-1000-04b5-144adee43c1c","attachments":{"attachment":[{"ref":"EIDf424fcb0-453a-4c2c-8b77-c1832a0691d8"},{"ref":"EID2c75e953-4481-49d5-9907-913d7f4b5587"},{"ref":"EIDc6dbc213-1672-409d-be25-f20104163910"},{"ref":"EIDecf381a7-d961-4694-89a3-0aaab800cf98"}]},"parent":{"ref":"EID6ee6c67d-0175-1000-093a-9293ef6e3213"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:10:19Z","duration":260,"status":"PASSED"},{"id":"EID6ee6c7b1-0175-1000-56dd-7705f1a4848d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c8d8-0175-1000-e931-f0d030832187","parent":{"ref":"EID6ee6c7b1-0175-1000-56dd-7705f1a4848d"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c8d8-0175-1000-9bd2-882805fd1fc8","parent":{"ref":"EID6ee6c7b1-0175-1000-56dd-7705f1a4848d"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c8d8-0175-1000-a587-d466f1765542","parent":{"ref":"EID6ee6c7b1-0175-1000-56dd-7705f1a4848d"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c8d8-0175-1000-2047-d546655ab2c4","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee6c7b1-0175-1000-56dd-7705f1a4848d"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:10:19Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa7cd8c8f-4543-4f34-a08c-0081a34e9028"},{"ref":"EID8f760dd9-7890-47d9-b3cd-161b4297626f"},{"ref":"EID23549271-237c-4dd3-b50d-1da45652a67a"}]},"parent":{"ref":"EID6ee6c67d-0175-1000-093a-9293ef6e3213"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:10:19Z","duration":63,"status":"FAILED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:10:19Z","duration":604,"status":"FAILED"},{"id":"EID6ee6c8d9-0175-1000-a2b9-90ebe86533f0","testStepResults":{"TestStepResult":{"id":"EID6ee6c8e1-0175-1000-e959-7a2b5d641212","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6c9c0-0175-1000-b6c1-dcdd6fda05a1","parent":{"ref":"EID6ee6c8e1-0175-1000-e959-7a2b5d641212"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c9c0-0175-1000-9756-c47b43bcfb62","parent":{"ref":"EID6ee6c8e1-0175-1000-e959-7a2b5d641212"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c9c0-0175-1000-57e5-9160d7adfd8b","parent":{"ref":"EID6ee6c8e1-0175-1000-e959-7a2b5d641212"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c9c0-0175-1000-ba69-cb6016cefe5a","parent":{"ref":"EID6ee6c8e1-0175-1000-e959-7a2b5d641212"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57b588ee-9632-4fc1-a336-360688959847"},{"ref":"EIDb26b7cb7-7a17-4f7b-a63e-813bd6278dfc"},{"ref":"EID16fcc161-563e-44ce-88f8-e0dad2ec4abf"}]},"parent":{"ref":"EID6ee6c8d9-0175-1000-a2b9-90ebe86533f0"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:10:19Z","duration":87,"status":"PASSED"}},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:10:19Z","duration":232,"status":"PASSED"},{"id":"EID6ee6c9c1-0175-1000-0edd-448b900900f9","testStepResults":{"TestStepResult":[{"id":"EID6ee6c9c1-0175-1000-ef2e-5d6949f79ea8","parent":{"ref":"EID6ee6c9c1-0175-1000-0edd-448b900900f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6c9c1-0175-1000-9b87-c3e08d226982","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cab6-0175-1000-a62f-68ad9aae035a","parent":{"ref":"EID6ee6c9c1-0175-1000-9b87-c3e08d226982"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cab6-0175-1000-0aeb-3317fc0f367e","parent":{"ref":"EID6ee6c9c1-0175-1000-9b87-c3e08d226982"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cab6-0175-1000-8f10-41376283c76c","parent":{"ref":"EID6ee6c9c1-0175-1000-9b87-c3e08d226982"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cab6-0175-1000-fd62-d32034bd61b6","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee6c9c1-0175-1000-9b87-c3e08d226982"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDcb109b91-ae5a-4e83-bc54-3853ca10040f"},{"ref":"EID232f4a7f-cce1-4067-972f-16b14753f01e"},{"ref":"EIDb44e7667-95b5-4d6c-b932-0fef8aa88c32"}]},"parent":{"ref":"EID6ee6c9c1-0175-1000-0edd-448b900900f9"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:10:20Z","duration":102,"status":"FAILED"}]},"parent":{"ref":"EID6ee6afb0-0175-1000-f8a7-9ea998deff3f"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:10:20Z","duration":245,"status":"FAILED"}]},"parent":{"ref":"EID25b017db-1c8c-4a2d-975b-464e8abba882"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:10:13Z","duration":6918,"status":"FAILED"},{"id":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2","testCaseResults":{"TestCaseResult":[{"id":"EID6ee6cab6-0175-1000-5d33-b5664b034b5a","testStepResults":{"TestStepResult":[{"id":"EID6ee6cab6-0175-1000-c036-c1f1e7dac998","parent":{"ref":"EID6ee6cab6-0175-1000-5d33-b5664b034b5a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cab6-0175-1000-18a2-df5763a57137","parent":{"ref":"EID6ee6cab6-0175-1000-5d33-b5664b034b5a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:10:20Z","duration":87,"status":"PASSED"},{"id":"EID6ee6cab6-0175-1000-3bef-40de289bf817","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cbc5-0175-1000-2b4b-a22421a3e528","parent":{"ref":"EID6ee6cab6-0175-1000-3bef-40de289bf817"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cbc5-0175-1000-8fbc-9b0919e2b0a9","parent":{"ref":"EID6ee6cab6-0175-1000-3bef-40de289bf817"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cbc5-0175-1000-791d-2ac3ef4436cd","parent":{"ref":"EID6ee6cab6-0175-1000-3bef-40de289bf817"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0868b252-52bd-4150-9e96-8419672a8239"},{"ref":"EIDd85e0ecb-204e-4fae-a43c-737710bc8da2"},{"ref":"EID70c318f3-970b-40e4-8764-555b58c63215"}]},"parent":{"ref":"EID6ee6cab6-0175-1000-5d33-b5664b034b5a"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:10:20Z","duration":124,"status":"PASSED"},{"id":"EID6ee6cbc5-0175-1000-04ab-7cbffbe68e6e","attachments":{"attachment":{"ref":"EID630e9e62-09f0-4c73-bd85-72cea0cd8eda"}},"parent":{"ref":"EID6ee6cab6-0175-1000-5d33-b5664b034b5a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cbe5-0175-1000-0e52-8e3e5c63c47b","parent":{"ref":"EID6ee6cab6-0175-1000-5d33-b5664b034b5a"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:10:20Z","duration":68,"status":"PASSED"}]},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:10:20Z","duration":371,"status":"PASSED"},{"id":"EID6ee6cc29-0175-1000-0393-39d1c5ee1e30","testStepResults":{"TestStepResult":[{"id":"EID6ee6cc29-0175-1000-2328-d62843e9a772","parent":{"ref":"EID6ee6cc29-0175-1000-0393-39d1c5ee1e30"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:10:20Z","duration":88,"status":"PASSED"},{"id":"EID6ee6cc29-0175-1000-38be-17bb18c2c7b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cc88-0175-1000-6c4a-d16a53eeaf55","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cc29-0175-1000-38be-17bb18c2c7b5"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:10:20Z","duration":10,"status":"FAILED"},{"id":"EID6ee6cc92-0175-1000-dfc9-960382697855","parent":{"ref":"EID6ee6cc29-0175-1000-38be-17bb18c2c7b5"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cc92-0175-1000-7222-ad4712a520d6","parent":{"ref":"EID6ee6cc29-0175-1000-38be-17bb18c2c7b5"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cc92-0175-1000-f598-58e8a222e2cb","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee6cc29-0175-1000-38be-17bb18c2c7b5"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"FAILED"},{"id":"EID6ee6cc92-0175-1000-cdbd-9a9da4712bb0","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee6cc29-0175-1000-38be-17bb18c2c7b5"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID10cae637-06f9-4ae5-97eb-f31ef0b303de"},{"ref":"EIDb5ae349d-8216-41a5-8ac4-08276f1a9a1f"},{"ref":"EID8c8d1b32-eeb0-44b2-ba13-b301d0811bf7"}]},"parent":{"ref":"EID6ee6cc29-0175-1000-0393-39d1c5ee1e30"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:10:20Z","duration":24,"status":"FAILED"}]},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:10:20Z","duration":106,"status":"FAILED"},{"id":"EID6ee6cc93-0175-1000-dfa5-9a3b288f684f","testStepResults":{"TestStepResult":{"id":"EID6ee6cc9b-0175-1000-b1ee-036bb93e4bda","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cd04-0175-1000-e2a4-448788fffee3","parent":{"ref":"EID6ee6cc9b-0175-1000-b1ee-036bb93e4bda"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cd04-0175-1000-471d-1493df2d09f9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cc9b-0175-1000-b1ee-036bb93e4bda"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:10:20Z","duration":28,"status":"FAILED"},{"id":"EID6ee6cd20-0175-1000-7452-1c7867bea8ed","parent":{"ref":"EID6ee6cc9b-0175-1000-b1ee-036bb93e4bda"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:10:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcae0cfc5-30b4-40c3-9880-ce130c62566c"},{"ref":"EID87ab643a-ffda-4f86-87e3-7ed2fd490573"},{"ref":"EID5a07b971-2f82-42de-84b5-5085589b65f4"}]},"parent":{"ref":"EID6ee6cc93-0175-1000-dfa5-9a3b288f684f"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:10:20Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:10:20Z","duration":141,"status":"FAILED"},{"id":"EID6ee6cd20-0175-1000-5004-9fe27a77cf15","testStepResults":{"TestStepResult":{"id":"EID6ee6cd20-0175-1000-a009-9c792aae5205","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cd81-0175-1000-c996-9a4d3524bf8f","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee6cd20-0175-1000-a009-9c792aae5205"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee6cd81-0175-1000-d123-669e674b2510","parent":{"ref":"EID6ee6cd20-0175-1000-a009-9c792aae5205"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cd81-0175-1000-c0e7-ba7c7805d152","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cd20-0175-1000-a009-9c792aae5205"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:10:21Z","duration":14,"status":"FAILED"},{"id":"EID6ee6cd8f-0175-1000-fbe2-70c46811af8d","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee6cd20-0175-1000-a009-9c792aae5205"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf012b2fe-f961-4ead-a6e1-c45a402ce046"},{"ref":"EID101d9f48-2308-4d1b-b153-06f7f153ebee"},{"ref":"EIDe1f7f84e-bd21-40ab-92fb-39926911984f"}]},"parent":{"ref":"EID6ee6cd20-0175-1000-5004-9fe27a77cf15"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:10:20Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:10:20Z","duration":111,"status":"FAILED"},{"id":"EID6ee6cd8f-0175-1000-3346-fb8b78e79149","testStepResults":{"TestStepResult":{"id":"EID6ee6cd8f-0175-1000-4bb4-4ef66ce4662e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6ce11-0175-1000-3f04-080e62e24c10","parent":{"ref":"EID6ee6cd8f-0175-1000-4bb4-4ef66ce4662e"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ce11-0175-1000-d641-4012336c5eaa","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cd8f-0175-1000-4bb4-4ef66ce4662e"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:10:21Z","duration":12,"status":"FAILED"},{"id":"EID6ee6ce1d-0175-1000-4302-d154ccc88ded","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee6cd8f-0175-1000-4bb4-4ef66ce4662e"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID619ab382-b5a9-4f44-bde5-21c4cc2ca50d"},{"ref":"EID18f9431b-6e8f-487d-ba68-2827348d7458"},{"ref":"EIDbe86dec5-b0d2-43fb-a337-e9700b80cf7c"}]},"parent":{"ref":"EID6ee6cd8f-0175-1000-3346-fb8b78e79149"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:10:21Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:10:21Z","duration":142,"status":"FAILED"},{"id":"EID6ee6ce1d-0175-1000-dc5d-e0ac66eb52d1","testStepResults":{"TestStepResult":{"id":"EID6ee6ce1d-0175-1000-585a-d6f101e92e01","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6ce84-0175-1000-86aa-a830cfc240e0","parent":{"ref":"EID6ee6ce1d-0175-1000-585a-d6f101e92e01"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6ce84-0175-1000-2824-e276f20a58ba","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6ce1d-0175-1000-585a-d6f101e92e01"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:10:21Z","duration":10,"status":"FAILED"},{"id":"EID6ee6ce8e-0175-1000-d9cb-944f0b513d16","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee6ce1d-0175-1000-585a-d6f101e92e01"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4cca0831-3a18-4e08-88a9-1349796b49d4"},{"ref":"EID2491a1a3-3d51-4cc7-8324-5b1b455d5469"},{"ref":"EIDa8b55277-fe8d-4f7b-b80b-71f25ca9e377"}]},"parent":{"ref":"EID6ee6ce1d-0175-1000-dc5d-e0ac66eb52d1"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:10:21Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:10:21Z","duration":113,"status":"FAILED"},{"id":"EID6ee6ce8f-0175-1000-d882-3b8301e64d8b","testStepResults":{"TestStepResult":{"id":"EID6ee6ce8f-0175-1000-87e4-a693a20a4887","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cf03-0175-1000-4314-97ff74c9c3df","parent":{"ref":"EID6ee6ce8f-0175-1000-87e4-a693a20a4887"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cf03-0175-1000-e0ae-1854f4da412f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6ce8f-0175-1000-87e4-a693a20a4887"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:10:21Z","duration":14,"status":"FAILED"},{"id":"EID6ee6cf11-0175-1000-fcce-4ca4fd7f2b4a","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee6ce8f-0175-1000-87e4-a693a20a4887"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee6cf11-0175-1000-293d-68d081a83f49","parent":{"ref":"EID6ee6ce8f-0175-1000-87e4-a693a20a4887"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cf11-0175-1000-cf76-81c0dfb13b01","parent":{"ref":"EID6ee6ce8f-0175-1000-87e4-a693a20a4887"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa898e712-045a-404a-9202-046083b100af"},{"ref":"EID2fad90ee-ae33-423a-97a7-3ded157d56c4"},{"ref":"EID7c94c2d5-f8e1-4889-a7c5-12c449eaf82e"}]},"parent":{"ref":"EID6ee6ce8f-0175-1000-d882-3b8301e64d8b"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:10:21Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:10:21Z","duration":130,"status":"FAILED"},{"id":"EID6ee6cf12-0175-1000-36ce-a994c9dcf3e1","testStepResults":{"TestStepResult":{"id":"EID6ee6cf12-0175-1000-08b5-703b4ea2848c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cf69-0175-1000-06ab-ad20eae8dca8","parent":{"ref":"EID6ee6cf12-0175-1000-08b5-703b4ea2848c"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cf69-0175-1000-9d38-ead3b9befdb9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cf12-0175-1000-08b5-703b4ea2848c"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:10:21Z","duration":11,"status":"FAILED"},{"id":"EID6ee6cf74-0175-1000-df04-fbcb00d96107","parent":{"ref":"EID6ee6cf12-0175-1000-08b5-703b4ea2848c"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9ac47281-52db-44b0-af4e-8eedacead36d"},{"ref":"EIDeaf4abff-56c0-46df-aa83-1751d943f1b8"},{"ref":"EID23f45a03-c5d7-4dbe-aa85-c25b1660539a"}]},"parent":{"ref":"EID6ee6cf12-0175-1000-36ce-a994c9dcf3e1"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:10:21Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:10:21Z","duration":98,"status":"FAILED"},{"id":"EID6ee6cf75-0175-1000-40c1-b7af0667b5d3","testStepResults":{"TestStepResult":{"id":"EID6ee6cf75-0175-1000-136a-b2e3537a2c76","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6cfca-0175-1000-b1ee-7e134fa82a14","parent":{"ref":"EID6ee6cf75-0175-1000-136a-b2e3537a2c76"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6cfcb-0175-1000-01d1-b21748815a0d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cf75-0175-1000-136a-b2e3537a2c76"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:10:21Z","duration":11,"status":"FAILED"},{"id":"EID6ee6cfd6-0175-1000-0aa1-4c6f5b87ed57","parent":{"ref":"EID6ee6cf75-0175-1000-136a-b2e3537a2c76"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67a6a9d3-184e-4221-afa6-5514b94c695f"},{"ref":"EID49922062-a2c8-441f-9aa8-4c00724f3d97"},{"ref":"EIDf11225ec-4c4d-4db1-b671-f65c42190c07"}]},"parent":{"ref":"EID6ee6cf75-0175-1000-40c1-b7af0667b5d3"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:10:21Z","duration":23,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:10:21Z","duration":97,"status":"FAILED"},{"id":"EID6ee6cfd7-0175-1000-14f3-bb19261a455a","testStepResults":{"TestStepResult":{"id":"EID6ee6cfd7-0175-1000-a828-fa9d31a29711","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d037-0175-1000-449f-677df20c1475","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6cfd7-0175-1000-a828-fa9d31a29711"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:10:21Z","duration":16,"status":"FAILED"},{"id":"EID6ee6d047-0175-1000-7127-ec6afadb2d82","parent":{"ref":"EID6ee6cfd7-0175-1000-a828-fa9d31a29711"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d047-0175-1000-8677-18e897f64f52","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee6cfd7-0175-1000-a828-fa9d31a29711"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee6d047-0175-1000-e6c5-f855dd9f7f26","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee6cfd7-0175-1000-a828-fa9d31a29711"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID730905c1-1bd9-4c55-bb5a-628d183f5ba6"},{"ref":"EID071a5ce6-088e-40d7-9e4d-f8c9bbc6e103"},{"ref":"EID4e5685a6-74af-47d4-9524-de559dbfe60d"}]},"parent":{"ref":"EID6ee6cfd7-0175-1000-14f3-bb19261a455a"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:10:21Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:10:21Z","duration":112,"status":"FAILED"},{"id":"EID6ee6d048-0175-1000-27ec-4767fdef1856","testStepResults":{"TestStepResult":{"id":"EID6ee6d048-0175-1000-9353-7697e8831f72","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d0a6-0175-1000-ff36-d21c9f73da2c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6d048-0175-1000-9353-7697e8831f72"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:10:21Z","duration":15,"status":"FAILED"},{"id":"EID6ee6d0b5-0175-1000-565f-bc644540fabc","parent":{"ref":"EID6ee6d048-0175-1000-9353-7697e8831f72"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d0b5-0175-1000-8ade-361f94567ed8","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee6d048-0175-1000-9353-7697e8831f72"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee6d0b5-0175-1000-95a5-876f0badb57a","parent":{"ref":"EID6ee6d048-0175-1000-9353-7697e8831f72"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:10:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b201aa4-6993-42be-8c47-766bfe3f360b"},{"ref":"EID72083b60-a738-4a65-8d27-e2ec36d43f32"},{"ref":"EID7d3d1fce-008a-405a-b477-91894056789b"}]},"parent":{"ref":"EID6ee6d048-0175-1000-27ec-4767fdef1856"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:10:21Z","duration":23,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:10:21Z","duration":109,"status":"FAILED"},{"id":"EID6ee6d0b5-0175-1000-6064-cfa3d15e840b","testStepResults":{"TestStepResult":[{"id":"EID6ee6d0b5-0175-1000-0f54-1db1be144aae","parent":{"ref":"EID6ee6d0b5-0175-1000-6064-cfa3d15e840b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:10:21Z","duration":1,"status":"PASSED"},{"id":"EID6ee6d0b6-0175-1000-0103-8957c3f680b9","parent":{"ref":"EID6ee6d0b5-0175-1000-6064-cfa3d15e840b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:10:21Z","duration":137,"status":"PASSED"},{"id":"EID6ee6d0b6-0175-1000-8564-256e12199da1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d1e0-0175-1000-4166-9e0eceb3efe8","parent":{"ref":"EID6ee6d0b6-0175-1000-8564-256e12199da1"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:10:22Z","duration":1,"status":"PASSED"},{"id":"EID6ee6d1e1-0175-1000-9713-797071daf2ce","parent":{"ref":"EID6ee6d0b6-0175-1000-8564-256e12199da1"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d1e1-0175-1000-bd42-50a25b1054cb","parent":{"ref":"EID6ee6d0b6-0175-1000-8564-256e12199da1"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d1e1-0175-1000-3d93-7d9613c68421","parent":{"ref":"EID6ee6d0b6-0175-1000-8564-256e12199da1"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8ab4aa3f-1aa7-4298-9aa8-40431000200e"},{"ref":"EIDef335cd2-9b8b-401d-82e4-d701ce4bd324"},{"ref":"EID8c177789-9fb1-4f42-bae2-f53ed53c5cb0"}]},"parent":{"ref":"EID6ee6d0b5-0175-1000-6064-cfa3d15e840b"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:10:21Z","duration":89,"status":"PASSED"},{"id":"EID6ee6d1e1-0175-1000-4ba0-be143a880c0f","attachments":{"attachment":{"ref":"EID56bab626-addf-491c-bdf6-2504e527f984"}},"parent":{"ref":"EID6ee6d0b5-0175-1000-6064-cfa3d15e840b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:10:22Z","duration":4,"status":"PASSED"},{"id":"EID6ee6d214-0175-1000-a7a9-b79093eca461","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d29b-0175-1000-7338-2df68fc45e73","parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d29b-0175-1000-c5ba-afeb427b25e9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:10:22Z","duration":11,"status":"FAILED"},{"id":"EID6ee6d2a6-0175-1000-792b-850ee4bba89e","parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d2a6-0175-1000-28b3-5f4b77fbf89e","parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d2a6-0175-1000-b68c-be33f60bac2c","parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d2a6-0175-1000-d2c5-abf7fc0b331c","parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d2a6-0175-1000-7413-8d7bf37f5e09","parent":{"ref":"EID6ee6d214-0175-1000-a7a9-b79093eca461"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd1cd0f24-1978-47c0-bc16-ec1f67b24f93"},{"ref":"EID10850869-3db9-41bd-a445-d92446503107"},{"ref":"EID0e52c0a5-fcf5-4e4e-94d3-ea9d20ba2b47"}]},"parent":{"ref":"EID6ee6d0b5-0175-1000-6064-cfa3d15e840b"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:10:22Z","duration":27,"status":"FAILED"}]},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:10:21Z","duration":498,"status":"FAILED"},{"id":"EID6ee6d2a7-0175-1000-f530-bb9b25c7fb32","testStepResults":{"TestStepResult":[{"id":"EID6ee6d2a7-0175-1000-0df8-9197f2f2c602","parent":{"ref":"EID6ee6d2a7-0175-1000-f530-bb9b25c7fb32"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d2a7-0175-1000-0a96-1d47c9870190","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d39f-0175-1000-a607-b77e5adcc399","parent":{"ref":"EID6ee6d2a7-0175-1000-0a96-1d47c9870190"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d39f-0175-1000-45e9-0fbe2c8484be","parent":{"ref":"EID6ee6d2a7-0175-1000-0a96-1d47c9870190"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d39f-0175-1000-2602-b44875efcc18","parent":{"ref":"EID6ee6d2a7-0175-1000-0a96-1d47c9870190"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d39f-0175-1000-6b15-67ee30bf0f50","parent":{"ref":"EID6ee6d2a7-0175-1000-0a96-1d47c9870190"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4760268d-930c-4bdd-8574-18f61f15853a"},{"ref":"EID775c17b4-8ba1-4a19-8c51-775205ce88f9"},{"ref":"EID4db20dfc-a984-427d-b6ac-977d7a7c38da"}]},"parent":{"ref":"EID6ee6d2a7-0175-1000-f530-bb9b25c7fb32"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:10:22Z","duration":149,"status":"PASSED"},{"id":"EID6ee6d39f-0175-1000-e296-b95bdebff5e8","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee6d3b2-0175-1000-5915-24d840a8b987","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d4c3-0175-1000-3d9b-041b3aa0fdd2","parent":{"ref":"EID6ee6d3b2-0175-1000-5915-24d840a8b987"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d4c3-0175-1000-7bf2-5e0dcf31f2e9","parent":{"ref":"EID6ee6d3b2-0175-1000-5915-24d840a8b987"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d4c3-0175-1000-4f3a-3d713eccd2e3","parent":{"ref":"EID6ee6d3b2-0175-1000-5915-24d840a8b987"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:10:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9cbed30f-0ff9-469c-9eb8-6e393f0e7cba"},{"ref":"EID9b683a86-f3e0-4ce2-a0de-c4e5532f9634"},{"ref":"EIDe4cf1017-5c5c-4772-82ce-a854dd77d120"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:10:22Z","duration":156,"status":"PASSED"},{"id":"EID6ee6d4c5-0175-1000-09fe-9ce930e20689","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d5c0-0175-1000-8c5d-fc822cb72066","parent":{"ref":"EID6ee6d4c5-0175-1000-09fe-9ce930e20689"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d5c0-0175-1000-f4e2-12bea7fc40a9","parent":{"ref":"EID6ee6d4c5-0175-1000-09fe-9ce930e20689"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d5c0-0175-1000-698b-e4949e5ad7b4","parent":{"ref":"EID6ee6d4c5-0175-1000-09fe-9ce930e20689"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7283ffda-3eb2-47f1-a373-6c5402e4bbd0"},{"ref":"EID68066950-6a87-4c5e-bb67-db2b087189e4"},{"ref":"EID8504e80f-6dcb-4b68-b4cc-dcf16f4b510e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:10:22Z","duration":153,"status":"PASSED"},{"id":"EID6ee6d5d5-0175-1000-3d73-877aa2d615b1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d650-0175-1000-dfe5-7e86cc083621","parent":{"ref":"EID6ee6d5d5-0175-1000-3d73-877aa2d615b1"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d650-0175-1000-ecbf-82ae465b3f10","parent":{"ref":"EID6ee6d5d5-0175-1000-3d73-877aa2d615b1"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d650-0175-1000-faca-2a0e3daa2d4d","parent":{"ref":"EID6ee6d5d5-0175-1000-3d73-877aa2d615b1"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a450a90-4d26-43c2-8990-b1deb505a2fe"},{"ref":"EID2ac69680-1925-439b-ad98-4c17c8067134"},{"ref":"EID097fcbe9-249e-46d3-929e-93a0d47c6620"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:10:23Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6ee6d2a7-0175-1000-f530-bb9b25c7fb32"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:10:22Z","duration":690,"status":"PASSED"},{"id":"EID6ee6d652-0175-1000-1c4f-dbb948036557","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d6c4-0175-1000-4db6-c6cc426de522","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6d652-0175-1000-1c4f-dbb948036557"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:10:23Z","duration":11,"status":"FAILED"},{"id":"EID6ee6d6cf-0175-1000-bdd9-b4fdc0c5551a","parent":{"ref":"EID6ee6d652-0175-1000-1c4f-dbb948036557"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d6cf-0175-1000-f85e-3ffe313b6d66","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee6d652-0175-1000-1c4f-dbb948036557"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"FAILED"},{"id":"EID6ee6d6cf-0175-1000-d61e-30d2e0e85f06","parent":{"ref":"EID6ee6d652-0175-1000-1c4f-dbb948036557"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1790ad3b-5854-41b9-be7f-a89c26e953d9"},{"ref":"EID887b7c57-2bc3-46e1-a454-39ffb222a7ea"},{"ref":"EID12695f76-30d7-4dea-8770-55a196115eed"}]},"parent":{"ref":"EID6ee6d2a7-0175-1000-f530-bb9b25c7fb32"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:10:23Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:10:22Z","duration":1064,"status":"FAILED"},{"id":"EID6ee6d6cf-0175-1000-add5-a68f7ce7fceb","testStepResults":{"TestStepResult":{"id":"EID6ee6d6cf-0175-1000-51b0-0f116d5668e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee6d72b-0175-1000-dfcd-9f747c0024d7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee6d6cf-0175-1000-51b0-0f116d5668e2"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:10:23Z","duration":13,"status":"FAILED"},{"id":"EID6ee6d738-0175-1000-2612-16159071f046","parent":{"ref":"EID6ee6d6cf-0175-1000-51b0-0f116d5668e2"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee6d738-0175-1000-7942-a661802cd2d1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee6d6cf-0175-1000-51b0-0f116d5668e2"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"FAILED"},{"id":"EID6ee6d738-0175-1000-4b9d-8ec52054704d","parent":{"ref":"EID6ee6d6cf-0175-1000-51b0-0f116d5668e2"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8e36a2c3-767c-4dc1-a9f8-243054d8c8b6"},{"ref":"EID9665c4e8-c915-4e63-a202-8cfd3ed8bf4d"},{"ref":"EIDc907df86-63b5-4be6-8b8c-6ab98227d560"}]},"parent":{"ref":"EID6ee6d6cf-0175-1000-add5-a68f7ce7fceb"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:10:23Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee6cab6-0175-1000-9c99-699dfc09bfa2"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:10:23Z","duration":105,"status":"FAILED"}]},"parent":{"ref":"EID25b017db-1c8c-4a2d-975b-464e8abba882"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:10:20Z","duration":3202,"status":"FAILED"},{"id":"EID6ee6d738-0175-1000-b05e-136ec9440fd3","testCaseResults":{"TestCaseResult":[{"id":"EID6ee6d738-0175-1000-0a85-fcd097a0ee89","testStepResults":{"TestStepResult":{"id":"EID6ee6d738-0175-1000-abaf-56f938a65844","parent":{"ref":"EID6ee6d738-0175-1000-0a85-fcd097a0ee89"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee6d739-0175-1000-c129-973b63bde337","testStepResults":{"TestStepResult":{"id":"EID6ee6d739-0175-1000-ff62-8fc64d90e145","parent":{"ref":"EID6ee6d739-0175-1000-c129-973b63bde337"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee6d739-0175-1000-fed2-4517a8c8f0b3","testStepResults":{"TestStepResult":{"id":"EID6ee6d739-0175-1000-c9c7-df6c64be5f4a","parent":{"ref":"EID6ee6d739-0175-1000-fed2-4517a8c8f0b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee6d739-0175-1000-7603-229729ca1e2e","testStepResults":{"TestStepResult":{"id":"EID6ee6d739-0175-1000-cdd1-20f2893521ed","parent":{"ref":"EID6ee6d739-0175-1000-7603-229729ca1e2e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee6d739-0175-1000-90aa-d24279d3899d","testStepResults":{"TestStepResult":{"id":"EID6ee6d739-0175-1000-7c61-e5b822ba98fe","parent":{"ref":"EID6ee6d739-0175-1000-90aa-d24279d3899d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee6d739-0175-1000-8753-1e840415c4f4","testStepResults":{"TestStepResult":{"id":"EID6ee6d739-0175-1000-b4a7-dc93955196de","parent":{"ref":"EID6ee6d739-0175-1000-8753-1e840415c4f4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee6d739-0175-1000-b6ea-af6b54c05293","testStepResults":{"TestStepResult":{"id":"EID6ee6d739-0175-1000-ce70-073c25a9e40d","parent":{"ref":"EID6ee6d739-0175-1000-b6ea-af6b54c05293"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:10:23Z","duration":600,"status":"SKIPPED"}},"parent":{"ref":"EID6ee6d738-0175-1000-b05e-136ec9440fd3"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:10:23Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID25b017db-1c8c-4a2d-975b-464e8abba882"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:10:23Z","duration":1,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Error","id":"EID7cbb3f56-437d-4c0c-8ddd-e451b640e3bb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID7cbb3f56-437d-4c0c-8ddd-e451b640e3bb"}},{"type":"ServiceResponse","id":"EID887b7c57-2bc3-46e1-a454-39ffb222a7ea","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID887b7c57-2bc3-46e1-a454-39ffb222a7ea"}},{"type":"Error","id":"EID5cb231d3-98a2-46a7-9448-34cb498d1f52","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID5cb231d3-98a2-46a7-9448-34cb498d1f52"}},{"type":"ServiceEndpoint","id":"EID1790ad3b-5854-41b9-be7f-a89c26e953d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID2491a1a3-3d51-4cc7-8324-5b1b455d5469","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID2491a1a3-3d51-4cc7-8324-5b1b455d5469"}},{"type":"Error","id":"EID3d10b2e0-2fd0-45f4-bce1-83f618a785b2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID3d10b2e0-2fd0-45f4-bce1-83f618a785b2"}},{"type":"ServiceResponse","id":"EID775c17b4-8ba1-4a19-8c51-775205ce88f9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID775c17b4-8ba1-4a19-8c51-775205ce88f9"}},{"type":"ServiceEndpoint","id":"EID04d73f82-2973-4fc0-a2ff-0e4d94b36c0f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf8607571-0611-4121-a6f4-1f8e4d7090f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDf8607571-0611-4121-a6f4-1f8e4d7090f6"}},{"type":"Error","id":"EID0e9cea32-617d-4ab6-81de-ab3bdea7753c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID0e9cea32-617d-4ab6-81de-ab3bdea7753c"}},{"type":"GetParameter","id":"EID16dd7660-2168-4e99-ae78-8f0ff85178f4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0c052eb0-165d-4c37-8565-efc7840f96dc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID0c052eb0-165d-4c37-8565-efc7840f96dc"}},{"type":"Message","id":"EIDf424fcb0-453a-4c2c-8b77-c1832a0691d8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDf424fcb0-453a-4c2c-8b77-c1832a0691d8"}},{"type":"GetParameter","id":"EID8c8d1b32-eeb0-44b2-ba13-b301d0811bf7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID619ab382-b5a9-4f44-bde5-21c4cc2ca50d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID071a5ce6-088e-40d7-9e4d-f8c9bbc6e103","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID071a5ce6-088e-40d7-9e4d-f8c9bbc6e103"}},{"type":"GetParameter","id":"EIDbe86dec5-b0d2-43fb-a337-e9700b80cf7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID68066950-6a87-4c5e-bb67-db2b087189e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID68066950-6a87-4c5e-bb67-db2b087189e4"}},{"type":"Message","id":"EID56bab626-addf-491c-bdf6-2504e527f984","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID56bab626-addf-491c-bdf6-2504e527f984"}},{"type":"ServiceEndpoint","id":"EIDcae0cfc5-30b4-40c3-9880-ce130c62566c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID5d18b6ea-03cd-422b-b889-2a299031c4bc","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID5d18b6ea-03cd-422b-b889-2a299031c4bc"}},{"type":"GetParameter","id":"EID224c2d91-d639-49d0-b473-d0e597949193","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6e4d0a94-1696-42ea-96f1-eb4bdb3c80b9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID6e4d0a94-1696-42ea-96f1-eb4bdb3c80b9"}},{"type":"ServiceEndpoint","id":"EID57b588ee-9632-4fc1-a336-360688959847","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9cbed30f-0ff9-469c-9eb8-6e393f0e7cba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDb5c0c208-16f4-4b1e-9dfd-9c10095a6af0","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDb5c0c208-16f4-4b1e-9dfd-9c10095a6af0"}},{"type":"Message","id":"EID2a7cd215-a5b7-43ad-ab7f-290ed31ec6e4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID2a7cd215-a5b7-43ad-ab7f-290ed31ec6e4"}},{"type":"ServiceEndpoint","id":"EID4cca0831-3a18-4e08-88a9-1349796b49d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDc5992691-cf63-45f2-8daf-d2cdb71ac213","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDc5992691-cf63-45f2-8daf-d2cdb71ac213"}},{"type":"Message","id":"EIDa61519e7-f336-4e22-8730-306d08756538","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDa61519e7-f336-4e22-8730-306d08756538"}},{"type":"ServiceResponse","id":"EID525e4ee6-331e-41c0-9194-1a4e882f3a84","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID525e4ee6-331e-41c0-9194-1a4e882f3a84"}},{"type":"ServiceResponse","id":"EIDdd4d8b3f-313c-469f-8335-5f5b929c2237","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDdd4d8b3f-313c-469f-8335-5f5b929c2237"}},{"type":"ServiceResponse","id":"EIDeaf4abff-56c0-46df-aa83-1751d943f1b8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDeaf4abff-56c0-46df-aa83-1751d943f1b8"}},{"type":"GetParameter","id":"EID6381e6e9-95b3-4777-a522-a720106262ee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa7cd8c8f-4543-4f34-a08c-0081a34e9028","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd1cd0f24-1978-47c0-bc16-ec1f67b24f93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID5e347b8c-14dc-42c2-a15c-a2b54f422a7a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID5e347b8c-14dc-42c2-a15c-a2b54f422a7a"}},{"type":"Message","id":"EID8de072b1-c3ea-4293-9077-0344be43625d","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID8de072b1-c3ea-4293-9077-0344be43625d"}},{"type":"GetParameter","id":"EID8c177789-9fb1-4f42-bae2-f53ed53c5cb0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDfcbd199a-3a1f-4f95-a38a-a0937e4ed890","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDfcbd199a-3a1f-4f95-a38a-a0937e4ed890"}},{"type":"GetParameter","id":"EID5a07b971-2f82-42de-84b5-5085589b65f4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDd85e0ecb-204e-4fae-a43c-737710bc8da2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDd85e0ecb-204e-4fae-a43c-737710bc8da2"}},{"type":"ServiceResponse","id":"EID2ac69680-1925-439b-ad98-4c17c8067134","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID2ac69680-1925-439b-ad98-4c17c8067134"}},{"type":"ServiceResponse","id":"EIDcff3971b-ab3d-4c34-8218-bd04026cea1f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDcff3971b-ab3d-4c34-8218-bd04026cea1f"}},{"type":"GetParameter","id":"EID70c318f3-970b-40e4-8764-555b58c63215","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe9045e75-497a-4a91-a679-50d333648834","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDe9045e75-497a-4a91-a679-50d333648834"}},{"type":"GetParameter","id":"EIDfbb8ca8d-9522-4003-9bc1-c9bbfa250c09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbee807fb-ac19-460d-9123-c54a6a79208a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID8429beab-1538-4cd2-bb47-4cfa16959460","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID8429beab-1538-4cd2-bb47-4cfa16959460"}},{"type":"ServiceResponse","id":"EIDb5ae349d-8216-41a5-8ac4-08276f1a9a1f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDb5ae349d-8216-41a5-8ac4-08276f1a9a1f"}},{"type":"GetParameter","id":"EID23f45a03-c5d7-4dbe-aa85-c25b1660539a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDee3c1803-2ce8-4c92-8564-aa8e36da91b9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc46a602e-1d38-4927-b945-04e124db708a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0813b6d3-c08e-4928-a73c-eb49cea6b106","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4db20dfc-a984-427d-b6ac-977d7a7c38da","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EIDc737b51a-d062-4170-b048-7b21e31121a8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDc737b51a-d062-4170-b048-7b21e31121a8"}},{"type":"GetParameter","id":"EID12695f76-30d7-4dea-8770-55a196115eed","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID6e74e409-f5a7-4e81-9520-9bbac6df0305","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID6e74e409-f5a7-4e81-9520-9bbac6df0305"}},{"type":"ServiceResponse","id":"EID10850869-3db9-41bd-a445-d92446503107","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID10850869-3db9-41bd-a445-d92446503107"}},{"type":"ServiceEndpoint","id":"EID67a6a9d3-184e-4221-afa6-5514b94c695f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDecf381a7-d961-4694-89a3-0aaab800cf98","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDecf381a7-d961-4694-89a3-0aaab800cf98"}},{"type":"Message","id":"EIDae05c67b-6afe-4bc6-8181-4a26cb425636","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDae05c67b-6afe-4bc6-8181-4a26cb425636"}},{"type":"ServiceEndpoint","id":"EIDd82bca6f-e1a8-4316-81a7-0d2234d9d6e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9665c4e8-c915-4e63-a202-8cfd3ed8bf4d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID9665c4e8-c915-4e63-a202-8cfd3ed8bf4d"}},{"type":"ServiceEndpoint","id":"EID6972b1c1-0ef0-46fc-8a85-77a1bc823fdb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf04755ff-1f38-4531-85d5-e6a15ab2131f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8f760dd9-7890-47d9-b3cd-161b4297626f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID8f760dd9-7890-47d9-b3cd-161b4297626f"}},{"type":"GetParameter","id":"EID62814f09-6520-4970-9b60-fc01634c8441","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7c94c2d5-f8e1-4889-a7c5-12c449eaf82e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID2c75e953-4481-49d5-9907-913d7f4b5587","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID2c75e953-4481-49d5-9907-913d7f4b5587"}},{"type":"Message","id":"EID75f0de1e-c0ec-4d8c-8ef2-6e74aad4b873","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID75f0de1e-c0ec-4d8c-8ef2-6e74aad4b873"}},{"type":"GetParameter","id":"EID49b6ab9b-fdee-490f-af2c-0bb247c10f9a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID55353498-7337-4570-acf6-0a19eb61e51e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID55353498-7337-4570-acf6-0a19eb61e51e"}},{"type":"GetParameter","id":"EIDe6431b12-aeb2-440f-89e6-09e74606cc34","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID832d9056-9152-43f5-89b0-ab1af5ccb75e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa8b55277-fe8d-4f7b-b80b-71f25ca9e377","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID16fcc161-563e-44ce-88f8-e0dad2ec4abf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc27ffbb4-79d1-4488-b62e-00e2380faf5b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDc27ffbb4-79d1-4488-b62e-00e2380faf5b"}},{"type":"ServiceEndpoint","id":"EID9093344f-00bd-435a-baf6-3be8496c4b66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID11542187-2602-4977-8e1f-9e6f1e954e3e","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID11542187-2602-4977-8e1f-9e6f1e954e3e"}},{"type":"Message","id":"EIDe2b554e2-bc8d-4616-911c-17839feb7d91","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDe2b554e2-bc8d-4616-911c-17839feb7d91"}},{"type":"Message","id":"EIDc6dbc213-1672-409d-be25-f20104163910","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDc6dbc213-1672-409d-be25-f20104163910"}},{"type":"Message","id":"EIDf834874a-1e41-4a13-b68b-ece2b67e29d6","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDf834874a-1e41-4a13-b68b-ece2b67e29d6"}},{"type":"GetParameter","id":"EIDb44e7667-95b5-4d6c-b932-0fef8aa88c32","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDfec01926-1169-43fc-b1e1-7550c8aa48b9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDfec01926-1169-43fc-b1e1-7550c8aa48b9"}},{"type":"ServiceResponse","id":"EIDdad7b2ef-eea8-43f0-8868-d7cd96ee3a66","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDdad7b2ef-eea8-43f0-8868-d7cd96ee3a66"}},{"type":"ServiceEndpoint","id":"EIDbdb32183-f335-49c1-a7cb-7fd8433ac38a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID87ab643a-ffda-4f86-87e3-7ed2fd490573","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID87ab643a-ffda-4f86-87e3-7ed2fd490573"}},{"type":"Message","id":"EID71b57d79-d97a-4f2b-a8d0-6400a659b78a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID71b57d79-d97a-4f2b-a8d0-6400a659b78a"}},{"type":"Message","id":"EIDdce576ea-42cf-478e-992e-c05320d5fef8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDdce576ea-42cf-478e-992e-c05320d5fef8"}},{"type":"Message","id":"EIDcca1aaab-3fa9-44e8-b81f-e53c380c5671","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDcca1aaab-3fa9-44e8-b81f-e53c380c5671"}},{"type":"ServiceResponse","id":"EID80c5d6e6-5190-4546-bbee-582b42043ff3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID80c5d6e6-5190-4546-bbee-582b42043ff3"}},{"type":"ServiceEndpoint","id":"EIDf012b2fe-f961-4ead-a6e1-c45a402ce046","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID9b683a86-f3e0-4ce2-a0de-c4e5532f9634","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID9b683a86-f3e0-4ce2-a0de-c4e5532f9634"}},{"type":"Message","id":"EID1835506f-b02a-4e79-9b90-cf9655102dce","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID1835506f-b02a-4e79-9b90-cf9655102dce"}},{"type":"ServiceEndpoint","id":"EID8e36a2c3-767c-4dc1-a9f8-243054d8c8b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID0868b252-52bd-4150-9e96-8419672a8239","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID10cae637-06f9-4ae5-97eb-f31ef0b303de","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID55c9aac5-8915-4f19-a75c-b68e3b946ee5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID55c9aac5-8915-4f19-a75c-b68e3b946ee5"}},{"type":"ServiceEndpoint","id":"EIDcb109b91-ae5a-4e83-bc54-3853ca10040f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDf0cff749-cac3-450f-925d-7dabfe8d2e80","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDf0cff749-cac3-450f-925d-7dabfe8d2e80"}},{"type":"GetParameter","id":"EIDe4cf1017-5c5c-4772-82ce-a854dd77d120","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID730905c1-1bd9-4c55-bb5a-628d183f5ba6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDaee85f80-0004-4eea-b728-5b1f0ff9c6cc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6ebf4941-f40b-4d21-8fe0-044a26c5dc3a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9ac47281-52db-44b0-af4e-8eedacead36d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID43659396-7e47-4225-9706-d3d1b812e8d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf11225ec-4c4d-4db1-b671-f65c42190c07","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDdf8523d5-592d-49f2-a293-119dbe19b339","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDdf8523d5-592d-49f2-a293-119dbe19b339"}},{"type":"ServiceResponse","id":"EID7b9cbe21-6a3a-4381-8dae-2786a7eea46e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID7b9cbe21-6a3a-4381-8dae-2786a7eea46e"}},{"type":"ServiceResponse","id":"EID49922062-a2c8-441f-9aa8-4c00724f3d97","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID49922062-a2c8-441f-9aa8-4c00724f3d97"}},{"type":"GetParameter","id":"EIDa893051b-d569-482d-bbbc-a15857fcc6d7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcf4ab4d0-77a7-4028-aeb6-d42bb28e7bd1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID4874b72b-b97c-428e-9930-e1412c6acf32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID23549271-237c-4dd3-b50d-1da45652a67a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4e5685a6-74af-47d4-9524-de559dbfe60d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDf5907d73-391e-46b8-8dfe-7b68a60199f2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID96064ab0-c858-4b14-8b1f-6e767e8ce0ac","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID96064ab0-c858-4b14-8b1f-6e767e8ce0ac"}},{"type":"GetParameter","id":"EID9a3a115d-e281-474e-8fbd-90321c190ef8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDef335cd2-9b8b-401d-82e4-d701ce4bd324","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDef335cd2-9b8b-401d-82e4-d701ce4bd324"}},{"type":"Message","id":"EIDcfa62734-0b55-4626-b336-eb9ece019c96","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDcfa62734-0b55-4626-b336-eb9ece019c96"}},{"type":"ServiceEndpoint","id":"EID0ec97693-9c11-46ed-b863-28617d0e415c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3f064c1e-09e5-4160-903a-bf1c963baf4c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7d3d1fce-008a-405a-b477-91894056789b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID630e9e62-09f0-4c73-bd85-72cea0cd8eda","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID630e9e62-09f0-4c73-bd85-72cea0cd8eda"}},{"type":"GetParameter","id":"EIDe1f7f84e-bd21-40ab-92fb-39926911984f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID0e52c0a5-fcf5-4e4e-94d3-ea9d20ba2b47","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID4daa1f86-8b02-4bac-a6ee-20c444b55b63","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID232f4a7f-cce1-4067-972f-16b14753f01e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID232f4a7f-cce1-4067-972f-16b14753f01e"}},{"type":"Error","id":"EIDcc199733-8701-4497-8d1c-35cd11294596","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDcc199733-8701-4497-8d1c-35cd11294596"}},{"type":"ServiceResponse","id":"EID00ff4bdf-f8bf-43df-aef5-6edad22ea4b4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID00ff4bdf-f8bf-43df-aef5-6edad22ea4b4"}},{"type":"LogFile","id":"EIDd809bdb2-c719-44dc-bd1f-af1a5f87b165","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDd809bdb2-c719-44dc-bd1f-af1a5f87b165"}},{"type":"ServiceEndpoint","id":"EIDa898e712-045a-404a-9202-046083b100af","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID0f73d0e5-01e4-4dce-a3bd-6c8eb2da4af7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb26b7cb7-7a17-4f7b-a63e-813bd6278dfc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDb26b7cb7-7a17-4f7b-a63e-813bd6278dfc"}},{"type":"ServiceResponse","id":"EID18f9431b-6e8f-487d-ba68-2827348d7458","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID18f9431b-6e8f-487d-ba68-2827348d7458"}},{"type":"ServiceEndpoint","id":"EID15cee3ba-dd40-48ec-92ac-c129aeaac38e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcca5b888-4259-4166-aadd-6b517373c82c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9a450a90-4d26-43c2-8990-b1deb505a2fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID317752a3-bb1b-42e9-886e-58c34e67bfd2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID317752a3-bb1b-42e9-886e-58c34e67bfd2"}},{"type":"GetParameter","id":"EIDa289910d-c994-4c8d-8b47-c7fdbe909d6c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Error","id":"EID0de887fe-329a-40f5-afec-c0bad7a21926","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID0de887fe-329a-40f5-afec-c0bad7a21926"}},{"type":"ServiceEndpoint","id":"EID7283ffda-3eb2-47f1-a373-6c5402e4bbd0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID72083b60-a738-4a65-8d27-e2ec36d43f32","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID72083b60-a738-4a65-8d27-e2ec36d43f32"}},{"type":"Message","id":"EID2c386c07-bff7-4c93-9c4a-4ed43b06b748","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID2c386c07-bff7-4c93-9c4a-4ed43b06b748"}},{"type":"ServiceEndpoint","id":"EID8b201aa4-6993-42be-8c47-766bfe3f360b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID05b71fd5-936f-4de6-9c9e-1e088415506d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID05b71fd5-936f-4de6-9c9e-1e088415506d"}},{"type":"Error","id":"EID4b149621-e3d8-484e-91a2-524e4d8084c2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID4b149621-e3d8-484e-91a2-524e4d8084c2"}},{"type":"Message","id":"EID42efd07a-e6fd-40c5-9b9a-ce913fc69d7a","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID42efd07a-e6fd-40c5-9b9a-ce913fc69d7a"}},{"type":"ServiceResponse","id":"EID5e616899-1468-4b5a-b4f6-95039dcf4f69","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID5e616899-1468-4b5a-b4f6-95039dcf4f69"}},{"type":"GetParameter","id":"EID8504e80f-6dcb-4b68-b4cc-dcf16f4b510e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID2fad90ee-ae33-423a-97a7-3ded157d56c4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID2fad90ee-ae33-423a-97a7-3ded157d56c4"}},{"type":"GetParameter","id":"EID097fcbe9-249e-46d3-929e-93a0d47c6620","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID0306b981-fd3d-4576-9d53-3aef0d67c407","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID0306b981-fd3d-4576-9d53-3aef0d67c407"}},{"type":"GetParameter","id":"EIDc907df86-63b5-4be6-8b8c-6ab98227d560","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID101d9f48-2308-4d1b-b153-06f7f153ebee","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EID101d9f48-2308-4d1b-b153-06f7f153ebee"}},{"type":"GetParameter","id":"EIDd3d5be19-4b16-4cf6-b705-77c0c9dd3ec4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8ab4aa3f-1aa7-4298-9aa8-40431000200e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa688b9f0-7144-4a49-a461-c4806ab06804","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDa688b9f0-7144-4a49-a461-c4806ab06804"}},{"type":"ServiceResponse","id":"EIDc846e184-5050-42bd-80f8-990a833675b0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID25b017db-1c8c-4a2d-975b-464e8abba882/Attachments/EIDc846e184-5050-42bd-80f8-990a833675b0"}},{"type":"ServiceEndpoint","id":"EID4760268d-930c-4bdd-8574-18f61f15853a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:10:12Z","duration":10840,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:10:53.967 [print] EID79694b8d-d89e-4ab6-b867-eaa5799017ee
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:53.968 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:10:53.974 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.002
11:10:53.977 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:53.977 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/79694b8d-d89e-4ab6-b867-eaa5799017ee.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:10:53.978 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/79694b8d-d89e-4ab6-b867-eaa5799017ee.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:10:53.978 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID79694b8d-d89e-4ab6-b867-eaa5799017ee/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.001
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.010
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.003
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.001
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.001
* print refs 0.000
11:10:53.999 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:10:53.999 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.005
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.481
* print "testing url:" + metadata.url 0.000
11:16:22.951 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.480
11:16:22.959 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:23.431 response time in milliseconds: 471.66
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:16:23 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.394
Given url metadata.url 0.000
When method HEAD 0.394
11:16:23.434 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:23.828 response time in milliseconds: 393.73
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:16:23 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
8.485
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:23.834 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.484
11:16:23.838 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities"}}}

11:16:32.319 response time in milliseconds: 8375.63
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883791723","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:32.319 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.336
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:20.912 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.335
11:13:20.913 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities"}}}

11:13:22.248 response time in milliseconds: 1331.72
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:22 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883602177","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:22.248 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.437
* print "testing url:" + metadata.url 0.000
11:16:33.003 [print] testing url:https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.437
11:16:33.004 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:33.441 response time in milliseconds: 436.52
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:33 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.423
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.417
11:16:33.444 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:33.861 response time in milliseconds: 417.12
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:16:33 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.005
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:33.866 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.565
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:28.723 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.565
11:15:28.723 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 292
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS"}}}

11:15:30.288 response time in milliseconds: 1457.28
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:30 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883730115","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:30.288 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:22.018
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.006
11:04:41.483 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.105
11:04:41.494 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}

11:04:47.580 response time in milliseconds: 5334.29
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:46 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:04:44 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/558d3592-5522-4907-8694-32ca604ccb78.json","testRuns":{"TestRun":{"id":"EID558d3592-5522-4907-8694-32ca604ccb78","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:43.534Z","testTasks":{"TestTask":{"id":"EID7a92587c-7fa1-4774-9b7a-f9579a4e6451","parent":{"ref":"EID558d3592-5522-4907-8694-32ca604ccb78"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdcbd54fc-bb4c-4992-b216-546f18a84bbe"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdcbd54fc-bb4c-4992-b216-546f18a84bbe","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:41.945Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:43.126Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:04:47.590 [print] EID558d3592-5522-4907-8694-32ca604ccb78
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:04:47.591 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:04:47.591 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:04:47.591 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/558d3592-5522-4907-8694-32ca604ccb78.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:04:47.592 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:04:47.592 [print] statuspath TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78
* print 'progresspath ', progresspath 0.000
11:04:47.593 [print] progresspath  TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
Given path progresspath 0.000
When method GET 0.529
11:04:47.594 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:48.122 response time in milliseconds: 527.22
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:04:48 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:04:48.122 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)",
    "28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:04:43 - Preparing 1 Test Task:",
    "28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)",
    "28.10.2020 11:04:43 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:04:43 -  with parameters: ",
    "28.10.2020 11:04:43 - etf.testcases = *",
    "28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:04:43 - Setting state to CREATED",
    "28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z",
    "28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:04:45 - Project Properties: ",
    "28.10.2020 11:04:45 - etf.testcases - * ",
    "28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ",
    "28.10.2020 11:04:45 - username -  ",
    "28.10.2020 11:04:45 - authUser -  ",
    "28.10.2020 11:04:45 - authMethod - basic ",
    "28.10.2020 11:04:45 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 46.526
11:04:48.124 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:48.635 response time in milliseconds: 509.50
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:04:48 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized"]}

11:04:48.636 retry condition not satisfied: response.val == response.max
11:04:48.636 sleeping before retry #1
11:04:53.638 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:54.175 response time in milliseconds: 532.46
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:04:54 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized"]}

11:04:54.176 retry condition not satisfied: response.val == response.max
11:04:54.176 sleeping before retry #2
11:04:59.178 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:59.693 response time in milliseconds: 511.20
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:04:59 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized"]}

11:04:59.694 retry condition not satisfied: response.val == response.max
11:04:59.695 sleeping before retry #3
11:05:04.697 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:05.219 response time in milliseconds: 519.38
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:05:05 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized","28.10.2020 11:05:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:05.220 retry condition not satisfied: response.val == response.max
11:05:05.220 sleeping before retry #4
11:05:10.222 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:10.746 response time in milliseconds: 522.63
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:05:10 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"127","max":"128","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized","28.10.2020 11:05:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:10.746 retry condition not satisfied: response.val == response.max
11:05:10.746 sleeping before retry #5
11:05:15.747 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:16.560 response time in milliseconds: 810.53
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:05:16 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"160","max":"161","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized","28.10.2020 11:05:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:16.566 retry condition not satisfied: response.val == response.max
11:05:16.566 sleeping before retry #6
11:05:21.568 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:22.122 response time in milliseconds: 542.87
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:05:22 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized","28.10.2020 11:05:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:21 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:21 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:05:22.125 retry condition not satisfied: response.val == response.max
11:05:22.126 sleeping before retry #7
11:05:27.127 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:27.641 response time in milliseconds: 511.43
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:05:27 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:04:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:43 UTC 2020)","28.10.2020 11:04:43 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:43 - Preparing 1 Test Task:","28.10.2020 11:04:43 -  TestTask 1 (7a92587c-7fa1-4774-9b7a-f9579a4e6451)","28.10.2020 11:04:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:43 -  with parameters: ","28.10.2020 11:04:43 - etf.testcases = *","28.10.2020 11:04:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:43 - Setting state to CREATED","28.10.2020 11:04:43 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:44 - Starting TestRun.558d3592-5522-4907-8694-32ca604ccb78 at 2020-10-28T11:04:45Z","28.10.2020 11:04:45 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:45 - Project Properties: ","28.10.2020 11:04:45 - etf.testcases - * ","28.10.2020 11:04:45 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","28.10.2020 11:04:45 - username -  ","28.10.2020 11:04:45 - authUser -  ","28.10.2020 11:04:45 - authMethod - basic ","28.10.2020 11:04:45 - TestRunTask initialized","28.10.2020 11:05:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:21 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:21 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:05:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:05:27.641 retry condition not satisfied: response.val == response.max
11:05:27.641 sleeping before retry #8
11:05:32.642 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:34.649 response time in milliseconds: 2006.02
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:05:34 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:05:34.649 retry condition satisfied
* print response 0.000
11:05:34.649 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 28.833
11:05:34.652 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:03.479 response time in milliseconds: 27720.63
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Cache-Control: public, max-age=120
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:06:02 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Last-Modified: Wed, 28 Oct 2020 11:05:34 GMT
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/558d3592-5522-4907-8694-32ca604ccb78.json","testRuns":{"TestRun":{"id":"EID558d3592-5522-4907-8694-32ca604ccb78","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:43.534Z","testTasks":{"TestTask":{"id":"EID7a92587c-7fa1-4774-9b7a-f9579a4e6451","parent":{"ref":"EID558d3592-5522-4907-8694-32ca604ccb78"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdcbd54fc-bb4c-4992-b216-546f18a84bbe"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDf26641a1-f64b-461d-acc7-ab27eb01caa6"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdcbd54fc-bb4c-4992-b216-546f18a84bbe","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:41.945Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:43.126Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDf26641a1-f64b-461d-acc7-ab27eb01caa6","testObject":{"ref":"EIDdcbd54fc-bb4c-4992-b216-546f18a84bbe"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee1afa8-0175-1000-09cd-397581521421","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1afa9-0175-1000-cf27-35781b473b01","testStepResults":{"TestStepResult":[{"id":"EID6ee1afb6-0175-1000-11de-b6760397910e","parent":{"ref":"EID6ee1afa9-0175-1000-cf27-35781b473b01"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:04:45Z","duration":16,"status":"PASSED"},{"id":"EID6ee1afc7-0175-1000-9a29-e6a5eae93088","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1b276-0175-1000-dd81-e79269cd5c6d","parent":{"ref":"EID6ee1afc7-0175-1000-9a29-e6a5eae93088"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:04:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b276-0175-1000-7ba0-08038e49e79c","parent":{"ref":"EID6ee1afc7-0175-1000-9a29-e6a5eae93088"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:04:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b276-0175-1000-0e40-2ff20117e6ad","parent":{"ref":"EID6ee1afc7-0175-1000-9a29-e6a5eae93088"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:04:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b276-0175-1000-c2c2-532d928941b6","parent":{"ref":"EID6ee1afc7-0175-1000-9a29-e6a5eae93088"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:04:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc40f70e5-7a48-4857-aab1-824e7d99f316"},{"ref":"EID8efa9152-0ade-4840-9f22-f0c7d9f16f56"},{"ref":"EIDa878f6a4-b9b5-469b-8e13-b10e6ae2aa62"}]},"parent":{"ref":"EID6ee1afa9-0175-1000-cf27-35781b473b01"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:04:45Z","duration":426,"status":"PASSED"}]},"parent":{"ref":"EID6ee1afa8-0175-1000-09cd-397581521421"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:04:45Z","duration":728,"status":"PASSED"},{"id":"EID6ee1b281-0175-1000-8469-5ce5f7fee34a","testStepResults":{"TestStepResult":{"id":"EID6ee1b288-0175-1000-0ec8-a9306a344479","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1b4f9-0175-1000-18b6-973e1f0f8197","parent":{"ref":"EID6ee1b288-0175-1000-0ec8-a9306a344479"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b4f9-0175-1000-5fac-55f0df860a16","parent":{"ref":"EID6ee1b288-0175-1000-0ec8-a9306a344479"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b4f9-0175-1000-ee1a-95d8c462edbd","parent":{"ref":"EID6ee1b288-0175-1000-0ec8-a9306a344479"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc46c8658-8869-473d-9068-c4a06a7c04e0"},{"ref":"EID8088d325-47c5-4540-b969-7ca1e6deaf1c"},{"ref":"EID428f8b9e-e529-432c-a2fa-2be6b88f819c"}]},"parent":{"ref":"EID6ee1b281-0175-1000-8469-5ce5f7fee34a"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:04:46Z","duration":511,"status":"PASSED"}},"parent":{"ref":"EID6ee1afa8-0175-1000-09cd-397581521421"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:04:46Z","duration":710,"status":"PASSED"}]},"parent":{"ref":"EIDf26641a1-f64b-461d-acc7-ab27eb01caa6"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:04:45Z","duration":1439,"status":"PASSED"},{"id":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1b547-0175-1000-a0c9-e57b3a1d5e03","testStepResults":{"TestStepResult":[{"id":"EID6ee1b547-0175-1000-27c4-5925dc1b2386","parent":{"ref":"EID6ee1b547-0175-1000-a0c9-e57b3a1d5e03"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:04:47Z","duration":511,"status":"PASSED"},{"id":"EID6ee1b547-0175-1000-5cdf-59e3ce7a304f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1b7a9-0175-1000-1d83-625bf3c6fd87","parent":{"ref":"EID6ee1b547-0175-1000-5cdf-59e3ce7a304f"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b7a9-0175-1000-20ad-fc1d323ddbec","parent":{"ref":"EID6ee1b547-0175-1000-5cdf-59e3ce7a304f"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b7a9-0175-1000-18fc-597ad337bb46","parent":{"ref":"EID6ee1b547-0175-1000-5cdf-59e3ce7a304f"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b7a9-0175-1000-8e13-0a1438aebb8c","parent":{"ref":"EID6ee1b547-0175-1000-5cdf-59e3ce7a304f"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b7a9-0175-1000-3320-625443c50e58","parent":{"ref":"EID6ee1b547-0175-1000-5cdf-59e3ce7a304f"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:04:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID35c469e7-9e10-48fd-b58a-8f3ec0f8238b"},{"ref":"EID179ee7e2-4645-4bc6-8296-6787f41b1d87"},{"ref":"EID65160cba-0783-4093-82b4-ffcbdfd9a9d0"}]},"parent":{"ref":"EID6ee1b547-0175-1000-a0c9-e57b3a1d5e03"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:04:47Z","duration":507,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:04:47Z","duration":617,"status":"PASSED"},{"id":"EID6ee1b7b0-0175-1000-f82f-db6b7ec1f391","testStepResults":{"TestStepResult":[{"id":"EID6ee1b7b0-0175-1000-f7c8-408f58f01a79","attachments":{"attachment":[{"ref":"EID69a60824-2a3d-445f-854a-f141942414bf"},{"ref":"EIDcf882b72-bd01-4bba-8163-a34319289c55"}]},"parent":{"ref":"EID6ee1b7b0-0175-1000-f82f-db6b7ec1f391"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:04:47Z","duration":214,"status":"PASSED"},{"id":"EID6ee1b8b6-0175-1000-291c-bf8c5e39f887","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1b955-0175-1000-d03e-35df9aa9c9ad","parent":{"ref":"EID6ee1b8b6-0175-1000-291c-bf8c5e39f887"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b955-0175-1000-5aa3-28ffe14879f5","parent":{"ref":"EID6ee1b8b6-0175-1000-291c-bf8c5e39f887"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b955-0175-1000-9ccb-0f791f67bea8","parent":{"ref":"EID6ee1b8b6-0175-1000-291c-bf8c5e39f887"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1b955-0175-1000-4f1e-ba017c1db555","parent":{"ref":"EID6ee1b8b6-0175-1000-291c-bf8c5e39f887"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID54d1b076-c1e7-48c0-8a41-1911746fc029"},{"ref":"EIDefdf3744-9a00-4126-9416-2b9edb9fc6c1"},{"ref":"EID3ebcde23-da22-41eb-a0ac-90fc99324383"}]},"parent":{"ref":"EID6ee1b7b0-0175-1000-f82f-db6b7ec1f391"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:04:48Z","duration":64,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:04:47Z","duration":421,"status":"PASSED"},{"id":"EID6ee1b956-0175-1000-7b02-16bf32ab896f","testStepResults":{"TestStepResult":[{"id":"EID6ee1b956-0175-1000-718a-064cafeb755f","attachments":{"attachment":[{"ref":"EID7edd4179-9bcf-4630-81c4-bef1c25f5f63"},{"ref":"EIDab32fe4c-6aa4-4443-955a-4a493326544e"}]},"parent":{"ref":"EID6ee1b956-0175-1000-7b02-16bf32ab896f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:04:48Z","duration":111,"status":"PASSED"},{"id":"EID6ee1b9ff-0175-1000-2a0e-d93ed8b6023e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1bad9-0175-1000-8eb5-1e3c7682418d","parent":{"ref":"EID6ee1b9ff-0175-1000-2a0e-d93ed8b6023e"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bad9-0175-1000-5b02-fbe2b75aeeac","parent":{"ref":"EID6ee1b9ff-0175-1000-2a0e-d93ed8b6023e"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bad9-0175-1000-92f1-3714431381db","parent":{"ref":"EID6ee1b9ff-0175-1000-2a0e-d93ed8b6023e"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bad9-0175-1000-6051-8d603487550c","parent":{"ref":"EID6ee1b9ff-0175-1000-2a0e-d93ed8b6023e"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bad9-0175-1000-d05e-049c5c0b9acf","parent":{"ref":"EID6ee1b9ff-0175-1000-2a0e-d93ed8b6023e"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdce97736-dadf-4c23-9b98-2b32b72099f8"},{"ref":"EID4bdc8d55-ae68-4b8c-bfed-e0e070f48b10"},{"ref":"EID5800aa6d-f83b-4c00-bcc3-8db63af5849b"}]},"parent":{"ref":"EID6ee1b956-0175-1000-7b02-16bf32ab896f"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:04:48Z","duration":107,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:04:48Z","duration":387,"status":"PASSED"},{"id":"EID6ee1bada-0175-1000-b088-8bf2274f2216","testStepResults":{"TestStepResult":[{"id":"EID6ee1bada-0175-1000-8fba-97ee6fa345b8","attachments":{"attachment":[{"ref":"EID088698ac-714c-4ba6-a169-49db0b1897ad"},{"ref":"EIDb196e061-ddcc-486d-a34a-7bf7a47d0d7b"}]},"parent":{"ref":"EID6ee1bada-0175-1000-b088-8bf2274f2216"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:04:48Z","duration":191,"status":"PASSED"},{"id":"EID6ee1bbde-0175-1000-1430-924b5e7d04c7","parent":{"ref":"EID6ee1bada-0175-1000-b088-8bf2274f2216"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:04:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bbde-0175-1000-0964-d79128f7a93a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1bc69-0175-1000-d8c5-dfc7b9e9a485","parent":{"ref":"EID6ee1bbde-0175-1000-0964-d79128f7a93a"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bc69-0175-1000-ab4f-e4c69a6cf609","parent":{"ref":"EID6ee1bbde-0175-1000-0964-d79128f7a93a"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bc69-0175-1000-323d-2fe6408d9585","parent":{"ref":"EID6ee1bbde-0175-1000-0964-d79128f7a93a"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1bc69-0175-1000-a46b-0221f4178bf3","parent":{"ref":"EID6ee1bbde-0175-1000-0964-d79128f7a93a"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe97eea67-2e97-42d7-8a77-96e0557ff66a"},{"ref":"EID4ffcb0bb-f572-4787-a0c0-9df5a9633e05"},{"ref":"EIDd4e0ee9d-ede6-4f66-96a7-50b393874d40"}]},"parent":{"ref":"EID6ee1bada-0175-1000-b088-8bf2274f2216"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:04:48Z","duration":47,"status":"PASSED"},{"id":"EID6ee1bc69-0175-1000-f4ba-14f2be93af71","attachments":{"attachment":{"ref":"EID3c4798a3-0e03-426e-8caf-9a30263b30e5"}},"parent":{"ref":"EID6ee1bada-0175-1000-b088-8bf2274f2216"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:04:49Z","duration":1,"status":"PASSED"},{"id":"EID6ee1bced-0175-1000-c377-cf5cde23eb24","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1be85-0175-1000-d843-ca0832e7aa44","parent":{"ref":"EID6ee1bced-0175-1000-c377-cf5cde23eb24"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1be85-0175-1000-97e7-ee681ff5f5a5","parent":{"ref":"EID6ee1bced-0175-1000-c377-cf5cde23eb24"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1be85-0175-1000-93a0-b035f5172578","parent":{"ref":"EID6ee1bced-0175-1000-c377-cf5cde23eb24"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1be85-0175-1000-8c47-65c3f13c4525","parent":{"ref":"EID6ee1bced-0175-1000-c377-cf5cde23eb24"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee1be85-0175-1000-c94f-eafdb1197d63","parent":{"ref":"EID6ee1bced-0175-1000-c377-cf5cde23eb24"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:04:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbe87dee4-fd3e-4cfd-b7ea-45b658d3e7c2"},{"ref":"EID5f3b0a7c-6d82-4bec-888d-58082e56bc8f"},{"ref":"EID9a600679-8767-4d46-a90b-eefad7533aa6"}]},"parent":{"ref":"EID6ee1bada-0175-1000-b088-8bf2274f2216"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:04:49Z","duration":138,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:04:48Z","duration":951,"status":"PASSED"},{"id":"EID6ee1be91-0175-1000-143a-541162bc98fc","testStepResults":{"TestStepResult":[{"id":"EID6ee1be91-0175-1000-351b-d00670f512de","attachments":{"attachment":[{"ref":"EIDa8c1d037-d390-40e2-a91f-3d10a242e135"},{"ref":"EIDb964916c-f905-4d99-8869-d37e155ce111"}]},"parent":{"ref":"EID6ee1be91-0175-1000-143a-541162bc98fc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:04:49Z","duration":581,"status":"PASSED"},{"id":"EID6ee1c120-0175-1000-8969-c8e3f56aa06c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1c1dd-0175-1000-e937-1e0a227ee927","parent":{"ref":"EID6ee1c120-0175-1000-8969-c8e3f56aa06c"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:04:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c1dd-0175-1000-8c24-d6de77aaa529","parent":{"ref":"EID6ee1c120-0175-1000-8969-c8e3f56aa06c"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:04:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c1dd-0175-1000-1282-2f0fb3dbbe08","parent":{"ref":"EID6ee1c120-0175-1000-8969-c8e3f56aa06c"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:04:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c1de-0175-1000-9b38-32f91eb5da1b","parent":{"ref":"EID6ee1c120-0175-1000-8969-c8e3f56aa06c"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:04:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbc35a7ed-a683-47b6-ae19-31c444afcb67"},{"ref":"EID1ed156fb-9b14-4a17-b3f2-aaa59dca16bf"},{"ref":"EIDf9a84d0f-348b-443b-a6f5-b9157f480949"}]},"parent":{"ref":"EID6ee1be91-0175-1000-143a-541162bc98fc"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:04:50Z","duration":73,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:04:49Z","duration":845,"status":"PASSED"},{"id":"EID6ee1c1de-0175-1000-7bb4-99dec2380038","testStepResults":{"TestStepResult":[{"id":"EID6ee1c1de-0175-1000-9bcf-f525152e5261","attachments":{"attachment":[{"ref":"EID6d781d52-9e28-444c-afe0-f10497f9bcfb"},{"ref":"EIDa0f9d350-2cb2-4ee0-86e7-defbc77b5dc0"}]},"parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:04:50Z","duration":363,"status":"PASSED"},{"id":"EID6ee1c378-0175-1000-61fa-f6b14d9e4800","parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:04:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c378-0175-1000-8b5c-4e132c4ce499","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1c519-0175-1000-9a5f-bb27392a3621","parent":{"ref":"EID6ee1c378-0175-1000-8b5c-4e132c4ce499"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c519-0175-1000-fbab-464f52f37e5e","parent":{"ref":"EID6ee1c378-0175-1000-8b5c-4e132c4ce499"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c519-0175-1000-3151-617bfa4fdcf4","parent":{"ref":"EID6ee1c378-0175-1000-8b5c-4e132c4ce499"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c519-0175-1000-01f6-da940192ac11","parent":{"ref":"EID6ee1c378-0175-1000-8b5c-4e132c4ce499"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b7650c3-ff0e-48b4-8f28-928a169be4c4"},{"ref":"EID2488dea2-e097-4119-99a8-627a47d9e91d"},{"ref":"EIDe3e71e10-7205-47f0-8542-0906d8fd6961"}]},"parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:04:50Z","duration":277,"status":"PASSED"},{"id":"EID6ee1c519-0175-1000-b407-4efc8ace17d3","attachments":{"attachment":{"ref":"EIDa788e374-4066-4283-9bca-1c7035f95be4"}},"parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:04:51Z","duration":1,"status":"PASSED"},{"id":"EID6ee1c525-0175-1000-3dc8-095b037958dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1c629-0175-1000-09aa-2db7e96474b7","parent":{"ref":"EID6ee1c525-0175-1000-3dc8-095b037958dc"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c629-0175-1000-b184-a5b44a120af4","parent":{"ref":"EID6ee1c525-0175-1000-3dc8-095b037958dc"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c629-0175-1000-ef3b-ad728bcb9422","parent":{"ref":"EID6ee1c525-0175-1000-3dc8-095b037958dc"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID29cc68e4-9268-42e5-a18e-a18f00e6e4fb"},{"ref":"EID84b81139-abaf-4977-8eb6-7e11c38b0b57"},{"ref":"EID4b6ebe99-4cd6-40ff-b89d-ad8587fc0e5f"}]},"parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:04:51Z","duration":170,"status":"PASSED"},{"id":"EID6ee1c629-0175-1000-8d87-0358a501201d","attachments":{"attachment":{"ref":"EID560fb8b0-78b4-4f96-8599-f729991bd57c"}},"parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:04:51Z","duration":1,"status":"PASSED"},{"id":"EID6ee1c635-0175-1000-c884-dfdf92f9233f","attachments":{"attachment":{"ref":"EID2dba4e25-0d05-4f82-bee2-6979925afecf"}},"parent":{"ref":"EID6ee1c1de-0175-1000-7bb4-99dec2380038"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:04:51Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:04:50Z","duration":1125,"status":"PASSED"},{"id":"EID6ee1c644-0175-1000-54fb-cffff74bce73","testStepResults":{"TestStepResult":[{"id":"EID6ee1c644-0175-1000-f911-a40d37a6d447","attachments":{"attachment":[{"ref":"EIDe97bb2a6-dc1b-40c5-9eef-687b777c74b0"},{"ref":"EID1630d459-f5c2-46b9-b482-baa82b9a2bc8"}]},"parent":{"ref":"EID6ee1c644-0175-1000-54fb-cffff74bce73"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:04:51Z","duration":201,"status":"PASSED"},{"id":"EID6ee1c738-0175-1000-0ab3-adf175e7ed66","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1c81e-0175-1000-7db2-d52142a5f925","parent":{"ref":"EID6ee1c738-0175-1000-0ab3-adf175e7ed66"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c81e-0175-1000-50db-63d69390cb05","parent":{"ref":"EID6ee1c738-0175-1000-0ab3-adf175e7ed66"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c81e-0175-1000-2068-3044e0ffa45c","parent":{"ref":"EID6ee1c738-0175-1000-0ab3-adf175e7ed66"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee1c81e-0175-1000-a266-b5d9e8bd9180","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee1c738-0175-1000-0ab3-adf175e7ed66"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:04:51Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDac2f2344-e4d0-47be-9038-5db771952268"},{"ref":"EID4194b0c9-a4ce-4d0e-8621-e18054518e55"},{"ref":"EID898c9e13-63e2-455f-8309-1edd22548abf"}]},"parent":{"ref":"EID6ee1c644-0175-1000-54fb-cffff74bce73"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:04:51Z","duration":119,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:04:51Z","duration":474,"status":"PASSED_MANUAL"},{"id":"EID6ee1c81f-0175-1000-a92e-25df497b7428","testStepResults":{"TestStepResult":{"id":"EID6ee1c81f-0175-1000-6527-3bebd95a00e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1cac1-0175-1000-9d3b-0a0566256be3","parent":{"ref":"EID6ee1c81f-0175-1000-6527-3bebd95a00e7"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:04:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cac2-0175-1000-7949-c9622caa8138","parent":{"ref":"EID6ee1c81f-0175-1000-6527-3bebd95a00e7"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:04:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cac2-0175-1000-e6fa-582f9b0d7faa","parent":{"ref":"EID6ee1c81f-0175-1000-6527-3bebd95a00e7"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:04:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cac2-0175-1000-e38a-39c6bad0d097","parent":{"ref":"EID6ee1c81f-0175-1000-6527-3bebd95a00e7"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:04:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID00b445e3-7404-4723-a8fc-7e39869e35bc"},{"ref":"EID826aeec7-6fbd-45e1-a2c6-0d5b9a876a3e"},{"ref":"EIDf29dc041-7193-4fc9-966b-7ad8c44524c0"}]},"parent":{"ref":"EID6ee1c81f-0175-1000-a92e-25df497b7428"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:04:51Z","duration":580,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:04:51Z","duration":675,"status":"PASSED"},{"id":"EID6ee1cac2-0175-1000-8acb-fe2f4a01b640","testStepResults":{"TestStepResult":{"id":"EID6ee1cac2-0175-1000-1416-b6ecbef6d1df","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1cdf3-0175-1000-f278-e25f73ae0531","parent":{"ref":"EID6ee1cac2-0175-1000-1416-b6ecbef6d1df"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cdf4-0175-1000-4a18-cc4409793f59","parent":{"ref":"EID6ee1cac2-0175-1000-1416-b6ecbef6d1df"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cdf4-0175-1000-6aad-1918cf9b4b3a","parent":{"ref":"EID6ee1cac2-0175-1000-1416-b6ecbef6d1df"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee1cdf4-0175-1000-6c6b-db6e02c445ca","parent":{"ref":"EID6ee1cac2-0175-1000-1416-b6ecbef6d1df"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:04:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb7b94707-bbfd-4971-b002-2c43e469dff3"},{"ref":"EID7747db51-0b05-4830-9913-aa6cda4b966c"},{"ref":"EIDb131529c-f9ba-4c11-88e5-c73ab78bbb73"}]},"parent":{"ref":"EID6ee1cac2-0175-1000-8acb-fe2f4a01b640"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:04:52Z","duration":716,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:04:52Z","duration":818,"status":"PASSED"},{"id":"EID6ee1cdf4-0175-1000-eddb-7d6988390ce8","testStepResults":{"TestStepResult":[{"id":"EID6ee1cdf4-0175-1000-f86d-c6123a304bb2","attachments":{"attachment":[{"ref":"EIDe45c990f-4ef3-41c3-8e00-cdbecb08913c"},{"ref":"EID2ebc45cd-cf33-4fec-8af3-146c97a54526"},{"ref":"EID490455cb-6d73-4cc2-8b07-d2ff3321c541"},{"ref":"EID3bcd60e1-6b9b-4b09-b728-522357fe2d48"},{"ref":"EID2046708e-91b0-498a-bdde-09085cd73a5e"},{"ref":"EIDdd5df964-b4be-443f-b70a-993ed30997be"},{"ref":"EID1a4fbbf4-57a5-40fd-86a3-61cff775dfac"},{"ref":"EID1dcdeda6-9898-453b-bd68-02819682c7dd"},{"ref":"EID6253c111-1ca0-47d7-91c3-89eebbd0ff21"},{"ref":"EIDd4ea33f3-5086-4b0f-be41-8f149c7e0689"},{"ref":"EIDc1ae037a-4d51-4cbf-99a0-18e6f9b8d3b5"},{"ref":"EID6c6128cf-44db-4329-8058-a689434e8ca8"}]},"parent":{"ref":"EID6ee1cdf4-0175-1000-eddb-7d6988390ce8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:04:53Z","duration":993,"status":"PASSED"},{"id":"EID6ee1d33e-0175-1000-fdf5-a108fcb3d77e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1d791-0175-1000-094f-e0eeac4d68d3","parent":{"ref":"EID6ee1d33e-0175-1000-fdf5-a108fcb3d77e"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d791-0175-1000-059e-47852a146e1b","parent":{"ref":"EID6ee1d33e-0175-1000-fdf5-a108fcb3d77e"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d791-0175-1000-f21b-843455f051ef","parent":{"ref":"EID6ee1d33e-0175-1000-fdf5-a108fcb3d77e"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d791-0175-1000-e12b-e0bdb642251c","parent":{"ref":"EID6ee1d33e-0175-1000-fdf5-a108fcb3d77e"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d791-0175-1000-03fe-cd0f653bbcd6","parent":{"ref":"EID6ee1d33e-0175-1000-fdf5-a108fcb3d77e"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:04:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb70ee7f6-1e49-46b9-8441-91a873191b11"},{"ref":"EID780e10f7-07d5-4d63-bfaa-edd59f4d6b60"},{"ref":"EID4f8e91ac-2bfa-4076-b3fa-d300fc469379"}]},"parent":{"ref":"EID6ee1cdf4-0175-1000-eddb-7d6988390ce8"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:04:54Z","duration":943,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:04:53Z","duration":2462,"status":"PASSED"},{"id":"EID6ee1d792-0175-1000-db33-b694bc450fbe","testStepResults":{"TestStepResult":{"id":"EID6ee1d79a-0175-1000-46ab-6484040d809f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1d954-0175-1000-9ead-c1e6ffcae408","parent":{"ref":"EID6ee1d79a-0175-1000-46ab-6484040d809f"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d954-0175-1000-9ada-5f7f6fe6f635","parent":{"ref":"EID6ee1d79a-0175-1000-46ab-6484040d809f"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d954-0175-1000-9d4c-5ab5d0bbb8e7","parent":{"ref":"EID6ee1d79a-0175-1000-46ab-6484040d809f"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee1d954-0175-1000-c4a5-8c2abedc5d15","parent":{"ref":"EID6ee1d79a-0175-1000-46ab-6484040d809f"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:04:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID535c4621-570b-4e21-88c6-42ab6a47c6c3"},{"ref":"EID8ac7cad5-a1b0-4984-900d-d5430f88123b"},{"ref":"EID38d1f60b-aad5-4dc6-9826-fa82f2fc897f"}]},"parent":{"ref":"EID6ee1d792-0175-1000-db33-b694bc450fbe"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:04:55Z","duration":334,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:04:55Z","duration":450,"status":"PASSED"},{"id":"EID6ee1d954-0175-1000-daa2-37a8c4da029a","testStepResults":{"TestStepResult":{"id":"EID6ee1d954-0175-1000-9597-c084378f4855","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1dbcb-0175-1000-5764-70b6473b7150","parent":{"ref":"EID6ee1d954-0175-1000-9597-c084378f4855"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dbcb-0175-1000-125a-fe2aaff457e7","parent":{"ref":"EID6ee1d954-0175-1000-9597-c084378f4855"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dbcb-0175-1000-d2bd-791d7a1e960e","parent":{"ref":"EID6ee1d954-0175-1000-9597-c084378f4855"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dbcb-0175-1000-4704-7f77abe4c21f","parent":{"ref":"EID6ee1d954-0175-1000-9597-c084378f4855"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dbcb-0175-1000-cd81-4496d17b71d6","parent":{"ref":"EID6ee1d954-0175-1000-9597-c084378f4855"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dbcb-0175-1000-246c-01d565807172","parent":{"ref":"EID6ee1d954-0175-1000-9597-c084378f4855"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:04:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcc0d47ca-1cdf-4768-9ba4-f962c056e28d"},{"ref":"EIDfc9ca6ba-daf0-4a06-a1fb-d5a97337d7d9"},{"ref":"EIDb35a2337-dac2-483b-abe9-acf671502ab3"}]},"parent":{"ref":"EID6ee1d954-0175-1000-daa2-37a8c4da029a"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:04:56Z","duration":479,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:04:56Z","duration":631,"status":"PASSED"},{"id":"EID6ee1dbcb-0175-1000-ab62-0bcf51eb5305","testStepResults":{"TestStepResult":{"id":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1dfa5-0175-1000-2c48-64115266a4fc","parent":{"ref":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfa5-0175-1000-4f44-d9528e4fee53","parent":{"ref":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfa5-0175-1000-eae8-9e3fb61d9603","parent":{"ref":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfa5-0175-1000-706d-7ef8d89e4ce8","parent":{"ref":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfa5-0175-1000-f0da-a10ca89ab769","parent":{"ref":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1dfa5-0175-1000-de0a-c81f2e991bef","parent":{"ref":"EID6ee1dbcb-0175-1000-69fc-e148fe6dba7f"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc16969ba-a47c-4db9-9cf7-d1b2f4656cec"},{"ref":"EIDcd6156f8-dcfc-44ab-b132-5d3063c1703e"},{"ref":"EID2d9f2cb3-cc2a-4e19-97bf-08813b26930c"}]},"parent":{"ref":"EID6ee1dbcb-0175-1000-ab62-0bcf51eb5305"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:04:57Z","duration":853,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:04:57Z","duration":986,"status":"PASSED"},{"id":"EID6ee1dfa6-0175-1000-1318-b26537acfbef","testStepResults":{"TestStepResult":{"id":"EID6ee1dfaf-0175-1000-1c7a-341c69b2e5cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1e2bf-0175-1000-af1c-e42a9688b865","parent":{"ref":"EID6ee1dfaf-0175-1000-1c7a-341c69b2e5cf"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e2bf-0175-1000-2eb3-698a4ba024ec","parent":{"ref":"EID6ee1dfaf-0175-1000-1c7a-341c69b2e5cf"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e2bf-0175-1000-801c-18272a658a95","parent":{"ref":"EID6ee1dfaf-0175-1000-1c7a-341c69b2e5cf"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e2bf-0175-1000-6524-5d5cbb9fdf2c","parent":{"ref":"EID6ee1dfaf-0175-1000-1c7a-341c69b2e5cf"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:04:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID475902d2-62c7-4524-bfd1-86c0672af4b2"},{"ref":"EID5bb5bad6-7de0-4b43-9538-cc224052b6e9"},{"ref":"EIDbbbb9257-69de-4334-9285-669ed6b8ffe8"}]},"parent":{"ref":"EID6ee1dfa6-0175-1000-1318-b26537acfbef"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:04:58Z","duration":650,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:04:58Z","duration":793,"status":"PASSED"},{"id":"EID6ee1e2bf-0175-1000-c858-cf3ca4d94a60","testStepResults":{"TestStepResult":[{"id":"EID6ee1e2bf-0175-1000-d040-5735e0b3f5b6","attachments":{"attachment":[{"ref":"EID93e5b6ee-478e-4ed3-898c-20174804fa72"},{"ref":"EID3b3c45fa-7562-4a04-94eb-23a97b038a49"},{"ref":"EIDee335dbc-23a5-46f2-a7a3-9ca96a976ed8"},{"ref":"EIDf8723529-5c26-47a6-b6c9-08d7f6c2c255"}]},"parent":{"ref":"EID6ee1e2bf-0175-1000-c858-cf3ca4d94a60"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:04:58Z","duration":1015,"status":"PASSED"},{"id":"EID6ee1e6f2-0175-1000-9377-37e0b18e6927","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1e86e-0175-1000-b90a-66f896a82cfc","parent":{"ref":"EID6ee1e6f2-0175-1000-9377-37e0b18e6927"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e86e-0175-1000-b75f-2fca0df6636c","parent":{"ref":"EID6ee1e6f2-0175-1000-9377-37e0b18e6927"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e86e-0175-1000-0559-1f9c0c3330fb","parent":{"ref":"EID6ee1e6f2-0175-1000-9377-37e0b18e6927"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee1e86e-0175-1000-b8d0-2ce5187f28b8","parent":{"ref":"EID6ee1e6f2-0175-1000-9377-37e0b18e6927"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:05:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3ae6a2f5-ebae-4de1-af3d-8598b857f780"},{"ref":"EIDb6d48779-4eb5-4e64-a2eb-3741f59c4509"},{"ref":"EID3c18e31e-3e11-4bcf-b498-b18f1392af97"}]},"parent":{"ref":"EID6ee1e2bf-0175-1000-c858-cf3ca4d94a60"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:04:59Z","duration":200,"status":"PASSED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:04:58Z","duration":1467,"status":"PASSED"},{"id":"EID6ee1e87a-0175-1000-ab1a-ab41db6d19c1","testStepResults":{"TestStepResult":{"id":"EID6ee1e87b-0175-1000-5296-418bfbdc9dbe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1ed4c-0175-1000-5abd-8c87c78b342f","parent":{"ref":"EID6ee1e87b-0175-1000-5296-418bfbdc9dbe"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed4c-0175-1000-018e-aff6f0659cc0","parent":{"ref":"EID6ee1e87b-0175-1000-5296-418bfbdc9dbe"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed4c-0175-1000-f653-a11ca3891300","parent":{"ref":"EID6ee1e87b-0175-1000-5296-418bfbdc9dbe"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed4c-0175-1000-479d-c0f1a3961831","parent":{"ref":"EID6ee1e87b-0175-1000-5296-418bfbdc9dbe"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID99eaffce-1092-48fa-ac7e-0041e06c20d4"},{"ref":"EIDf3bf2a08-d351-41a3-a098-92d038c4a265"},{"ref":"EID6539e029-6d3f-49f9-a0ff-5a94fea03be1"}]},"parent":{"ref":"EID6ee1e87a-0175-1000-ab1a-ab41db6d19c1"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:05:00Z","duration":1013,"status":"PASSED"}},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:05:00Z","duration":1241,"status":"PASSED"},{"id":"EID6ee1ed54-0175-1000-b64a-399729632c09","testStepResults":{"TestStepResult":[{"id":"EID6ee1ed54-0175-1000-eb9e-d1cf92be439b","parent":{"ref":"EID6ee1ed54-0175-1000-b64a-399729632c09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:05:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee1ed54-0175-1000-8eeb-5a84a90785c2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f00e-0175-1000-1f72-cd9f1400e6c2","parent":{"ref":"EID6ee1ed54-0175-1000-8eeb-5a84a90785c2"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f00e-0175-1000-6089-7ac025653904","parent":{"ref":"EID6ee1ed54-0175-1000-8eeb-5a84a90785c2"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f00e-0175-1000-66e0-859c56413f0a","parent":{"ref":"EID6ee1ed54-0175-1000-8eeb-5a84a90785c2"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f00e-0175-1000-2878-53066d4bcb14","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee1ed54-0175-1000-8eeb-5a84a90785c2"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:05:02Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID12f13c00-b8f1-441f-b7c8-e579c92d2281"},{"ref":"EID5972309b-0dfe-4406-837e-dca68dff3ea3"},{"ref":"EIDbc4152a3-6401-445e-8dd0-ef891d069e1c"}]},"parent":{"ref":"EID6ee1ed54-0175-1000-b64a-399729632c09"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:05:01Z","duration":569,"status":"FAILED"}]},"parent":{"ref":"EID6ee1b547-0175-1000-ce06-96ec911cd3f2"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:05:01Z","duration":699,"status":"FAILED"}]},"parent":{"ref":"EIDf26641a1-f64b-461d-acc7-ab27eb01caa6"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:04:47Z","duration":15048,"status":"FAILED"},{"id":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315","testCaseResults":{"TestCaseResult":[{"id":"EID6ee1f00f-0175-1000-100a-92c7f957a3df","testStepResults":{"TestStepResult":[{"id":"EID6ee1f00f-0175-1000-540d-fb7cfa45dcb0","parent":{"ref":"EID6ee1f00f-0175-1000-100a-92c7f957a3df"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:05:02Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f00f-0175-1000-31f5-8e4258392487","parent":{"ref":"EID6ee1f00f-0175-1000-100a-92c7f957a3df"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:05:02Z","duration":1013,"status":"PASSED"},{"id":"EID6ee1f00f-0175-1000-2532-fc5b248e2cef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f53e-0175-1000-eaf9-39cbfb78221e","parent":{"ref":"EID6ee1f00f-0175-1000-2532-fc5b248e2cef"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f53e-0175-1000-8722-cb058adeae95","parent":{"ref":"EID6ee1f00f-0175-1000-2532-fc5b248e2cef"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f53e-0175-1000-c9bc-066f90adc8b0","parent":{"ref":"EID6ee1f00f-0175-1000-2532-fc5b248e2cef"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8750cf26-7a7d-47b2-b1d8-94e491abe179"},{"ref":"EID990a9cbd-13b3-4e8e-a127-81172cbcf3fc"},{"ref":"EID8369c7d6-e0ce-40ca-bffe-038f4b4b5a6b"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-100a-92c7f957a3df"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:05:02Z","duration":1214,"status":"PASSED"},{"id":"EID6ee1f53e-0175-1000-1c33-a432d4146aba","attachments":{"attachment":{"ref":"EID45a815c3-d63a-4d3e-bb71-3399356ba429"}},"parent":{"ref":"EID6ee1f00f-0175-1000-100a-92c7f957a3df"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:05:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f549-0175-1000-c8af-73bb4a4b2a86","parent":{"ref":"EID6ee1f00f-0175-1000-100a-92c7f957a3df"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:05:03Z","duration":13,"status":"PASSED"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:05:02Z","duration":1352,"status":"PASSED"},{"id":"EID6ee1f557-0175-1000-ce8d-edc0463033a7","testStepResults":{"TestStepResult":[{"id":"EID6ee1f557-0175-1000-94cb-6ad79fa2ffa9","parent":{"ref":"EID6ee1f557-0175-1000-ce8d-edc0463033a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:05:03Z","duration":511,"status":"PASSED"},{"id":"EID6ee1f557-0175-1000-5c13-59e38d515a04","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f74d-0175-1000-ba3b-b6d9f25159a4","parent":{"ref":"EID6ee1f557-0175-1000-5c13-59e38d515a04"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f74d-0175-1000-9fb8-89a7d9c41034","parent":{"ref":"EID6ee1f557-0175-1000-5c13-59e38d515a04"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f74d-0175-1000-b5fc-2e5807844f8e","parent":{"ref":"EID6ee1f557-0175-1000-5c13-59e38d515a04"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f74d-0175-1000-8bb1-e295c7082000","parent":{"ref":"EID6ee1f557-0175-1000-5c13-59e38d515a04"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f74d-0175-1000-0615-623e7a54e647","parent":{"ref":"EID6ee1f557-0175-1000-5c13-59e38d515a04"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID54421fca-4576-4338-b6bf-de28739dbcd2"},{"ref":"EID0aef387f-d5a7-438e-80db-bc4c0f880249"},{"ref":"EIDea66f765-484d-4044-9128-d1faec573afd"}]},"parent":{"ref":"EID6ee1f557-0175-1000-ce8d-edc0463033a7"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:05:03Z","duration":431,"status":"PASSED"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:05:03Z","duration":502,"status":"PASSED"},{"id":"EID6ee1f74d-0175-1000-d0ab-8baea4dad672","testStepResults":{"TestStepResult":[{"id":"EID6ee1f74d-0175-1000-5af4-e5e1d98fb901","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1f868-0175-1000-a54f-c5a086994a03","parent":{"ref":"EID6ee1f74d-0175-1000-5af4-e5e1d98fb901"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f868-0175-1000-5079-84556b412602","parent":{"ref":"EID6ee1f74d-0175-1000-5af4-e5e1d98fb901"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee1f868-0175-1000-35de-12388afe5ef8","parent":{"ref":"EID6ee1f74d-0175-1000-5af4-e5e1d98fb901"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:05:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID11205dc5-c323-4941-8ea7-60a7ed200e26"},{"ref":"EIDa8cdc7c6-481b-4d58-ac31-0e0a9591c878"},{"ref":"EID3785ed4e-50f7-45ac-95c2-a311551185b6"}]},"parent":{"ref":"EID6ee1f74d-0175-1000-d0ab-8baea4dad672"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:05:04Z","duration":205,"status":"PASSED"},{"id":"EID6ee1f868-0175-1000-75fc-f6fafb5103a7","attachments":{"attachment":{"ref":"EIDe9e828e7-ff8b-4c4e-b3e9-4d179b6dac46"}},"parent":{"ref":"EID6ee1f74d-0175-1000-d0ab-8baea4dad672"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:05:04Z","duration":1,"status":"PASSED"},{"id":"EID6ee1f874-0175-1000-d8c8-df1660922e08","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee1fd8f-0175-1000-9f29-f15e54b621ab","parent":{"ref":"EID6ee1f874-0175-1000-d8c8-df1660922e08"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fd8f-0175-1000-1276-a79f4856b142","parent":{"ref":"EID6ee1f874-0175-1000-d8c8-df1660922e08"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fd8f-0175-1000-4506-963e3e8a1aa9","parent":{"ref":"EID6ee1f874-0175-1000-d8c8-df1660922e08"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fd8f-0175-1000-c29e-c2360a97db2d","parent":{"ref":"EID6ee1f874-0175-1000-d8c8-df1660922e08"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee1fd8f-0175-1000-4488-a9ec03ca39df","parent":{"ref":"EID6ee1f874-0175-1000-d8c8-df1660922e08"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:05:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d9023dd-4fa1-4bed-a47b-ca6b91042d48"},{"ref":"EID780a855d-78ff-4ff0-8274-01ef29dcb3d5"},{"ref":"EID2bbd8c9d-e7cf-47ab-862a-4ebe5e96cd23"}]},"parent":{"ref":"EID6ee1f74d-0175-1000-d0ab-8baea4dad672"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:05:04Z","duration":1214,"status":"PASSED"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:05:04Z","duration":1602,"status":"PASSED"},{"id":"EID6ee1fd8f-0175-1000-0889-4cad27837c30","testStepResults":{"TestStepResult":[{"id":"EID6ee1fd8f-0175-1000-378a-15d6a61a7934","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20345-0175-1000-b3fc-ebf8588f9a34","parent":{"ref":"EID6ee1fd8f-0175-1000-378a-15d6a61a7934"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20346-0175-1000-8349-91671dabdb7b","parent":{"ref":"EID6ee1fd8f-0175-1000-378a-15d6a61a7934"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20346-0175-1000-9e1c-53246efc1e87","parent":{"ref":"EID6ee1fd8f-0175-1000-378a-15d6a61a7934"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee20346-0175-1000-9e0c-840932b7a6f9","parent":{"ref":"EID6ee1fd8f-0175-1000-378a-15d6a61a7934"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92af3605-2b5e-4034-9655-2aeb4b583ba5"},{"ref":"EID65997c03-be6a-4bf8-baff-465bdf41d434"},{"ref":"EIDaa856964-ba13-4d29-a03a-f2f6f4c5cd02"}]},"parent":{"ref":"EID6ee1fd8f-0175-1000-0889-4cad27837c30"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:05:05Z","duration":1319,"status":"PASSED"},{"id":"EID6ee20346-0175-1000-6320-c5871926fe03","attachments":{"attachment":{"ref":"EID235ecbfb-8fd2-4440-b7fb-606e09e557e9"}},"parent":{"ref":"EID6ee1fd8f-0175-1000-0889-4cad27837c30"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:05:07Z","duration":2,"status":"PASSED"},{"id":"EID6ee20355-0175-1000-e934-748a14154424","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2043f-0175-1000-7afe-0838da383f6f","parent":{"ref":"EID6ee20355-0175-1000-e934-748a14154424"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee2043f-0175-1000-4f6b-99a85a88c4ad","parent":{"ref":"EID6ee20355-0175-1000-e934-748a14154424"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd52c0c79-246f-4279-ba8d-8aef727a5bd7"},{"ref":"EID5deeb5ef-1a18-4c87-a914-1b82960d915a"}]},"parent":{"ref":"EID6ee1fd8f-0175-1000-0889-4cad27837c30"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:05:07Z","duration":231,"status":"PASSED"},{"id":"EID6ee2043f-0175-1000-1ecf-76c1e81d8424","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2058a-0175-1000-f4b1-5fe675c456c1","parent":{"ref":"EID6ee2043f-0175-1000-1ecf-76c1e81d8424"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee2058a-0175-1000-3ab5-2f13f922f6f3","parent":{"ref":"EID6ee2043f-0175-1000-1ecf-76c1e81d8424"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee2058a-0175-1000-1948-f89fdef7288a","parent":{"ref":"EID6ee2043f-0175-1000-1ecf-76c1e81d8424"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"},{"id":"EID6ee2058a-0175-1000-8ac3-88bab6f1c545","parent":{"ref":"EID6ee2043f-0175-1000-1ecf-76c1e81d8424"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:05:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0fceb318-2cde-483f-9f3a-13000c3bc33d"},{"ref":"EID9cc7e53b-b33f-45d1-992a-0df875dadfa0"},{"ref":"EID768cfd05-b04f-4c98-be3d-f04bcaf901a3"}]},"parent":{"ref":"EID6ee1fd8f-0175-1000-0889-4cad27837c30"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:05:07Z","duration":255,"status":"PASSED"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:05:05Z","duration":2053,"status":"PASSED"},{"id":"EID6ee20594-0175-1000-9619-465df1687ffb","testStepResults":{"TestStepResult":{"id":"EID6ee20594-0175-1000-0d16-4b525e9a8684","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee209fb-0175-1000-622e-ba6c0c460acd","parent":{"ref":"EID6ee20594-0175-1000-0d16-4b525e9a8684"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee209fb-0175-1000-fe3c-58397ed435ba","parent":{"ref":"EID6ee20594-0175-1000-0d16-4b525e9a8684"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee209fb-0175-1000-8304-f7a8fdb8aac4","parent":{"ref":"EID6ee20594-0175-1000-0d16-4b525e9a8684"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:05:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27c5eec2-46bc-4106-a802-ff95e0899faf"},{"ref":"EID41553f77-8f1b-424f-a58d-f93953fbbf77"},{"ref":"EID87f9a0ce-2fd2-4b17-b9b1-bf56bc3f90e9"}]},"parent":{"ref":"EID6ee20594-0175-1000-9619-465df1687ffb"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:05:07Z","duration":1051,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:05:07Z","duration":1128,"status":"PASSED"},{"id":"EID6ee209fc-0175-1000-6747-bb841cfea176","testStepResults":{"TestStepResult":{"id":"EID6ee209fc-0175-1000-dd47-4e9e8ec34236","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee20f1a-0175-1000-d919-5835490175f6","parent":{"ref":"EID6ee209fc-0175-1000-dd47-4e9e8ec34236"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20f1a-0175-1000-1f14-66d3fda344cd","parent":{"ref":"EID6ee209fc-0175-1000-dd47-4e9e8ec34236"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee20f1a-0175-1000-b63e-a3ae2e0f4582","parent":{"ref":"EID6ee209fc-0175-1000-dd47-4e9e8ec34236"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb769e18-abce-4919-9274-be5578d05718"},{"ref":"EID7f844949-e34a-4593-899f-b2b529edc0a4"},{"ref":"EID973b9f05-9fc8-45bf-afc4-c6c2da619868"}]},"parent":{"ref":"EID6ee209fc-0175-1000-6747-bb841cfea176"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:05:08Z","duration":1223,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:05:08Z","duration":1310,"status":"PASSED"},{"id":"EID6ee20f1a-0175-1000-90c2-a95ef1a3108b","testStepResults":{"TestStepResult":{"id":"EID6ee20f1a-0175-1000-872b-24607ce63315","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21061-0175-1000-f2e8-40bce3ca530e","parent":{"ref":"EID6ee20f1a-0175-1000-872b-24607ce63315"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee21062-0175-1000-5afe-a7c8099e2343","parent":{"ref":"EID6ee20f1a-0175-1000-872b-24607ce63315"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee21062-0175-1000-b942-c1e48bd8ff15","parent":{"ref":"EID6ee20f1a-0175-1000-872b-24607ce63315"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee21062-0175-1000-74a4-639c2dae9756","parent":{"ref":"EID6ee20f1a-0175-1000-872b-24607ce63315"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee21062-0175-1000-4747-d298ccbd9642","parent":{"ref":"EID6ee20f1a-0175-1000-872b-24607ce63315"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID28f8b40c-181f-4db9-aa6a-72868fc232ba"},{"ref":"EIDd474adf6-bd3a-4a5b-82ab-58455ddce215"},{"ref":"EID2b01562f-28dd-4630-8386-19b7af033490"}]},"parent":{"ref":"EID6ee20f1a-0175-1000-90c2-a95ef1a3108b"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:05:10Z","duration":218,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:05:10Z","duration":328,"status":"PASSED"},{"id":"EID6ee21062-0175-1000-3826-7640dcd496b9","testStepResults":{"TestStepResult":{"id":"EID6ee21062-0175-1000-45e9-60fe177fcb21","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21229-0175-1000-e9d4-7a7ef3234a99","parent":{"ref":"EID6ee21062-0175-1000-45e9-60fe177fcb21"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee21229-0175-1000-7fad-406dc3a4bf68","parent":{"ref":"EID6ee21062-0175-1000-45e9-60fe177fcb21"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee21229-0175-1000-bf93-22768a102fc9","parent":{"ref":"EID6ee21062-0175-1000-45e9-60fe177fcb21"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:05:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfefa4fed-afa4-4de2-aef4-b9a05453d896"},{"ref":"EID6d0a0d1b-784c-4bb0-91ad-697bd79df237"},{"ref":"EID0fd84ec5-17a5-46e5-8586-44de064653ba"}]},"parent":{"ref":"EID6ee21062-0175-1000-3826-7640dcd496b9"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:05:10Z","duration":394,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:05:10Z","duration":455,"status":"PASSED"},{"id":"EID6ee21229-0175-1000-c1e1-3f8d70a26280","testStepResults":{"TestStepResult":{"id":"EID6ee21229-0175-1000-9f96-0dd2b3f602e5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee215c3-0175-1000-3cb2-0b99e94bb443","parent":{"ref":"EID6ee21229-0175-1000-9f96-0dd2b3f602e5"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee215c3-0175-1000-be24-4f3ed797caba","parent":{"ref":"EID6ee21229-0175-1000-9f96-0dd2b3f602e5"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee215c3-0175-1000-817c-75070077f007","parent":{"ref":"EID6ee21229-0175-1000-9f96-0dd2b3f602e5"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:05:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID98b5a041-5345-4362-8353-055273c1f664"},{"ref":"EIDd1a7a592-179a-4792-990f-f119e2962352"},{"ref":"EIDa700fd6d-b719-4b0a-8e70-af0c42487663"}]},"parent":{"ref":"EID6ee21229-0175-1000-c1e1-3f8d70a26280"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:05:10Z","duration":830,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:05:10Z","duration":922,"status":"PASSED"},{"id":"EID6ee215c4-0175-1000-e11b-5518a9dfa4e5","testStepResults":{"TestStepResult":{"id":"EID6ee215c4-0175-1000-2415-e94981c2e3db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee218be-0175-1000-1aeb-2963f9ab38b9","parent":{"ref":"EID6ee215c4-0175-1000-2415-e94981c2e3db"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee218be-0175-1000-d242-35f52a64f810","parent":{"ref":"EID6ee215c4-0175-1000-2415-e94981c2e3db"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee218be-0175-1000-3b02-3d00d231f465","parent":{"ref":"EID6ee215c4-0175-1000-2415-e94981c2e3db"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee218be-0175-1000-6959-e9040105aafa","parent":{"ref":"EID6ee215c4-0175-1000-2415-e94981c2e3db"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67d74978-8b28-4e62-8fee-ca4baf8fb786"},{"ref":"EIDe9955a69-e5e8-43e4-a026-561833f0e52a"},{"ref":"EIDd5d4da26-a5c8-4c33-b7b4-2126dc183fdf"}]},"parent":{"ref":"EID6ee215c4-0175-1000-e11b-5518a9dfa4e5"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:05:11Z","duration":603,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:05:11Z","duration":770,"status":"PASSED"},{"id":"EID6ee218c6-0175-1000-5e4e-321ff2af7856","testStepResults":{"TestStepResult":{"id":"EID6ee218c6-0175-1000-be85-e274a85384f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21946-0175-1000-0ada-59f2efbed4da","parent":{"ref":"EID6ee218c6-0175-1000-be85-e274a85384f7"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21946-0175-1000-d729-eb1e0b58c8b0","parent":{"ref":"EID6ee218c6-0175-1000-be85-e274a85384f7"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21946-0175-1000-1ceb-d9a41a797e05","parent":{"ref":"EID6ee218c6-0175-1000-be85-e274a85384f7"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21946-0175-1000-ae61-64ba2434639f","parent":{"ref":"EID6ee218c6-0175-1000-be85-e274a85384f7"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04b85f54-9043-4bef-8083-f434f05339bf"},{"ref":"EIDb25f224b-61cd-4dc9-8554-8116c2f22e9d"},{"ref":"EIDa354b723-b040-4f83-9830-74ee545a586e"}]},"parent":{"ref":"EID6ee218c6-0175-1000-5e4e-321ff2af7856"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:05:12Z","duration":46,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:05:12Z","duration":128,"status":"PASSED"},{"id":"EID6ee21946-0175-1000-bd86-aa893d3719d8","testStepResults":{"TestStepResult":[{"id":"EID6ee21946-0175-1000-270e-67438252e2d0","parent":{"ref":"EID6ee21946-0175-1000-bd86-aa893d3719d8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:05:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee21947-0175-1000-5145-e9967bf98c9e","parent":{"ref":"EID6ee21946-0175-1000-bd86-aa893d3719d8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:05:12Z","duration":1017,"status":"PASSED"},{"id":"EID6ee21947-0175-1000-d12c-df8784bb6feb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21ac4-0175-1000-2e25-2a11f162e799","parent":{"ref":"EID6ee21947-0175-1000-d12c-df8784bb6feb"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee21ac4-0175-1000-ea20-82f623c11a71","parent":{"ref":"EID6ee21947-0175-1000-d12c-df8784bb6feb"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee21ac4-0175-1000-467f-bf8d9ec91dde","parent":{"ref":"EID6ee21947-0175-1000-d12c-df8784bb6feb"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee21ac4-0175-1000-c3cd-acb853a8f144","parent":{"ref":"EID6ee21947-0175-1000-d12c-df8784bb6feb"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:05:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd06f50b-17f8-43a4-9195-787e5ef2aded"},{"ref":"EIDd46a46d3-5abe-4ce6-b7ff-b9e905c69919"},{"ref":"EIDbeed09ad-1524-400b-9fe7-3b01cc13c94c"}]},"parent":{"ref":"EID6ee21946-0175-1000-bd86-aa893d3719d8"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:05:12Z","duration":209,"status":"PASSED"},{"id":"EID6ee21ac4-0175-1000-6266-3310c0d5a37d","attachments":{"attachment":{"ref":"EID89401520-ef31-4999-b58d-f962a09a3e6a"}},"parent":{"ref":"EID6ee21946-0175-1000-bd86-aa893d3719d8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:05:13Z","duration":1,"status":"PASSED"},{"id":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21e3f-0175-1000-f5b9-5797c05d5ae4","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e3f-0175-1000-5976-abba5c320719","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e3f-0175-1000-d47d-b1bc9aff7484","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e3f-0175-1000-f45e-4b1ea86eb9e5","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e3f-0175-1000-9ed1-26b576e024b4","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e3f-0175-1000-c5b3-e00e205a255b","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e3f-0175-1000-9618-267efabe53d6","parent":{"ref":"EID6ee21ad3-0175-1000-22ba-7806f3d9b06d"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf0dcef6a-eb23-4308-9630-9309deecc03c"},{"ref":"EIDc21ae8f2-a64b-4d47-bf07-f9e5b57582f6"},{"ref":"EID119c7469-57ee-4efd-a662-fcd76b9f18e5"}]},"parent":{"ref":"EID6ee21946-0175-1000-bd86-aa893d3719d8"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:05:13Z","duration":720,"status":"PASSED"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:05:12Z","duration":1274,"status":"PASSED"},{"id":"EID6ee21e49-0175-1000-7c4c-d2398f12e4bb","testStepResults":{"TestStepResult":[{"id":"EID6ee21e49-0175-1000-f496-c55935f1acb7","parent":{"ref":"EID6ee21e49-0175-1000-7c4c-d2398f12e4bb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21e49-0175-1000-a7db-5fca0c4fa0fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21f08-0175-1000-dafd-787644d0ad3b","parent":{"ref":"EID6ee21e49-0175-1000-a7db-5fca0c4fa0fd"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21f08-0175-1000-fa87-0b26f4624c16","parent":{"ref":"EID6ee21e49-0175-1000-a7db-5fca0c4fa0fd"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21f08-0175-1000-6bb8-69ee33d49d39","parent":{"ref":"EID6ee21e49-0175-1000-a7db-5fca0c4fa0fd"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21f08-0175-1000-a13d-92175f1d4c7a","parent":{"ref":"EID6ee21e49-0175-1000-a7db-5fca0c4fa0fd"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID82182be2-e1d2-4e91-8327-c2272bf14096"},{"ref":"EID2abc06a0-ffe7-4096-b810-a425cbd8f457"},{"ref":"EID57541dbf-a53f-49ea-adc6-ffdebf065b86"}]},"parent":{"ref":"EID6ee21e49-0175-1000-7c4c-d2398f12e4bb"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:05:14Z","duration":40,"status":"PASSED"},{"id":"EID6ee21f08-0175-1000-e54b-97f5d8cb8fa4","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee21f1d-0175-1000-c51c-4c0cc7369061","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee21f8e-0175-1000-e70c-95291c8da1ed","parent":{"ref":"EID6ee21f1d-0175-1000-c51c-4c0cc7369061"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21f8e-0175-1000-dbd6-d3bdca07b1ac","parent":{"ref":"EID6ee21f1d-0175-1000-c51c-4c0cc7369061"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee21f8e-0175-1000-1aa3-173b0855b6ff","parent":{"ref":"EID6ee21f1d-0175-1000-c51c-4c0cc7369061"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID61f7d429-ef7e-4889-966b-6a9f6b91bd69"},{"ref":"EID7381e4d8-91f2-4ced-907e-0573c43c390b"},{"ref":"EIDa8f1c97a-6eae-47d2-bed6-9caf63188daa"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:14Z","duration":40,"status":"PASSED"},{"id":"EID6ee21f90-0175-1000-d9d4-6443fa0972fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee22050-0175-1000-8800-ba1538fa5bbf","parent":{"ref":"EID6ee21f90-0175-1000-d9d4-6443fa0972fc"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee22050-0175-1000-36cd-9626669884ec","parent":{"ref":"EID6ee21f90-0175-1000-d9d4-6443fa0972fc"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee22050-0175-1000-8b04-9a906e921498","parent":{"ref":"EID6ee21f90-0175-1000-d9d4-6443fa0972fc"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID982b1baf-ad94-4064-8346-490ca3426e6a"},{"ref":"EID11b8d504-25e9-4bd6-bda3-7ef026cfcc46"},{"ref":"EID483c7573-1679-4dcd-8734-5551022ce9a2"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:14Z","duration":52,"status":"PASSED"},{"id":"EID6ee22052-0175-1000-cd02-eaaed91e23ee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee220ba-0175-1000-5c70-c73f31b720dc","parent":{"ref":"EID6ee22052-0175-1000-cd02-eaaed91e23ee"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee220ba-0175-1000-8c5c-827bbc55867c","parent":{"ref":"EID6ee22052-0175-1000-cd02-eaaed91e23ee"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee220ba-0175-1000-965e-82a5fde4d258","parent":{"ref":"EID6ee22052-0175-1000-cd02-eaaed91e23ee"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:05:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6d906a6a-30d4-4afa-a454-2c3fb633a2a8"},{"ref":"EIDcecd0283-f106-4031-9feb-51e0a2780785"},{"ref":"EIDd69438ad-9326-406b-9849-039b811d8773"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:05:14Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6ee21e49-0175-1000-7c4c-d2398f12e4bb"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:05:14Z","duration":437,"status":"PASSED"},{"id":"EID6ee220be-0175-1000-f033-c20ae6e15ce2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee22490-0175-1000-1af5-334fbbc6d1ea","parent":{"ref":"EID6ee220be-0175-1000-f033-c20ae6e15ce2"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:05:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee22490-0175-1000-30ae-bdb39843244e","parent":{"ref":"EID6ee220be-0175-1000-f033-c20ae6e15ce2"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:05:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee22490-0175-1000-e072-f103ab766da0","parent":{"ref":"EID6ee220be-0175-1000-f033-c20ae6e15ce2"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:05:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee22490-0175-1000-bda3-87db4c23ca4d","parent":{"ref":"EID6ee220be-0175-1000-f033-c20ae6e15ce2"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:05:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc09b4ec5-41a9-48f3-b4f6-97df0e012be9"},{"ref":"EID54d6d1df-75d2-4f3c-a44f-ff17ebd9f39d"},{"ref":"EID1ffbc27d-5bd3-4edb-96eb-66847a5e9f00"}]},"parent":{"ref":"EID6ee21e49-0175-1000-7c4c-d2398f12e4bb"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:05:14Z","duration":914,"status":"PASSED"}]},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:05:14Z","duration":1607,"status":"PASSED"},{"id":"EID6ee22490-0175-1000-225e-43501088a05e","testStepResults":{"TestStepResult":{"id":"EID6ee22490-0175-1000-8743-e771da080b7c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee2286c-0175-1000-f35e-addc7bae6de7","parent":{"ref":"EID6ee22490-0175-1000-8743-e771da080b7c"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee2286c-0175-1000-976c-f8e4a32d924b","parent":{"ref":"EID6ee22490-0175-1000-8743-e771da080b7c"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee2286c-0175-1000-beb0-a930a054b08d","parent":{"ref":"EID6ee22490-0175-1000-8743-e771da080b7c"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee2286c-0175-1000-eb5d-00b518969807","parent":{"ref":"EID6ee22490-0175-1000-8743-e771da080b7c"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:05:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0056179b-f0bd-4326-a9b1-7316c21ba614"},{"ref":"EIDefae7db2-9098-47a3-b695-b0eb9cdea8d8"},{"ref":"EIDa1532f1b-bb7d-4b7e-a2ef-568c66cde8d3"}]},"parent":{"ref":"EID6ee22490-0175-1000-225e-43501088a05e"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:05:15Z","duration":926,"status":"PASSED"}},"parent":{"ref":"EID6ee1f00f-0175-1000-4d3d-9ce8dfc31315"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:05:15Z","duration":988,"status":"PASSED"}]},"parent":{"ref":"EIDf26641a1-f64b-461d-acc7-ab27eb01caa6"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:05:02Z","duration":14429,"status":"PASSED"},{"id":"EID6ee2286c-0175-1000-b572-c96bf5334bd3","testCaseResults":{"TestCaseResult":[{"id":"EID6ee2286c-0175-1000-5f5b-53487b401213","testStepResults":{"TestStepResult":[{"id":"EID6ee2286c-0175-1000-0512-1c2e71ca6553","parent":{"ref":"EID6ee2286c-0175-1000-5f5b-53487b401213"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:05:16Z","duration":813,"status":"PASSED"},{"id":"EID6ee2286c-0175-1000-0856-65fa1e36ef79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee22ed4-0175-1000-3d49-f1d65effc7e2","parent":{"ref":"EID6ee2286c-0175-1000-0856-65fa1e36ef79"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee22ed4-0175-1000-0b29-5d769a852aa1","parent":{"ref":"EID6ee2286c-0175-1000-0856-65fa1e36ef79"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee22ed4-0175-1000-c2ba-85f25f8cd4f1","parent":{"ref":"EID6ee2286c-0175-1000-0856-65fa1e36ef79"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb3b0175-3a18-4b34-b85f-ff7b5cd3225e"},{"ref":"EIDbe36f278-697f-4a37-a9eb-830d5a1e0375"},{"ref":"EID5d807535-d398-4966-8693-e34e8283b997"}]},"parent":{"ref":"EID6ee2286c-0175-1000-5f5b-53487b401213"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:05:16Z","duration":1537,"status":"PASSED"},{"id":"EID6ee22ed4-0175-1000-3a7b-ad4b6537b35f","attachments":{"attachment":{"ref":"EID17a95264-0994-4ada-8e3c-ba8c65151d9e"}},"parent":{"ref":"EID6ee2286c-0175-1000-5f5b-53487b401213"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:05:18Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:05:16Z","duration":1654,"status":"PASSED"},{"id":"EID6ee22ee2-0175-1000-335d-3af1c50fa836","testStepResults":{"TestStepResult":[{"id":"EID6ee22ee2-0175-1000-c842-9cba0c4a7532","parent":{"ref":"EID6ee22ee2-0175-1000-335d-3af1c50fa836"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:05:18Z","duration":813,"status":"PASSED"},{"id":"EID6ee22ee2-0175-1000-2354-5d1dee98518a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee22f72-0175-1000-8015-c4cb8857fdca","parent":{"ref":"EID6ee22ee2-0175-1000-2354-5d1dee98518a"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee22f72-0175-1000-adff-a0c8e7b54914","parent":{"ref":"EID6ee22ee2-0175-1000-2354-5d1dee98518a"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee22f72-0175-1000-f904-dbabd2be87ca","parent":{"ref":"EID6ee22ee2-0175-1000-2354-5d1dee98518a"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee22f72-0175-1000-901d-cfc6499081a7","parent":{"ref":"EID6ee22ee2-0175-1000-2354-5d1dee98518a"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDee26f20b-b125-4a46-9399-424145435d89"},{"ref":"EIDc1c34d3c-4471-42f3-b0a8-e68aa0f48020"},{"ref":"EIDd79cde1c-5bc1-4634-9adf-db0300b6ae0c"}]},"parent":{"ref":"EID6ee22ee2-0175-1000-335d-3af1c50fa836"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:05:18Z","duration":83,"status":"PASSED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:05:18Z","duration":144,"status":"PASSED"},{"id":"EID6ee22f72-0175-1000-39ae-613192c46dcf","testStepResults":{"TestStepResult":[{"id":"EID6ee22f72-0175-1000-1f57-5a1a9ce0bd69","parent":{"ref":"EID6ee22f72-0175-1000-39ae-613192c46dcf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:05:18Z","duration":813,"status":"PASSED"},{"id":"EID6ee22f72-0175-1000-7d3c-00bdc46249b1","parent":{"ref":"EID6ee22f72-0175-1000-39ae-613192c46dcf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee22f72-0175-1000-b114-bdf4318908b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee23058-0175-1000-4ce2-bc46c8f94408","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-493e-fad9b9fa7f40","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-74d2-34b331a057f1","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-98b7-8423830abf81","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-8e5f-a3679c1b8f12","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-fe38-66ad0f33b04d","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-d0ee-59224b3c79da","parent":{"ref":"EID6ee22f72-0175-1000-b114-bdf4318908b4"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:05:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID58d28f03-9c39-4dfd-97e7-1360b173785b"},{"ref":"EID2a1f5600-4a4d-4735-b240-6686b11404ce"},{"ref":"EIDee891594-3ff8-49c3-bccf-e720f0642958"}]},"parent":{"ref":"EID6ee22f72-0175-1000-39ae-613192c46dcf"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:05:18Z","duration":97,"status":"PASSED"},{"id":"EID6ee23058-0175-1000-ea24-95c744577cc1","invokedTests":{"":null,"TestStepResult":{"id":"EID6ee2307d-0175-1000-b016-733a3fc67b36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee23b1f-0175-1000-7ffe-e01fd3514506","parent":{"ref":"EID6ee2307d-0175-1000-b016-733a3fc67b36"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23b1f-0175-1000-3e7e-c57367a3a7a8","parent":{"ref":"EID6ee2307d-0175-1000-b016-733a3fc67b36"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23b1f-0175-1000-8946-a8027a5ef956","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"parent":{"ref":"EID6ee2307d-0175-1000-b016-733a3fc67b36"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-28T11:05:21Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5cc72330-ce30-4882-90ca-3fa9883f8386"},{"ref":"EID8d6d68d3-615d-45ea-a744-9d64932d83e7"},{"ref":"EID8f0743ab-c40c-46d3-971e-3c85f2d26937"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-28T11:05:18Z","duration":2307,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EIDe8137f59-ca4f-434b-99ec-5e22c04d5236"},{"ref":"EID0a1a4c4d-7dcd-4d17-a968-4891572c45e4"}]},"parent":{"ref":"EID6ee22f72-0175-1000-39ae-613192c46dcf"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-28T11:05:18Z","duration":2844,"status":"FAILED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:05:18Z","duration":3101,"status":"FAILED"},{"id":"EID6ee23b8f-0175-1000-90e0-d607599b680d","testStepResults":{"TestStepResult":[{"id":"EID6ee23b8f-0175-1000-71db-936e776dea65","parent":{"ref":"EID6ee23b8f-0175-1000-90e0-d607599b680d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":813,"status":"PASSED"},{"id":"EID6ee23b8f-0175-1000-94fa-cef7e68d257f","parent":{"ref":"EID6ee23b8f-0175-1000-90e0-d607599b680d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee23c77-0175-1000-184d-b428d1313f1f","parent":{"ref":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c77-0175-1000-fe6b-1bab821ca003","parent":{"ref":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c77-0175-1000-9e4e-8cf328b11437","parent":{"ref":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c77-0175-1000-f6dd-2ae91692fde3","parent":{"ref":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c77-0175-1000-794d-3ce79b8837f1","parent":{"ref":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee23c77-0175-1000-9078-a129c6c20cc5","parent":{"ref":"EID6ee23b8f-0175-1000-38a2-e7c0102e6d8e"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:05:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdcb0012e-9f04-4f94-9666-3db73b63b5d4"},{"ref":"EIDb70799cc-90c0-4585-9d06-93c2a82a8295"},{"ref":"EIDe45547bb-1a86-4329-8dc3-3ebf94523104"}]},"parent":{"ref":"EID6ee23b8f-0175-1000-90e0-d607599b680d"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:05:21Z","duration":131,"status":"PASSED"},{"id":"EID6ee23c77-0175-1000-2672-8626d632e71c","parent":{"ref":"EID6ee23b8f-0175-1000-90e0-d607599b680d"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-28T11:05:21Z","duration":80,"status":"PASSED"},{"id":"EID6ee23cc7-0175-1000-0b59-d68edb585121","parent":{"ref":"EID6ee23b8f-0175-1000-90e0-d607599b680d"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-28T11:05:21Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:05:21Z","duration":313,"status":"UNDEFINED"},{"id":"EID6ee23cc8-0175-1000-1eeb-5cf1e4279630","testStepResults":{"TestStepResult":[{"id":"EID6ee23cd1-0175-1000-5cc2-ff5d83e9b5ed","parent":{"ref":"EID6ee23cc8-0175-1000-1eeb-5cf1e4279630"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":813,"status":"PASSED"},{"id":"EID6ee23cd1-0175-1000-f93d-607c80ccdb8f","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"attachments":{"attachment":[{"ref":"EID08bf302f-30cd-48d3-8175-ff486a0b543a"},{"ref":"EIDf4535ffc-9b3b-4bb1-bb73-804d36dabc46"},{"ref":"EIDfe207b6b-572a-4335-9a24-b789b976238a"},{"ref":"EIDe8fde9a7-78bc-424b-b475-bf26cae14017"},{"ref":"EID1ebdb289-c3af-40fa-9128-6716e893ce82"},{"ref":"EID92a89f43-07aa-446d-b77b-50008c285e82"},{"ref":"EID095be08b-4017-454e-b0b0-2392962b98bb"},{"ref":"EIDea6fa281-3ffc-43ab-bdf8-ffa07f14de69"},{"ref":"EID4609eaa5-e410-4005-a79e-7cf7b705059d"},{"ref":"EIDf8a9f95a-19ea-48a2-a405-f910536bbe23"},{"ref":"EID31d2a556-2e7b-44d0-bcad-c98e9e6532eb"},{"ref":"EID75e36537-8421-43d9-8ac2-ff728493aa04"},{"ref":"EID574ef337-6ff6-4e1e-9c1c-355e1a24a45d"},{"ref":"EID72bce4c4-74f6-4830-8406-19f8f4d6542f"},{"ref":"EIDc90c3bd0-3b18-4a5f-b2ed-b8296f1fb5b1"},{"ref":"EIDf4fb24aa-8004-4d7a-898f-03a8a6c9f33e"},{"ref":"EID35120423-0b0f-473e-82a5-79b306c9f441"},{"ref":"EID9f2cfd34-e45e-4549-ae37-6c90ac5e1b62"},{"ref":"EID9df5be3a-c4ec-497c-8749-3806d510c15c"}]},"parent":{"ref":"EID6ee23cc8-0175-1000-1eeb-5cf1e4279630"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:05:21Z","duration":3775,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:05:21Z","duration":4131,"status":"SKIPPED"},{"id":"EID6ee24ceb-0175-1000-86fa-02f250734a8b","testStepResults":{"TestStepResult":[{"id":"EID6ee24ceb-0175-1000-4929-8d07996d3a0d","parent":{"ref":"EID6ee24ceb-0175-1000-86fa-02f250734a8b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:05:25Z","duration":813,"status":"PASSED"},{"id":"EID6ee24ceb-0175-1000-1fb8-4df2c5c27ae2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24dae-0175-1000-853f-7b2e913e8fb2","parent":{"ref":"EID6ee24ceb-0175-1000-1fb8-4df2c5c27ae2"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dae-0175-1000-0989-13c6e85525c9","parent":{"ref":"EID6ee24ceb-0175-1000-1fb8-4df2c5c27ae2"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dae-0175-1000-d894-c07fadab2cbe","parent":{"ref":"EID6ee24ceb-0175-1000-1fb8-4df2c5c27ae2"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24dae-0175-1000-e945-b346f2ba35ac","parent":{"ref":"EID6ee24ceb-0175-1000-1fb8-4df2c5c27ae2"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d95c55b-2151-4ae4-a214-7527f97e86e0"},{"ref":"EID972e7583-3ea3-4c14-993a-0d6c4b8211b2"},{"ref":"EID2aff4f38-0b44-47d2-b7e8-829cd0fa0fcc"}]},"parent":{"ref":"EID6ee24ceb-0175-1000-86fa-02f250734a8b"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:05:25Z","duration":90,"status":"PASSED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:05:25Z","duration":195,"status":"PASSED"},{"id":"EID6ee24daf-0175-1000-8239-454e3766d6ec","testStepResults":{"TestStepResult":[{"id":"EID6ee24daf-0175-1000-17a7-32b4c2d09f69","parent":{"ref":"EID6ee24daf-0175-1000-8239-454e3766d6ec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":813,"status":"PASSED"},{"id":"EID6ee24daf-0175-1000-a43a-a3c3a4ba3cfb","parent":{"ref":"EID6ee24daf-0175-1000-8239-454e3766d6ec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24daf-0175-1000-62df-06ee46bceb7b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24e64-0175-1000-e695-e43b9f139e69","parent":{"ref":"EID6ee24daf-0175-1000-62df-06ee46bceb7b"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24e64-0175-1000-0498-99db254bad59","parent":{"ref":"EID6ee24daf-0175-1000-62df-06ee46bceb7b"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24e64-0175-1000-6898-2ad10193ab81","parent":{"ref":"EID6ee24daf-0175-1000-62df-06ee46bceb7b"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24e64-0175-1000-90e8-442d77f98d20","parent":{"ref":"EID6ee24daf-0175-1000-62df-06ee46bceb7b"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa61227b1-2bd4-4432-90c5-4d16d043e3f9"},{"ref":"EID849e030c-8f64-41a7-996c-3c2261814911"},{"ref":"EIDa18b51de-694e-43ee-90f2-a6f1e33d7652"}]},"parent":{"ref":"EID6ee24daf-0175-1000-8239-454e3766d6ec"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:05:26Z","duration":109,"status":"PASSED"},{"id":"EID6ee24e64-0175-1000-4a24-2a326439e198","attachments":{"attachment":{"ref":"EID200bb9f9-9ca6-4aa7-82bb-3416ff595767"}},"parent":{"ref":"EID6ee24daf-0175-1000-8239-454e3766d6ec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:05:26Z","duration":1,"status":"PASSED"},{"id":"EID6ee24e72-0175-1000-19c3-ae49053fc76f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee24e78-0175-1000-d75b-6fb947c3e792","parent":{"ref":"EID6ee24e72-0175-1000-19c3-ae49053fc76f"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24e78-0175-1000-4bea-cc7f7a4e4791","parent":{"ref":"EID6ee24e72-0175-1000-19c3-ae49053fc76f"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee24e78-0175-1000-a187-dcbb2587aeab","parent":{"ref":"EID6ee24e72-0175-1000-19c3-ae49053fc76f"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc0f4b85d-5b6c-4f42-87f3-57e73b55de35"},{"ref":"EID5e381300-be6d-4f1d-8d98-f008746c3762"}]},"parent":{"ref":"EID6ee24daf-0175-1000-8239-454e3766d6ec"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:05:26Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee2286c-0175-1000-b572-c96bf5334bd3"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:05:26Z","duration":202,"status":"PASSED"}]},"parent":{"ref":"EIDf26641a1-f64b-461d-acc7-ab27eb01caa6"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:05:16Z","duration":9741,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID72bce4c4-74f6-4830-8406-19f8f4d6542f","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID72bce4c4-74f6-4830-8406-19f8f4d6542f"}},{"type":"ServiceResponse","id":"EID7747db51-0b05-4830-9913-aa6cda4b966c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID7747db51-0b05-4830-9913-aa6cda4b966c"}},{"type":"GetParameter","id":"EID6539e029-6d3f-49f9-a0ff-5a94fea03be1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6d906a6a-30d4-4afa-a454-2c3fb633a2a8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDa354b723-b040-4f83-9830-74ee545a586e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID973b9f05-9fc8-45bf-afc4-c6c2da619868","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID82182be2-e1d2-4e91-8327-c2272bf14096","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDc1c34d3c-4471-42f3-b0a8-e68aa0f48020","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDc1c34d3c-4471-42f3-b0a8-e68aa0f48020"}},{"type":"Message","id":"EID9f2cfd34-e45e-4549-ae37-6c90ac5e1b62","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID9f2cfd34-e45e-4549-ae37-6c90ac5e1b62"}},{"type":"GetParameter","id":"EID2b01562f-28dd-4630-8386-19b7af033490","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDf4535ffc-9b3b-4bb1-bb73-804d36dabc46","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDf4535ffc-9b3b-4bb1-bb73-804d36dabc46"}},{"type":"Message","id":"EID3c4798a3-0e03-426e-8caf-9a30263b30e5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID3c4798a3-0e03-426e-8caf-9a30263b30e5"}},{"type":"ServiceResponse","id":"EIDd474adf6-bd3a-4a5b-82ab-58455ddce215","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDd474adf6-bd3a-4a5b-82ab-58455ddce215"}},{"type":"GetParameter","id":"EID65160cba-0783-4093-82b4-ffcbdfd9a9d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbbbb9257-69de-4334-9285-669ed6b8ffe8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID31d2a556-2e7b-44d0-bcad-c98e9e6532eb","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID31d2a556-2e7b-44d0-bcad-c98e9e6532eb"}},{"type":"Message","id":"EID1a4fbbf4-57a5-40fd-86a3-61cff775dfac","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID1a4fbbf4-57a5-40fd-86a3-61cff775dfac"}},{"type":"GetParameter","id":"EIDd69438ad-9326-406b-9849-039b811d8773","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID2046708e-91b0-498a-bdde-09085cd73a5e","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID2046708e-91b0-498a-bdde-09085cd73a5e"}},{"type":"Message","id":"EIDfe207b6b-572a-4335-9a24-b789b976238a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDfe207b6b-572a-4335-9a24-b789b976238a"}},{"type":"ServiceResponse","id":"EID780e10f7-07d5-4d63-bfaa-edd59f4d6b60","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID780e10f7-07d5-4d63-bfaa-edd59f4d6b60"}},{"type":"ServiceEndpoint","id":"EIDee26f20b-b125-4a46-9399-424145435d89","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID6c6128cf-44db-4329-8058-a689434e8ca8","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID6c6128cf-44db-4329-8058-a689434e8ca8"}},{"type":"GetParameter","id":"EID0fd84ec5-17a5-46e5-8586-44de064653ba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EIDf29dc041-7193-4fc9-966b-7ad8c44524c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDdd5df964-b4be-443f-b70a-993ed30997be","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDdd5df964-b4be-443f-b70a-993ed30997be"}},{"type":"GetParameter","id":"EID5e381300-be6d-4f1d-8d98-f008746c3762","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EIDa18b51de-694e-43ee-90f2-a6f1e33d7652","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID428f8b9e-e529-432c-a2fa-2be6b88f819c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID3b3c45fa-7562-4a04-94eb-23a97b038a49","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID3b3c45fa-7562-4a04-94eb-23a97b038a49"}},{"type":"ServiceResponse","id":"EIDefae7db2-9098-47a3-b695-b0eb9cdea8d8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDefae7db2-9098-47a3-b695-b0eb9cdea8d8"}},{"type":"ServiceEndpoint","id":"EID67d74978-8b28-4e62-8fee-ca4baf8fb786","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDc40f70e5-7a48-4857-aab1-824e7d99f316","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe97bb2a6-dc1b-40c5-9eef-687b777c74b0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDe97bb2a6-dc1b-40c5-9eef-687b777c74b0"}},{"type":"Message","id":"EID89401520-ef31-4999-b58d-f962a09a3e6a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID89401520-ef31-4999-b58d-f962a09a3e6a"}},{"type":"ServiceResponse","id":"EIDd46a46d3-5abe-4ce6-b7ff-b9e905c69919","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDd46a46d3-5abe-4ce6-b7ff-b9e905c69919"}},{"type":"ServiceResponse","id":"EID11b8d504-25e9-4bd6-bda3-7ef026cfcc46","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID11b8d504-25e9-4bd6-bda3-7ef026cfcc46"}},{"type":"ServiceResponse","id":"EIDbe36f278-697f-4a37-a9eb-830d5a1e0375","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDbe36f278-697f-4a37-a9eb-830d5a1e0375"}},{"type":"ServiceResponse","id":"EIDfc9ca6ba-daf0-4a06-a1fb-d5a97337d7d9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDfc9ca6ba-daf0-4a06-a1fb-d5a97337d7d9"}},{"type":"ServiceEndpoint","id":"EIDfefa4fed-afa4-4de2-aef4-b9a05453d896","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID490455cb-6d73-4cc2-8b07-d2ff3321c541","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID490455cb-6d73-4cc2-8b07-d2ff3321c541"}},{"type":"ServiceResponse","id":"EID4194b0c9-a4ce-4d0e-8621-e18054518e55","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID4194b0c9-a4ce-4d0e-8621-e18054518e55"}},{"type":"ServiceResponse","id":"EIDcd6156f8-dcfc-44ab-b132-5d3063c1703e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDcd6156f8-dcfc-44ab-b132-5d3063c1703e"}},{"type":"ServiceEndpoint","id":"EIDc46c8658-8869-473d-9068-c4a06a7c04e0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb131529c-f9ba-4c11-88e5-c73ab78bbb73","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDee335dbc-23a5-46f2-a7a3-9ca96a976ed8","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDee335dbc-23a5-46f2-a7a3-9ca96a976ed8"}},{"type":"GetParameter","id":"EIDe3e71e10-7205-47f0-8542-0906d8fd6961","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcd06f50b-17f8-43a4-9195-787e5ef2aded","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDcf882b72-bd01-4bba-8163-a34319289c55","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDcf882b72-bd01-4bba-8163-a34319289c55"}},{"type":"GetParameter","id":"EIDbc4152a3-6401-445e-8dd0-ef891d069e1c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID768cfd05-b04f-4c98-be3d-f04bcaf901a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID200bb9f9-9ca6-4aa7-82bb-3416ff595767","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID200bb9f9-9ca6-4aa7-82bb-3416ff595767"}},{"type":"GetParameter","id":"EIDbeed09ad-1524-400b-9fe7-3b01cc13c94c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe45c990f-4ef3-41c3-8e00-cdbecb08913c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDe45c990f-4ef3-41c3-8e00-cdbecb08913c"}},{"type":"GetParameter","id":"EID8369c7d6-e0ce-40ca-bffe-038f4b4b5a6b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID972e7583-3ea3-4c14-993a-0d6c4b8211b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID972e7583-3ea3-4c14-993a-0d6c4b8211b2"}},{"type":"ServiceEndpoint","id":"EIDc09b4ec5-41a9-48f3-b4f6-97df0e012be9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDc1ae037a-4d51-4cbf-99a0-18e6f9b8d3b5","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDc1ae037a-4d51-4cbf-99a0-18e6f9b8d3b5"}},{"type":"ServiceEndpoint","id":"EIDb70ee7f6-1e49-46b9-8441-91a873191b11","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3c18e31e-3e11-4bcf-b498-b18f1392af97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc16969ba-a47c-4db9-9cf7-d1b2f4656cec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID898c9e13-63e2-455f-8309-1edd22548abf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf0dcef6a-eb23-4308-9630-9309deecc03c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDa788e374-4066-4283-9bca-1c7035f95be4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDa788e374-4066-4283-9bca-1c7035f95be4"}},{"type":"Message","id":"EID235ecbfb-8fd2-4440-b7fb-606e09e557e9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID235ecbfb-8fd2-4440-b7fb-606e09e557e9"}},{"type":"Message","id":"EID7edd4179-9bcf-4630-81c4-bef1c25f5f63","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID7edd4179-9bcf-4630-81c4-bef1c25f5f63"}},{"type":"Message","id":"EID095be08b-4017-454e-b0b0-2392962b98bb","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID095be08b-4017-454e-b0b0-2392962b98bb"}},{"type":"GetParameter","id":"EID57541dbf-a53f-49ea-adc6-ffdebf065b86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID4ffcb0bb-f572-4787-a0c0-9df5a9633e05","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID4ffcb0bb-f572-4787-a0c0-9df5a9633e05"}},{"type":"ServiceEndpoint","id":"EIDdce97736-dadf-4c23-9b98-2b32b72099f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd4e0ee9d-ede6-4f66-96a7-50b393874d40","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID00b445e3-7404-4723-a8fc-7e39869e35bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID45a815c3-d63a-4d3e-bb71-3399356ba429","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID45a815c3-d63a-4d3e-bb71-3399356ba429"}},{"type":"Message","id":"EIDf8723529-5c26-47a6-b6c9-08d7f6c2c255","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDf8723529-5c26-47a6-b6c9-08d7f6c2c255"}},{"type":"GetParameter","id":"EIDa1532f1b-bb7d-4b7e-a2ef-568c66cde8d3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID1ffbc27d-5bd3-4edb-96eb-66847a5e9f00","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDb70799cc-90c0-4585-9d06-93c2a82a8295","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDb70799cc-90c0-4585-9d06-93c2a82a8295"}},{"type":"ServiceEndpoint","id":"EIDdb769e18-abce-4919-9274-be5578d05718","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID54d1b076-c1e7-48c0-8a41-1911746fc029","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0fceb318-2cde-483f-9f3a-13000c3bc33d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDea6fa281-3ffc-43ab-bdf8-ffa07f14de69","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDea6fa281-3ffc-43ab-bdf8-ffa07f14de69"}},{"type":"Message","id":"EID35120423-0b0f-473e-82a5-79b306c9f441","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID35120423-0b0f-473e-82a5-79b306c9f441"}},{"type":"ServiceResponse","id":"EID5f3b0a7c-6d82-4bec-888d-58082e56bc8f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID5f3b0a7c-6d82-4bec-888d-58082e56bc8f"}},{"type":"ServiceResponse","id":"EIDcecd0283-f106-4031-9feb-51e0a2780785","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDcecd0283-f106-4031-9feb-51e0a2780785"}},{"type":"ServiceEndpoint","id":"EID0056179b-f0bd-4326-a9b1-7316c21ba614","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDa8c1d037-d390-40e2-a91f-3d10a242e135","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDa8c1d037-d390-40e2-a91f-3d10a242e135"}},{"type":"GetParameter","id":"EID119c7469-57ee-4efd-a662-fcd76b9f18e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID5d807535-d398-4966-8693-e34e8283b997","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID54421fca-4576-4338-b6bf-de28739dbcd2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID99eaffce-1092-48fa-ac7e-0041e06c20d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID58d28f03-9c39-4dfd-97e7-1360b173785b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID475902d2-62c7-4524-bfd1-86c0672af4b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2abc06a0-ffe7-4096-b810-a425cbd8f457","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID2abc06a0-ffe7-4096-b810-a425cbd8f457"}},{"type":"Message","id":"EID1ebdb289-c3af-40fa-9128-6716e893ce82","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID1ebdb289-c3af-40fa-9128-6716e893ce82"}},{"type":"ServiceResponse","id":"EID5bb5bad6-7de0-4b43-9538-cc224052b6e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID5bb5bad6-7de0-4b43-9538-cc224052b6e9"}},{"type":"ServiceEndpoint","id":"EID61f7d429-ef7e-4889-966b-6a9f6b91bd69","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDa8f1c97a-6eae-47d2-bed6-9caf63188daa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID6d0a0d1b-784c-4bb0-91ad-697bd79df237","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID6d0a0d1b-784c-4bb0-91ad-697bd79df237"}},{"type":"ServiceResponse","id":"EID990a9cbd-13b3-4e8e-a127-81172cbcf3fc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID990a9cbd-13b3-4e8e-a127-81172cbcf3fc"}},{"type":"Message","id":"EID3bcd60e1-6b9b-4b09-b728-522357fe2d48","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID3bcd60e1-6b9b-4b09-b728-522357fe2d48"}},{"type":"ServiceResponse","id":"EID8d6d68d3-615d-45ea-a744-9d64932d83e7","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID8d6d68d3-615d-45ea-a744-9d64932d83e7"}},{"type":"ServiceResponse","id":"EID4bdc8d55-ae68-4b8c-bfed-e0e070f48b10","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID4bdc8d55-ae68-4b8c-bfed-e0e070f48b10"}},{"type":"Message","id":"EIDb196e061-ddcc-486d-a34a-7bf7a47d0d7b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDb196e061-ddcc-486d-a34a-7bf7a47d0d7b"}},{"type":"Message","id":"EIDb964916c-f905-4d99-8869-d37e155ce111","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDb964916c-f905-4d99-8869-d37e155ce111"}},{"type":"ServiceEndpoint","id":"EID29cc68e4-9268-42e5-a18e-a18f00e6e4fb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDe9955a69-e5e8-43e4-a026-561833f0e52a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDe9955a69-e5e8-43e4-a026-561833f0e52a"}},{"type":"GetParameter","id":"EIDe45547bb-1a86-4329-8dc3-3ebf94523104","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID780a855d-78ff-4ff0-8274-01ef29dcb3d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID780a855d-78ff-4ff0-8274-01ef29dcb3d5"}},{"type":"ServiceResponse","id":"EIDb25f224b-61cd-4dc9-8554-8116c2f22e9d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDb25f224b-61cd-4dc9-8554-8116c2f22e9d"}},{"type":"ServiceEndpoint","id":"EIDb7b94707-bbfd-4971-b002-2c43e469dff3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdcb0012e-9f04-4f94-9666-3db73b63b5d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa8cdc7c6-481b-4d58-ac31-0e0a9591c878","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDa8cdc7c6-481b-4d58-ac31-0e0a9591c878"}},{"type":"GetParameter","id":"EID3ebcde23-da22-41eb-a0ac-90fc99324383","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID41553f77-8f1b-424f-a58d-f93953fbbf77","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID41553f77-8f1b-424f-a58d-f93953fbbf77"}},{"type":"ServiceEndpoint","id":"EID04b85f54-9043-4bef-8083-f434f05339bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDe8137f59-ca4f-434b-99ec-5e22c04d5236","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDe8137f59-ca4f-434b-99ec-5e22c04d5236"}},{"type":"GetParameter","id":"EID87f9a0ce-2fd2-4b17-b9b1-bf56bc3f90e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID849e030c-8f64-41a7-996c-3c2261814911","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID849e030c-8f64-41a7-996c-3c2261814911"}},{"type":"ServiceEndpoint","id":"EID3ae6a2f5-ebae-4de1-af3d-8598b857f780","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID2aff4f38-0b44-47d2-b7e8-829cd0fa0fcc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID8f0743ab-c40c-46d3-971e-3c85f2d26937","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"GetParameter","id":"EID3785ed4e-50f7-45ac-95c2-a311551185b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID2ebc45cd-cf33-4fec-8af3-146c97a54526","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID2ebc45cd-cf33-4fec-8af3-146c97a54526"}},{"type":"ServiceEndpoint","id":"EID92af3605-2b5e-4034-9655-2aeb4b583ba5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID54d6d1df-75d2-4f3c-a44f-ff17ebd9f39d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID54d6d1df-75d2-4f3c-a44f-ff17ebd9f39d"}},{"type":"Message","id":"EID93e5b6ee-478e-4ed3-898c-20174804fa72","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID93e5b6ee-478e-4ed3-898c-20174804fa72"}},{"type":"ServiceResponse","id":"EID84b81139-abaf-4977-8eb6-7e11c38b0b57","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID84b81139-abaf-4977-8eb6-7e11c38b0b57"}},{"type":"GetParameter","id":"EID5deeb5ef-1a18-4c87-a914-1b82960d915a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"Message","id":"EID560fb8b0-78b4-4f96-8599-f729991bd57c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID560fb8b0-78b4-4f96-8599-f729991bd57c"}},{"type":"ServiceResponse","id":"EID7f844949-e34a-4593-899f-b2b529edc0a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID7f844949-e34a-4593-899f-b2b529edc0a4"}},{"type":"ServiceEndpoint","id":"EID98b5a041-5345-4362-8353-055273c1f664","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDc0f4b85d-5b6c-4f42-87f3-57e73b55de35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID2a1f5600-4a4d-4735-b240-6686b11404ce","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID2a1f5600-4a4d-4735-b240-6686b11404ce"}},{"type":"ServiceEndpoint","id":"EID982b1baf-ad94-4064-8346-490ca3426e6a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDc90c3bd0-3b18-4a5f-b2ed-b8296f1fb5b1","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDc90c3bd0-3b18-4a5f-b2ed-b8296f1fb5b1"}},{"type":"ServiceEndpoint","id":"EID12f13c00-b8f1-441f-b7c8-e579c92d2281","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDac2f2344-e4d0-47be-9038-5db771952268","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID92a89f43-07aa-446d-b77b-50008c285e82","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID92a89f43-07aa-446d-b77b-50008c285e82"}},{"type":"ServiceResponse","id":"EID8efa9152-0ade-4840-9f22-f0c7d9f16f56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID8efa9152-0ade-4840-9f22-f0c7d9f16f56"}},{"type":"Message","id":"EIDe9e828e7-ff8b-4c4e-b3e9-4d179b6dac46","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDe9e828e7-ff8b-4c4e-b3e9-4d179b6dac46"}},{"type":"Message","id":"EID6d781d52-9e28-444c-afe0-f10497f9bcfb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID6d781d52-9e28-444c-afe0-f10497f9bcfb"}},{"type":"Message","id":"EID2dba4e25-0d05-4f82-bee2-6979925afecf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID2dba4e25-0d05-4f82-bee2-6979925afecf"}},{"type":"ServiceEndpoint","id":"EID28f8b40c-181f-4db9-aa6a-72868fc232ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDd4ea33f3-5086-4b0f-be41-8f149c7e0689","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDd4ea33f3-5086-4b0f-be41-8f149c7e0689"}},{"type":"ServiceResponse","id":"EIDf3bf2a08-d351-41a3-a098-92d038c4a265","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDf3bf2a08-d351-41a3-a098-92d038c4a265"}},{"type":"GetParameter","id":"EIDf9a84d0f-348b-443b-a6f5-b9157f480949","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd5d4da26-a5c8-4c33-b7b4-2126dc183fdf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDf8a9f95a-19ea-48a2-a405-f910536bbe23","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDf8a9f95a-19ea-48a2-a405-f910536bbe23"}},{"type":"GetParameter","id":"EIDa878f6a4-b9b5-469b-8e13-b10e6ae2aa62","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID1630d459-f5c2-46b9-b482-baa82b9a2bc8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID1630d459-f5c2-46b9-b482-baa82b9a2bc8"}},{"type":"ServiceResponse","id":"EID65997c03-be6a-4bf8-baff-465bdf41d434","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID65997c03-be6a-4bf8-baff-465bdf41d434"}},{"type":"ServiceResponse","id":"EID7381e4d8-91f2-4ced-907e-0573c43c390b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID7381e4d8-91f2-4ced-907e-0573c43c390b"}},{"type":"ServiceEndpoint","id":"EIDbe87dee4-fd3e-4cfd-b7ea-45b658d3e7c2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8088d325-47c5-4540-b969-7ca1e6deaf1c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID8088d325-47c5-4540-b969-7ca1e6deaf1c"}},{"type":"Message","id":"EIDf4fb24aa-8004-4d7a-898f-03a8a6c9f33e","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDf4fb24aa-8004-4d7a-898f-03a8a6c9f33e"}},{"type":"Message","id":"EID9df5be3a-c4ec-497c-8749-3806d510c15c","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID9df5be3a-c4ec-497c-8749-3806d510c15c"}},{"type":"LogFile","id":"EIDd111958c-8861-483f-92c8-7042324d8203","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDd111958c-8861-483f-92c8-7042324d8203"}},{"type":"GetParameter","id":"EID4f8e91ac-2bfa-4076-b3fa-d300fc469379","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID75e36537-8421-43d9-8ac2-ff728493aa04","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID75e36537-8421-43d9-8ac2-ff728493aa04"}},{"type":"ServiceResponse","id":"EID0aef387f-d5a7-438e-80db-bc4c0f880249","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID0aef387f-d5a7-438e-80db-bc4c0f880249"}},{"type":"Message","id":"EID6253c111-1ca0-47d7-91c3-89eebbd0ff21","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID6253c111-1ca0-47d7-91c3-89eebbd0ff21"}},{"type":"GetParameter","id":"EID2bbd8c9d-e7cf-47ab-862a-4ebe5e96cd23","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID5800aa6d-f83b-4c00-bcc3-8db63af5849b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe8fde9a7-78bc-424b-b475-bf26cae14017","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDe8fde9a7-78bc-424b-b475-bf26cae14017"}},{"type":"GetParameter","id":"EID38d1f60b-aad5-4dc6-9826-fa82f2fc897f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8ac7cad5-a1b0-4984-900d-d5430f88123b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID8ac7cad5-a1b0-4984-900d-d5430f88123b"}},{"type":"GetParameter","id":"EIDd79cde1c-5bc1-4634-9adf-db0300b6ae0c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID08bf302f-30cd-48d3-8175-ff486a0b543a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID08bf302f-30cd-48d3-8175-ff486a0b543a"}},{"type":"ServiceEndpoint","id":"EID4d9023dd-4fa1-4bed-a47b-ca6b91042d48","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID483c7573-1679-4dcd-8734-5551022ce9a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID27c5eec2-46bc-4106-a802-ff95e0899faf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID1ed156fb-9b14-4a17-b3f2-aaa59dca16bf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID1ed156fb-9b14-4a17-b3f2-aaa59dca16bf"}},{"type":"Message","id":"EID0a1a4c4d-7dcd-4d17-a968-4891572c45e4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID0a1a4c4d-7dcd-4d17-a968-4891572c45e4"}},{"type":"Message","id":"EID4609eaa5-e410-4005-a79e-7cf7b705059d","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID4609eaa5-e410-4005-a79e-7cf7b705059d"}},{"type":"ServiceResponse","id":"EID826aeec7-6fbd-45e1-a2c6-0d5b9a876a3e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID826aeec7-6fbd-45e1-a2c6-0d5b9a876a3e"}},{"type":"ServiceResponse","id":"EID9cc7e53b-b33f-45d1-992a-0df875dadfa0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID9cc7e53b-b33f-45d1-992a-0df875dadfa0"}},{"type":"ServiceResponse","id":"EIDd1a7a592-179a-4792-990f-f119e2962352","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDd1a7a592-179a-4792-990f-f119e2962352"}},{"type":"ServiceEndpoint","id":"EID5cc72330-ce30-4882-90ca-3fa9883f8386","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"ServiceEndpoint","id":"EID5b7650c3-ff0e-48b4-8f28-928a169be4c4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID535c4621-570b-4e21-88c6-42ab6a47c6c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID179ee7e2-4645-4bc6-8296-6787f41b1d87","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID179ee7e2-4645-4bc6-8296-6787f41b1d87"}},{"type":"ServiceEndpoint","id":"EID8750cf26-7a7d-47b2-b1d8-94e491abe179","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDee891594-3ff8-49c3-bccf-e720f0642958","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID69a60824-2a3d-445f-854a-f141942414bf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID69a60824-2a3d-445f-854a-f141942414bf"}},{"type":"ServiceEndpoint","id":"EIDa61227b1-2bd4-4432-90c5-4d16d043e3f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID088698ac-714c-4ba6-a169-49db0b1897ad","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID088698ac-714c-4ba6-a169-49db0b1897ad"}},{"type":"GetParameter","id":"EID2d9f2cb3-cc2a-4e19-97bf-08813b26930c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID5972309b-0dfe-4406-837e-dca68dff3ea3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID5972309b-0dfe-4406-837e-dca68dff3ea3"}},{"type":"Message","id":"EID1dcdeda6-9898-453b-bd68-02819682c7dd","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID1dcdeda6-9898-453b-bd68-02819682c7dd"}},{"type":"ServiceEndpoint","id":"EID4d95c55b-2151-4ae4-a214-7527f97e86e0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbc35a7ed-a683-47b6-ae19-31c444afcb67","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID574ef337-6ff6-4e1e-9c1c-355e1a24a45d","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID574ef337-6ff6-4e1e-9c1c-355e1a24a45d"}},{"type":"GetParameter","id":"EIDa700fd6d-b719-4b0a-8e70-af0c42487663","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDa0f9d350-2cb2-4ee0-86e7-defbc77b5dc0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDa0f9d350-2cb2-4ee0-86e7-defbc77b5dc0"}},{"type":"GetParameter","id":"EIDb35a2337-dac2-483b-abe9-acf671502ab3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDefdf3744-9a00-4126-9416-2b9edb9fc6c1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDefdf3744-9a00-4126-9416-2b9edb9fc6c1"}},{"type":"ServiceEndpoint","id":"EIDcc0d47ca-1cdf-4768-9ba4-f962c056e28d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9a600679-8767-4d46-a90b-eefad7533aa6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2488dea2-e097-4119-99a8-627a47d9e91d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID2488dea2-e097-4119-99a8-627a47d9e91d"}},{"type":"Message","id":"EIDab32fe4c-6aa4-4443-955a-4a493326544e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDab32fe4c-6aa4-4443-955a-4a493326544e"}},{"type":"GetParameter","id":"EID4b6ebe99-4cd6-40ff-b89d-ad8587fc0e5f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDe97eea67-2e97-42d7-8a77-96e0557ff66a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDea66f765-484d-4044-9128-d1faec573afd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDd52c0c79-246f-4279-ba8d-8aef727a5bd7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"ServiceEndpoint","id":"EIDbb3b0175-3a18-4b34-b85f-ff7b5cd3225e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDaa856964-ba13-4d29-a03a-f2f6f4c5cd02","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID35c469e7-9e10-48fd-b58a-8f3ec0f8238b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb6d48779-4eb5-4e64-a2eb-3741f59c4509","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDb6d48779-4eb5-4e64-a2eb-3741f59c4509"}},{"type":"ServiceEndpoint","id":"EID11205dc5-c323-4941-8ea7-60a7ed200e26","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID17a95264-0994-4ada-8e3c-ba8c65151d9e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EID17a95264-0994-4ada-8e3c-ba8c65151d9e"}},{"type":"ServiceResponse","id":"EIDc21ae8f2-a64b-4d47-bf07-f9e5b57582f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf26641a1-f64b-461d-acc7-ab27eb01caa6/Attachments/EIDc21ae8f2-a64b-4d47-bf07-f9e5b57582f6"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:04:45Z","duration":40689,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:06:03.484 [print] EID558d3592-5522-4907-8694-32ca604ccb78
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:06:03.484 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:06:03.484 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:06:03.484 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:06:03.484 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/558d3592-5522-4907-8694-32ca604ccb78.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:06:03.485 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/558d3592-5522-4907-8694-32ca604ccb78.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:06:03.485 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID558d3592-5522-4907-8694-32ca604ccb78/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:06:03.495 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
11:06:03.495 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.398
* print "testing url:" + metadata.url 0.000
11:14:33.065 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.398
11:14:33.065 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:33.464 response time in milliseconds: 398.23
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:14:33 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.382
Given url metadata.url 0.000
When method HEAD 0.381
11:14:33.467 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:33.848 response time in milliseconds: 381.03
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:14:33 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.492
* print "testing url:" + metadata.url 0.000
11:13:48.536 [print] testing url:https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.492
11:13:48.538 request:
1 > HEAD https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:49.028 response time in milliseconds: 489.92
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3208
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:13:48 GMT
1 < Etag: "1679328017"
1 < Last-Modified: Tue, 27 Oct 2020 19:24:43 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
0.368
Given url metadata.url 0.000
When method HEAD 0.365
11:13:49.035 request:
1 > HEAD https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:49.399 response time in milliseconds: 364.00
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3208
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:13:49 GMT
1 < Etag: "1760385066"
1 < Last-Modified: Tue, 27 Oct 2020 19:15:59 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.002
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.663
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:55.657 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.662
11:13:55.658 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities"}}}

11:13:59.320 response time in milliseconds: 3554.69
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883639148","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:59.320 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.396
* print "testing url:" + metadata.url 0.000
11:15:08.804 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.396
11:15:08.805 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:09.201 response time in milliseconds: 395.98
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:09 GMT
1 < ETag: "1a31b-5af58ad4fedd0-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.398
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.398
11:15:09.207 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:09.605 response time in milliseconds: 397.15
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:09 GMT
1 < ETag: "1a31b-5af58a64f34f9-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:09.605 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.396
* print "testing url:" + metadata.url 0.000
11:12:17.152 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.006
When method HEAD 0.388
11:12:17.160 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:17.548 response time in milliseconds: 388.12
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:17 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.414
Given url metadata.url 0.000
When method HEAD 0.412
11:12:17.553 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:17.963 response time in milliseconds: 408.92
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:17 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.001
0.419
* print "testing url:" + metadata.url 0.000
11:09:06.827 [print] testing url:https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.419
11:09:06.828 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:07.246 response time in milliseconds: 418.65
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:06 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.414
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.413
11:09:07.252 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:07.665 response time in milliseconds: 411.70
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:07 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:07.666 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.364
* print "testing url:" + metadata.url 0.000
11:14:08.804 [print] testing url:https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.364
11:14:08.805 request:
1 > HEAD https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:09.166 response time in milliseconds: 360.90
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3250
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:14:09 GMT
1 < Etag: "2619513523"
1 < Last-Modified: Tue, 27 Oct 2020 19:15:53 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
0.359
Given url metadata.url 0.000
When method HEAD 0.357
11:14:09.174 request:
1 > HEAD https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:09.531 response time in milliseconds: 356.40
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3250
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:14:09 GMT
1 < Etag: "2619513523"
1 < Last-Modified: Tue, 27 Oct 2020 19:15:53 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.002
2.140
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:15.350 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.140
11:09:15.351 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities"}}}

11:09:17.491 response time in milliseconds: 2031.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:17 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883357323","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:17.491 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
30.342
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:24.019 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.342
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
11:13:24.020 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:13:54.361 java.net.SocketTimeoutException: Read timed out, http call failed after 30341 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:13:54.362 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.427
* print "testing url:" + metadata.url 0.000
11:10:17.296 [print] testing url:https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.427
11:10:17.296 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:17.723 response time in milliseconds: 426.43
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:17 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.409
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.408
11:10:17.728 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:18.135 response time in milliseconds: 406.21
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:18 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:18.137 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.399
* print "testing url:" + metadata.url 0.002
11:09:50.344 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.396
11:09:50.345 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:50.741 response time in milliseconds: 395.45
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 5631
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:50 GMT
1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1"
1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642237233A631EF
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.404
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.403
11:09:50.749 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:51.151 response time in milliseconds: 402.64
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 5631
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:51 GMT
1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1"
1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223724C28F729
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:09:51.152 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.405
* print "testing url:" + metadata.url 0.000
11:08:22.610 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.405
11:08:22.611 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:23.015 response time in milliseconds: 404.35
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:22 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.412
Given url metadata.url 0.000
When method HEAD 0.411
11:08:23.025 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:23.435 response time in milliseconds: 410.50
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:08:23 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.423
* print "testing url:" + metadata.url 0.000
11:13:37.117 [print] testing url:https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS
Given url metadata.url 0.000
When method HEAD 0.422
11:13:37.118 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:37.540 response time in milliseconds: 422.12
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:37 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.777
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.776
11:13:37.546 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:38.322 response time in milliseconds: 775.72
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:38 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:38.323 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.434
* print "testing url:" + metadata.url 0.000
11:12:26.049 [print] testing url:https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.434
11:12:26.049 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:26.483 response time in milliseconds: 433.13
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:26 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.393
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.392
11:12:26.494 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:26.883 response time in milliseconds: 388.70
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:26 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:12:26.885 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.420
* print "testing url:" + metadata.url 0.000
11:09:35.612 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.419
11:09:35.613 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:36.032 response time in milliseconds: 417.74
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:35 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.440
Scenario test download header
Steps
Given url metadata.url 0.002
When method HEAD 0.436
11:09:36.041 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:36.473 response time in milliseconds: 432.57
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:36 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.001
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:09:36.477 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.198
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:24.833 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.197
11:12:24.834 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities"}}}

11:12:26.031 response time in milliseconds: 1179.64
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:25 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883545948","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:12:26.031 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.631
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:04:47.932 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.623
11:04:47.936 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 282
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities"}}}

11:04:51.559 response time in milliseconds: 3517.01
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:51 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883091386","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.007
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:04:51.567 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.485
* print "testing url:" + metadata.url 0.000
11:13:56.049 [print] testing url:https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.484
11:13:56.050 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:56.534 response time in milliseconds: 484.21
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 22281
1 < Content-Type: text/xml; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:55 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.477
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.475
11:13:56.541 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:57.016 response time in milliseconds: 474.89
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 22281
1 < Content-Type: text/xml; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:56 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:57.018 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:18.208
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:07:04.363 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.620
11:07:04.364 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}

11:07:12.981 response time in milliseconds: 7854.56
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:07:12 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:07:09 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/b81dd0bc-c9b8-4759-b13a-e7b8aac238d2.json","testRuns":{"TestRun":{"id":"EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:07:09.314Z","testTasks":{"TestTask":{"id":"EIDdb956db8-5d2f-42fb-820d-b2246cc4a860","parent":{"ref":"EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDae5eba87-b205-408b-9b4e-e12930fbbcf1"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDae5eba87-b205-408b-9b4e-e12930fbbcf1","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:07:04.807Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:07:08.89Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:07:12.984 [print] EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:07:12.985 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:07:12.986 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:07:12.987 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/b81dd0bc-c9b8-4759-b13a-e7b8aac238d2.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:07:12.987 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.001
11:07:12.989 [print] statuspath TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2
* print 'progresspath ', progresspath 0.000
11:07:12.989 [print] progresspath  TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
Given path progresspath 0.000
When method GET 0.520
11:07:12.992 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:13.510 response time in milliseconds: 517.60
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:07:13 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:07:13.510 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)",
    "28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:07:09 - Preparing 1 Test Task:",
    "28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)",
    "28.10.2020 11:07:09 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:07:09 -  with parameters: ",
    "28.10.2020 11:07:09 - etf.testcases = *",
    "28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:07:09 - Setting state to CREATED",
    "28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z",
    "28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:07:11 - Project Properties: ",
    "28.10.2020 11:07:11 - etf.testcases - * ",
    "28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ",
    "28.10.2020 11:07:11 - username -  ",
    "28.10.2020 11:07:11 - authUser -  ",
    "28.10.2020 11:07:11 - authMethod - basic ",
    "28.10.2020 11:07:11 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:5.420
11:07:13.511 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:14.031 response time in milliseconds: 519.97
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:07:13 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}

11:07:14.032 retry condition not satisfied: response.val == response.max
11:07:14.032 sleeping before retry #1
11:07:19.033 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:21.851 response time in milliseconds: 2817.20
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:07:21 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}

11:07:21.856 retry condition not satisfied: response.val == response.max
11:07:21.856 sleeping before retry #2
11:07:26.858 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:27.497 response time in milliseconds: 634.93
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:07:27 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}

11:07:27.503 retry condition not satisfied: response.val == response.max
11:07:27.503 sleeping before retry #3
11:07:32.504 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:33.035 response time in milliseconds: 528.95
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:07:32 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}

11:07:33.036 retry condition not satisfied: response.val == response.max
11:07:33.036 sleeping before retry #4
11:07:38.037 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:38.548 response time in milliseconds: 510.79
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:07:38 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}

11:07:38.548 retry condition not satisfied: response.val == response.max
11:07:38.549 sleeping before retry #5
11:07:43.551 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:44.233 response time in milliseconds: 680.91
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:07:44 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized"]}

11:07:44.233 retry condition not satisfied: response.val == response.max
11:07:44.233 sleeping before retry #6
11:07:49.234 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:49.770 response time in milliseconds: 534.16
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:07:49 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"93","max":"94","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized","28.10.2020 11:07:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:49.770 retry condition not satisfied: response.val == response.max
11:07:49.771 sleeping before retry #7
11:07:54.771 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:55.299 response time in milliseconds: 518.42
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:07:55 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"110","max":"111","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized","28.10.2020 11:07:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:07:55.299 retry condition not satisfied: response.val == response.max
11:07:55.299 sleeping before retry #8
11:08:00.300 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:00.816 response time in milliseconds: 515.02
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:08:00 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"130","max":"131","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized","28.10.2020 11:07:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:08:00.816 retry condition not satisfied: response.val == response.max
11:08:00.816 sleeping before retry #9
11:08:05.817 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:06.347 response time in milliseconds: 529.78
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:08:06 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized","28.10.2020 11:07:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:08:06.347 retry condition not satisfied: response.val == response.max
11:08:06.347 sleeping before retry #10
11:08:11.348 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:11.922 response time in milliseconds: 572.32
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:08:11 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:07:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:09 UTC 2020)","28.10.2020 11:07:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:09 - Preparing 1 Test Task:","28.10.2020 11:07:09 -  TestTask 1 (db956db8-5d2f-42fb-820d-b2246cc4a860)","28.10.2020 11:07:09 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:09 -  with parameters: ","28.10.2020 11:07:09 - etf.testcases = *","28.10.2020 11:07:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:09 - Setting state to CREATED","28.10.2020 11:07:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:09 - Starting TestRun.b81dd0bc-c9b8-4759-b13a-e7b8aac238d2 at 2020-10-28T11:07:11Z","28.10.2020 11:07:11 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:11 - Project Properties: ","28.10.2020 11:07:11 - etf.testcases - * ","28.10.2020 11:07:11 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","28.10.2020 11:07:11 - username -  ","28.10.2020 11:07:11 - authUser -  ","28.10.2020 11:07:11 - authMethod - basic ","28.10.2020 11:07:11 - TestRunTask initialized","28.10.2020 11:07:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:08:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:08:11.922 retry condition not satisfied: response.val == response.max
11:08:11.922 sleeping before retry #11
11:08:16.924 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:18.930 response time in milliseconds: 2005.86
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:08:18 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:08:18.930 retry condition satisfied
* print response 0.000
11:08:18.930 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.619
11:08:18.931 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:22.534 response time in milliseconds: 2511.63
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Cache-Control: public, max-age=120
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:08:21 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Last-Modified: Wed, 28 Oct 2020 11:08:17 GMT
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/b81dd0bc-c9b8-4759-b13a-e7b8aac238d2.json","testRuns":{"TestRun":{"id":"EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:07:09.314Z","testTasks":{"TestTask":{"id":"EIDdb956db8-5d2f-42fb-820d-b2246cc4a860","parent":{"ref":"EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDae5eba87-b205-408b-9b4e-e12930fbbcf1"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb7995d86-1f04-4896-ae20-fb8b349bc120"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDae5eba87-b205-408b-9b4e-e12930fbbcf1","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:07:04.807Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:07:08.89Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb7995d86-1f04-4896-ae20-fb8b349bc120","testObject":{"ref":"EIDae5eba87-b205-408b-9b4e-e12930fbbcf1"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee3e82c-0175-1000-8583-13ae4d4ac65f","testCaseResults":{"TestCaseResult":[{"id":"EID6ee3e82c-0175-1000-e537-993c6f8422c4","testStepResults":{"TestStepResult":[{"id":"EID6ee3e82d-0175-1000-e4b7-41e2fc022165","parent":{"ref":"EID6ee3e82c-0175-1000-e537-993c6f8422c4"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:07:11Z","duration":15,"status":"PASSED"},{"id":"EID6ee3e83d-0175-1000-2c16-ca2dd19d1756","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3ec18-0175-1000-59bf-75aa2bf45838","parent":{"ref":"EID6ee3e83d-0175-1000-2c16-ca2dd19d1756"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:07:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee3ec18-0175-1000-32a9-53846e46a4e9","parent":{"ref":"EID6ee3e83d-0175-1000-2c16-ca2dd19d1756"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:07:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee3ec18-0175-1000-97eb-e9298bd687d9","parent":{"ref":"EID6ee3e83d-0175-1000-2c16-ca2dd19d1756"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:07:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee3ec18-0175-1000-7b1a-16b404db48b8","parent":{"ref":"EID6ee3e83d-0175-1000-2c16-ca2dd19d1756"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:07:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf518d4c3-6f3b-4fc5-b9b3-70e84f736d88"},{"ref":"EID3eab0ede-e0c7-4d70-a868-1a0c25829f84"},{"ref":"EID9df18f6f-bd66-4048-bf8e-edba8834d498"}]},"parent":{"ref":"EID6ee3e82c-0175-1000-e537-993c6f8422c4"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:07:11Z","duration":895,"status":"PASSED"}]},"parent":{"ref":"EID6ee3e82c-0175-1000-8583-13ae4d4ac65f"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:07:11Z","duration":1024,"status":"PASSED"},{"id":"EID6ee3ec2c-0175-1000-899b-2f5a18e5ea9c","testStepResults":{"TestStepResult":{"id":"EID6ee3ec2c-0175-1000-fe46-704bfb26b2d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3f058-0175-1000-f747-4aa01901d3fa","parent":{"ref":"EID6ee3ec2c-0175-1000-fe46-704bfb26b2d3"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f058-0175-1000-007e-e93575645812","parent":{"ref":"EID6ee3ec2c-0175-1000-fe46-704bfb26b2d3"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f058-0175-1000-9afb-09ba2f4915a6","parent":{"ref":"EID6ee3ec2c-0175-1000-fe46-704bfb26b2d3"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID023ceda5-0daf-4be9-8c4a-179f41371eeb"},{"ref":"EIDc27aea2c-c5bd-4c66-b028-136bc652c29b"},{"ref":"EID1c8bb413-4e6a-4230-9810-5976848059d8"}]},"parent":{"ref":"EID6ee3ec2c-0175-1000-899b-2f5a18e5ea9c"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:07:12Z","duration":991,"status":"PASSED"}},"parent":{"ref":"EID6ee3e82c-0175-1000-8583-13ae4d4ac65f"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:07:12Z","duration":1069,"status":"PASSED"}]},"parent":{"ref":"EIDb7995d86-1f04-4896-ae20-fb8b349bc120"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:07:11Z","duration":2093,"status":"PASSED"},{"id":"EID6ee3f059-0175-1000-c7cb-383ae840af45","testCaseResults":{"TestCaseResult":[{"id":"EID6ee3f059-0175-1000-ebc5-cee0ce8021dd","testStepResults":{"TestStepResult":[{"id":"EID6ee3f062-0175-1000-91ae-57cbf1948db0","parent":{"ref":"EID6ee3f059-0175-1000-ebc5-cee0ce8021dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:07:13Z","duration":991,"status":"PASSED"},{"id":"EID6ee3f062-0175-1000-8d82-252aab067f02","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3f2cb-0175-1000-82ef-b3ff141556b6","parent":{"ref":"EID6ee3f062-0175-1000-8d82-252aab067f02"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f2cb-0175-1000-97a5-c8300b776069","parent":{"ref":"EID6ee3f062-0175-1000-8d82-252aab067f02"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f2cb-0175-1000-00ba-b4d86eabf2d3","parent":{"ref":"EID6ee3f062-0175-1000-8d82-252aab067f02"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f2cb-0175-1000-0818-01ef8c7a7872","parent":{"ref":"EID6ee3f062-0175-1000-8d82-252aab067f02"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f2cb-0175-1000-afb6-28ca0ccfc1cf","parent":{"ref":"EID6ee3f062-0175-1000-8d82-252aab067f02"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:07:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3ba29d8a-3ced-4797-a7dd-d58d28538116"},{"ref":"EIDcd7d057e-fd33-4b80-8e46-e339667fe652"},{"ref":"EID4fcc8046-8013-4274-bb5f-45e8fa516e03"}]},"parent":{"ref":"EID6ee3f059-0175-1000-ebc5-cee0ce8021dd"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:07:13Z","duration":500,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:07:13Z","duration":636,"status":"PASSED"},{"id":"EID6ee3f2d5-0175-1000-0f75-82f4070757da","testStepResults":{"TestStepResult":[{"id":"EID6ee3f2d5-0175-1000-bfc9-537bc961fc30","attachments":{"attachment":[{"ref":"EIDeeed11ca-69b0-4fd4-b534-3022b7a2eb92"},{"ref":"EIDdd729076-8f5b-47dc-83a4-4e4ef2fc1275"}]},"parent":{"ref":"EID6ee3f2d5-0175-1000-0f75-82f4070757da"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:07:14Z","duration":943,"status":"PASSED"},{"id":"EID6ee3f6b1-0175-1000-30f7-18b249aeee4d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3f86d-0175-1000-ba5c-a4cf745937ef","parent":{"ref":"EID6ee3f6b1-0175-1000-30f7-18b249aeee4d"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f86d-0175-1000-d3a2-e63492a4003e","parent":{"ref":"EID6ee3f6b1-0175-1000-30f7-18b249aeee4d"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f86d-0175-1000-8940-5c207454046f","parent":{"ref":"EID6ee3f6b1-0175-1000-30f7-18b249aeee4d"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3f86d-0175-1000-22c6-02fc9a74a5fb","parent":{"ref":"EID6ee3f6b1-0175-1000-30f7-18b249aeee4d"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7f01001-3771-4a23-95ec-3388792fa7dd"},{"ref":"EID3e680204-ecfd-4c2f-ae57-adcd54a5d6f2"},{"ref":"EIDe1fe4858-7407-42ef-b487-6701bfb405c9"}]},"parent":{"ref":"EID6ee3f2d5-0175-1000-0f75-82f4070757da"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:07:14Z","duration":293,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:07:14Z","duration":1462,"status":"PASSED"},{"id":"EID6ee3f88b-0175-1000-2e43-9bca2324d1aa","testStepResults":{"TestStepResult":[{"id":"EID6ee3f88b-0175-1000-632e-a42343f427fb","attachments":{"attachment":[{"ref":"EID494fd063-bf3e-454b-bb54-171a50ec996e"},{"ref":"EIDea6803b3-bdb3-40f6-a4af-6d4f13e22d80"}]},"parent":{"ref":"EID6ee3f88b-0175-1000-2e43-9bca2324d1aa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:07:15Z","duration":143,"status":"PASSED"},{"id":"EID6ee3f94b-0175-1000-bb2a-b0edc6d896ad","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3fa2e-0175-1000-ff7d-33bffdf5cc7a","parent":{"ref":"EID6ee3f94b-0175-1000-bb2a-b0edc6d896ad"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fa2e-0175-1000-9f5b-93751adceb46","parent":{"ref":"EID6ee3f94b-0175-1000-bb2a-b0edc6d896ad"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fa2e-0175-1000-f264-fa8eb46e6a47","parent":{"ref":"EID6ee3f94b-0175-1000-bb2a-b0edc6d896ad"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fa2e-0175-1000-b083-e255a60188fa","parent":{"ref":"EID6ee3f94b-0175-1000-bb2a-b0edc6d896ad"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fa2e-0175-1000-381b-3fd1119bd4dc","parent":{"ref":"EID6ee3f94b-0175-1000-bb2a-b0edc6d896ad"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:07:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID605af5f0-9c36-4804-92d4-d058941985f9"},{"ref":"EID121dc584-ba46-47b4-b362-31fe0f6dee58"},{"ref":"EIDa7c6c022-328f-4834-a877-813e0e17073d"}]},"parent":{"ref":"EID6ee3f88b-0175-1000-2e43-9bca2324d1aa"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:07:15Z","duration":98,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:07:15Z","duration":419,"status":"PASSED"},{"id":"EID6ee3fa2e-0175-1000-4deb-e013955c673c","testStepResults":{"TestStepResult":[{"id":"EID6ee3fa2e-0175-1000-0abe-0370522e75af","attachments":{"attachment":[{"ref":"EID5ed427ac-2e67-44fd-b643-a2777669d277"},{"ref":"EIDf47f537c-f2d9-448d-9894-9e93dc6b9db6"}]},"parent":{"ref":"EID6ee3fa2e-0175-1000-4deb-e013955c673c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:07:15Z","duration":102,"status":"PASSED"},{"id":"EID6ee3fadb-0175-1000-475e-3389f0d6e6dc","parent":{"ref":"EID6ee3fa2e-0175-1000-4deb-e013955c673c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:07:16Z","duration":7,"status":"PASSED"},{"id":"EID6ee3fae2-0175-1000-be69-b6673262a6c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3fc03-0175-1000-70c4-70e9df9dc0bd","parent":{"ref":"EID6ee3fae2-0175-1000-be69-b6673262a6c7"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fc03-0175-1000-9b47-956072bca291","parent":{"ref":"EID6ee3fae2-0175-1000-be69-b6673262a6c7"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fc03-0175-1000-ef14-af037014abcb","parent":{"ref":"EID6ee3fae2-0175-1000-be69-b6673262a6c7"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fc03-0175-1000-7c54-899e2af31cf3","parent":{"ref":"EID6ee3fae2-0175-1000-be69-b6673262a6c7"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfc9b24f2-c651-4cea-be49-8c27f05fe202"},{"ref":"EID1368d856-8f10-499a-a56a-e6e464f61d10"},{"ref":"EID902968c8-5ceb-41f1-a459-9d768a2f4f90"}]},"parent":{"ref":"EID6ee3fa2e-0175-1000-4deb-e013955c673c"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:07:16Z","duration":117,"status":"PASSED"},{"id":"EID6ee3fc04-0175-1000-c22c-acc13b89ee2b","attachments":{"attachment":{"ref":"EID30ec55f3-7fdf-46c9-af93-88acbbad0954"}},"parent":{"ref":"EID6ee3fa2e-0175-1000-4deb-e013955c673c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fc10-0175-1000-cb3a-b41cf5c1d9a1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee40010-0175-1000-0dfb-4afa08f54db3","parent":{"ref":"EID6ee3fc10-0175-1000-cb3a-b41cf5c1d9a1"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:07:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee40010-0175-1000-9a96-06f6e21ed3af","parent":{"ref":"EID6ee3fc10-0175-1000-cb3a-b41cf5c1d9a1"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:07:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee40010-0175-1000-6421-5e66b6d1139b","parent":{"ref":"EID6ee3fc10-0175-1000-cb3a-b41cf5c1d9a1"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:07:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee40010-0175-1000-b29e-9107cae1ca68","parent":{"ref":"EID6ee3fc10-0175-1000-cb3a-b41cf5c1d9a1"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:07:17Z","duration":0,"status":"PASSED"},{"id":"EID6ee40010-0175-1000-4a3f-1dee99d31775","parent":{"ref":"EID6ee3fc10-0175-1000-cb3a-b41cf5c1d9a1"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:07:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7014511f-bb77-4700-ac84-1950117b9e04"},{"ref":"EID8bd40abd-91d1-49f2-b581-aa0bae192e56"},{"ref":"EIDce97cfa4-4f08-48b6-98d2-5d4a02badf70"}]},"parent":{"ref":"EID6ee3fa2e-0175-1000-4deb-e013955c673c"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:07:16Z","duration":910,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:07:15Z","duration":1533,"status":"PASSED"},{"id":"EID6ee4002b-0175-1000-d6b9-5fd51697475d","testStepResults":{"TestStepResult":[{"id":"EID6ee4002b-0175-1000-70b3-b12ac037055a","attachments":{"attachment":[{"ref":"EIDf30cfab0-d80a-4714-a90c-f1c6fb0ce0ad"},{"ref":"EID987998da-0659-4c08-9143-f8625c576f1f"}]},"parent":{"ref":"EID6ee4002b-0175-1000-d6b9-5fd51697475d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:07:17Z","duration":4382,"status":"PASSED"},{"id":"EID6ee41174-0175-1000-f71b-1ba91b3571c0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee41346-0175-1000-45e8-a32636aa5365","parent":{"ref":"EID6ee41174-0175-1000-f71b-1ba91b3571c0"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41346-0175-1000-66b5-c20035fa42f2","parent":{"ref":"EID6ee41174-0175-1000-f71b-1ba91b3571c0"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41346-0175-1000-939b-3d6447fd9a65","parent":{"ref":"EID6ee41174-0175-1000-f71b-1ba91b3571c0"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41346-0175-1000-2d5d-2228ac1ff059","parent":{"ref":"EID6ee41174-0175-1000-f71b-1ba91b3571c0"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf47382ff-969f-413b-8ad4-5f82ba1fee20"},{"ref":"EID09a95fb9-9a5c-4114-bd6e-dcc4d4a78043"},{"ref":"EIDf1cb77f7-ff63-4dd6-ab52-b39821266f99"}]},"parent":{"ref":"EID6ee4002b-0175-1000-d6b9-5fd51697475d"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:07:21Z","duration":340,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:07:17Z","duration":4891,"status":"PASSED"},{"id":"EID6ee4134f-0175-1000-aa32-0f2572c645cd","testStepResults":{"TestStepResult":[{"id":"EID6ee41350-0175-1000-aea4-0026468d9e77","attachments":{"attachment":[{"ref":"EIDc2f90a90-ff05-4811-bd6b-44ddfaae1773"},{"ref":"EIDab5ee120-b323-4e95-a0c5-fa41f0e982e2"}]},"parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:07:22Z","duration":1281,"status":"PASSED"},{"id":"EID6ee4188e-0175-1000-da4d-24ea6356ceef","parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:07:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee418a0-0175-1000-c9ae-01d64e77b138","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee41b48-0175-1000-f2a3-b4380422f769","parent":{"ref":"EID6ee418a0-0175-1000-c9ae-01d64e77b138"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee41b48-0175-1000-5b50-ca54ac444d8a","parent":{"ref":"EID6ee418a0-0175-1000-c9ae-01d64e77b138"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee41b48-0175-1000-802a-3f9abe08b6df","parent":{"ref":"EID6ee418a0-0175-1000-c9ae-01d64e77b138"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee41b48-0175-1000-5ca0-e7a2d23de033","parent":{"ref":"EID6ee418a0-0175-1000-c9ae-01d64e77b138"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb4424c1c-03d1-4c0e-9e9a-b58a294edcec"},{"ref":"EID8e9aa79d-7136-401d-9659-b8dad2bdcc70"},{"ref":"EID41238ce4-e21b-4018-9fc0-e0b4756608f0"}]},"parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:07:23Z","duration":597,"status":"PASSED"},{"id":"EID6ee41b48-0175-1000-44a8-76ed544dcfea","attachments":{"attachment":{"ref":"EID98112b1d-2667-474a-b7ff-09f932c0de26"}},"parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:07:24Z","duration":1,"status":"PASSED"},{"id":"EID6ee41b60-0175-1000-4aad-76834ae6bdde","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee41d90-0175-1000-dc96-57d7a0ad404f","parent":{"ref":"EID6ee41b60-0175-1000-4aad-76834ae6bdde"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee41d90-0175-1000-d2f7-a0a5045e3076","parent":{"ref":"EID6ee41b60-0175-1000-4aad-76834ae6bdde"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"},{"id":"EID6ee41d90-0175-1000-c48c-529781cf0073","parent":{"ref":"EID6ee41b60-0175-1000-4aad-76834ae6bdde"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd395f74c-cb2a-46df-8233-9f319500bbed"},{"ref":"EID110a88a1-23ba-4ed7-8ac9-3dbc1c3bd987"},{"ref":"EID33ab6579-80e0-4633-8784-ec6a865b7fe4"}]},"parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:07:24Z","duration":133,"status":"PASSED"},{"id":"EID6ee41d90-0175-1000-0961-5906287885b6","attachments":{"attachment":{"ref":"EID38aead60-667c-4743-83e7-6e36f44aef92"}},"parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:07:24Z","duration":1,"status":"PASSED"},{"id":"EID6ee41da8-0175-1000-c10a-7704f537c60e","attachments":{"attachment":{"ref":"EID8ad22974-9b4a-4346-9b0f-bdbd77838712"}},"parent":{"ref":"EID6ee4134f-0175-1000-aa32-0f2572c645cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:07:24Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:07:22Z","duration":2661,"status":"PASSED"},{"id":"EID6ee41db4-0175-1000-7220-fa96b130f300","testStepResults":{"TestStepResult":[{"id":"EID6ee41db4-0175-1000-4516-edcfec65be1f","attachments":{"attachment":[{"ref":"EIDdb4d0331-772e-48fc-8a99-9f2a1a0dd05f"},{"ref":"EID799dce4a-d215-41d9-810c-4f23dabea0f5"}]},"parent":{"ref":"EID6ee41db4-0175-1000-7220-fa96b130f300"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:07:24Z","duration":1204,"status":"PASSED"},{"id":"EID6ee4228c-0175-1000-92fd-ad1c3c35626e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee425f1-0175-1000-8574-420c7eaa721f","parent":{"ref":"EID6ee4228c-0175-1000-92fd-ad1c3c35626e"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:07:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee425f1-0175-1000-54f2-b45683b97d26","parent":{"ref":"EID6ee4228c-0175-1000-92fd-ad1c3c35626e"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:07:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee425f1-0175-1000-e334-3eefa5a14c79","parent":{"ref":"EID6ee4228c-0175-1000-92fd-ad1c3c35626e"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:07:27Z","duration":0,"status":"PASSED"},{"id":"EID6ee425f1-0175-1000-7096-0d6487bf86f2","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee4228c-0175-1000-92fd-ad1c3c35626e"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:07:27Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDbeae5212-3494-4b93-a1bd-81bdc758ca1f"},{"ref":"EIDfe6581c7-9a1b-4251-947e-66d45de40314"},{"ref":"EID1fb50f36-c5e0-44a0-8e53-86642cb137f4"}]},"parent":{"ref":"EID6ee41db4-0175-1000-7220-fa96b130f300"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:07:26Z","duration":762,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:07:24Z","duration":2110,"status":"PASSED_MANUAL"},{"id":"EID6ee425f2-0175-1000-b974-65db6c257038","testStepResults":{"TestStepResult":{"id":"EID6ee425fd-0175-1000-3e80-fe66dedadf10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4322e-0175-1000-1b5d-409706a0d802","parent":{"ref":"EID6ee425fd-0175-1000-3e80-fe66dedadf10"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:07:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee4322e-0175-1000-47bf-7c62f1593a45","parent":{"ref":"EID6ee425fd-0175-1000-3e80-fe66dedadf10"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:07:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee4322e-0175-1000-f14e-13e08ab9f044","parent":{"ref":"EID6ee425fd-0175-1000-3e80-fe66dedadf10"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:07:30Z","duration":0,"status":"PASSED"},{"id":"EID6ee4322e-0175-1000-b335-8b6d7afcea38","parent":{"ref":"EID6ee425fd-0175-1000-3e80-fe66dedadf10"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:07:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb584cdc-9329-483e-b881-d6df58ebab2d"},{"ref":"EID5fe80150-5ed0-416c-be83-1265370927ba"},{"ref":"EID7e488551-0b1d-437e-b550-af4accf1c1cc"}]},"parent":{"ref":"EID6ee425f2-0175-1000-b974-65db6c257038"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:07:27Z","duration":2977,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:07:27Z","duration":3148,"status":"PASSED"},{"id":"EID6ee4323f-0175-1000-2ab2-b6293b0420ae","testStepResults":{"TestStepResult":{"id":"EID6ee4323f-0175-1000-6a37-fd009743c5fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4357f-0175-1000-6d99-8e949caaf8e1","parent":{"ref":"EID6ee4323f-0175-1000-6a37-fd009743c5fc"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee4357f-0175-1000-6a88-30b2a7db87ee","parent":{"ref":"EID6ee4323f-0175-1000-6a37-fd009743c5fc"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee4357f-0175-1000-19fc-004ac856f467","parent":{"ref":"EID6ee4323f-0175-1000-6a37-fd009743c5fc"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee4357f-0175-1000-fcb8-bb097d9db4c0","parent":{"ref":"EID6ee4323f-0175-1000-6a37-fd009743c5fc"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7aa590b5-1035-4bf7-a500-5e36b0a46d68"},{"ref":"EIDe86ff05a-65eb-43e2-9a6e-385958f28247"},{"ref":"EID1003a81e-2bea-487d-8e8d-f779cf4cebdd"}]},"parent":{"ref":"EID6ee4323f-0175-1000-2ab2-b6293b0420ae"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:07:30Z","duration":742,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:07:30Z","duration":840,"status":"PASSED"},{"id":"EID6ee43588-0175-1000-6d0b-c5eec80609e3","testStepResults":{"TestStepResult":[{"id":"EID6ee43588-0175-1000-55fb-16a68f7a5fd6","attachments":{"attachment":[{"ref":"EID9e3b0aa3-be73-4816-99d9-05073c1ffdda"},{"ref":"EIDe31a5291-c4d0-40cb-b509-d665acd3b207"},{"ref":"EID093d8c5d-24d3-4a6a-a427-9b3bb5e13d6e"},{"ref":"EIDd69495ad-42f1-40ff-babc-3b0b8fdcdcd2"},{"ref":"EID082c1e5d-bb6b-4f24-87c1-c190ecce7b96"},{"ref":"EIDe4531ca2-3102-4f20-9541-734e69223971"},{"ref":"EIDe55a5b41-ae93-4123-92c1-aa275a98d842"},{"ref":"EID53233b6a-145c-4275-8e35-2768a275b14b"},{"ref":"EID5e0689f1-f7eb-4939-9498-27a704b2965b"},{"ref":"EID8cff9e02-b80c-402b-8c22-1205713a8431"},{"ref":"EID5b48eb09-9b60-4d3a-87ce-abc47e09f0f4"},{"ref":"EID7d87df33-82a7-4a4d-8337-b3bbd565f76f"}]},"parent":{"ref":"EID6ee43588-0175-1000-6d0b-c5eec80609e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:07:31Z","duration":3161,"status":"PASSED"},{"id":"EID6ee442e1-0175-1000-a4fc-0169f8817989","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee447af-0175-1000-d9b4-c3ac895a60d0","parent":{"ref":"EID6ee442e1-0175-1000-a4fc-0169f8817989"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:07:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee447af-0175-1000-cfe5-03eca1bd8ecf","parent":{"ref":"EID6ee442e1-0175-1000-a4fc-0169f8817989"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:07:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee447af-0175-1000-ac3c-795bbc76ce67","parent":{"ref":"EID6ee442e1-0175-1000-a4fc-0169f8817989"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:07:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee447af-0175-1000-4cce-123495074964","parent":{"ref":"EID6ee442e1-0175-1000-a4fc-0169f8817989"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:07:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee447af-0175-1000-6b06-4dfeb42cd27c","parent":{"ref":"EID6ee442e1-0175-1000-a4fc-0169f8817989"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:07:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID876b7a60-c86c-40b1-8fc2-30b49c3c0557"},{"ref":"EIDed9b1f4d-3145-47b5-ad85-9b9d7f19c12b"},{"ref":"EID9115763a-7ebc-40a0-92b5-327e707fbb5b"}]},"parent":{"ref":"EID6ee43588-0175-1000-6d0b-c5eec80609e3"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:07:34Z","duration":1093,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:07:31Z","duration":4655,"status":"PASSED"},{"id":"EID6ee447b7-0175-1000-54d8-a91015af2161","testStepResults":{"TestStepResult":{"id":"EID6ee447b7-0175-1000-a18f-f90873322b6e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4508a-0175-1000-483d-061e901f5abe","parent":{"ref":"EID6ee447b7-0175-1000-a18f-f90873322b6e"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:07:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee4508a-0175-1000-53cc-9378467feeab","parent":{"ref":"EID6ee447b7-0175-1000-a18f-f90873322b6e"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:07:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee4508a-0175-1000-1f7f-f8dc4f3f9c06","parent":{"ref":"EID6ee447b7-0175-1000-a18f-f90873322b6e"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:07:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee4508a-0175-1000-b8e1-7a84228e6089","parent":{"ref":"EID6ee447b7-0175-1000-a18f-f90873322b6e"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:07:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2e3c14ab-c4e5-409b-9d1c-09b2e58febb1"},{"ref":"EIDbe717ada-132f-4a41-b73f-0554c78d2bdf"},{"ref":"EID74410164-588f-4ba7-aabd-f3a1bb6fd2a8"}]},"parent":{"ref":"EID6ee447b7-0175-1000-54d8-a91015af2161"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:07:35Z","duration":2153,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:07:35Z","duration":2268,"status":"PASSED"},{"id":"EID6ee45094-0175-1000-b146-3fde0feebc4e","testStepResults":{"TestStepResult":{"id":"EID6ee45094-0175-1000-e9fc-3874add5f556","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee45272-0175-1000-68a9-f65ad176fc63","parent":{"ref":"EID6ee45094-0175-1000-e9fc-3874add5f556"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:07:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee45272-0175-1000-e323-97cf4e36cfad","parent":{"ref":"EID6ee45094-0175-1000-e9fc-3874add5f556"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:07:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee45272-0175-1000-433a-d5eecf701f42","parent":{"ref":"EID6ee45094-0175-1000-e9fc-3874add5f556"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:07:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee45272-0175-1000-2d64-44b53729500b","parent":{"ref":"EID6ee45094-0175-1000-e9fc-3874add5f556"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:07:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee45272-0175-1000-311a-509b20c615cc","parent":{"ref":"EID6ee45094-0175-1000-e9fc-3874add5f556"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:07:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee45272-0175-1000-f4db-a08ad9af89a1","parent":{"ref":"EID6ee45094-0175-1000-e9fc-3874add5f556"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:07:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc372c928-e548-474d-89cc-7ff1341f533f"},{"ref":"EID1a36e236-8819-4392-900a-48bb9dd3878e"},{"ref":"EID5853f0c2-b084-4e20-830e-5f7dcc9db042"}]},"parent":{"ref":"EID6ee45094-0175-1000-b146-3fde0feebc4e"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:07:38Z","duration":378,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:07:38Z","duration":478,"status":"PASSED"},{"id":"EID6ee45272-0175-1000-3930-c70eefd231ba","testStepResults":{"TestStepResult":{"id":"EID6ee45272-0175-1000-2029-abdc8e28b06b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee45c87-0175-1000-8f89-5f2abbe013ce","parent":{"ref":"EID6ee45272-0175-1000-2029-abdc8e28b06b"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:07:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee45c87-0175-1000-53fd-2a7d88a4d480","parent":{"ref":"EID6ee45272-0175-1000-2029-abdc8e28b06b"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:07:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee45c87-0175-1000-60b6-3ec32456c94a","parent":{"ref":"EID6ee45272-0175-1000-2029-abdc8e28b06b"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:07:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee45c87-0175-1000-22fb-65f463687eac","parent":{"ref":"EID6ee45272-0175-1000-2029-abdc8e28b06b"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:07:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee45c87-0175-1000-baf7-2ea1a451cca5","parent":{"ref":"EID6ee45272-0175-1000-2029-abdc8e28b06b"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:07:41Z","duration":0,"status":"PASSED"},{"id":"EID6ee45c87-0175-1000-2277-3212de35023b","parent":{"ref":"EID6ee45272-0175-1000-2029-abdc8e28b06b"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:07:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDed6e0a53-577d-45af-a58c-e8bba19fed7d"},{"ref":"EID6ed5485c-66e0-46bd-be75-07ccf3fc52b6"},{"ref":"EIDe6b86584-3a77-43ca-b2f5-21c6d1db21bc"}]},"parent":{"ref":"EID6ee45272-0175-1000-3930-c70eefd231ba"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:07:38Z","duration":2406,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:07:38Z","duration":2589,"status":"PASSED"},{"id":"EID6ee45c90-0175-1000-40f8-e9d099fcdd7c","testStepResults":{"TestStepResult":{"id":"EID6ee45c9d-0175-1000-3d81-17e704e39817","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee46900-0175-1000-42a3-9d1962c0e3c6","parent":{"ref":"EID6ee45c9d-0175-1000-3d81-17e704e39817"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee46900-0175-1000-9414-cad7422e9715","parent":{"ref":"EID6ee45c9d-0175-1000-3d81-17e704e39817"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee46900-0175-1000-4ad3-5ac51b7f524c","parent":{"ref":"EID6ee45c9d-0175-1000-3d81-17e704e39817"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee46900-0175-1000-09c6-4c0605655d8b","parent":{"ref":"EID6ee45c9d-0175-1000-3d81-17e704e39817"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5fb9985d-3e83-4692-98ac-139ed338eb01"},{"ref":"EIDcb8adbb0-2485-4abc-ae6a-3e6292d24490"},{"ref":"EID14014cc4-8fc7-4e32-9659-52cf7a55f3be"}]},"parent":{"ref":"EID6ee45c90-0175-1000-40f8-e9d099fcdd7c"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:07:41Z","duration":3065,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:07:41Z","duration":3184,"status":"PASSED"},{"id":"EID6ee46901-0175-1000-fd3d-86ab45fcbc57","testStepResults":{"TestStepResult":[{"id":"EID6ee46901-0175-1000-9093-5ffc787cc025","attachments":{"attachment":[{"ref":"EID25a39f30-abbc-4997-8f4a-dd5223de1ebe"},{"ref":"EID87fc9588-f21e-4dd2-9c8f-4fb2a960d719"},{"ref":"EID7ca7d974-ec7e-41f7-8b8d-b212f060bf28"},{"ref":"EID9f654110-1a24-43db-9482-5dc659e00b80"}]},"parent":{"ref":"EID6ee46901-0175-1000-fd3d-86ab45fcbc57"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:07:44Z","duration":1667,"status":"PASSED"},{"id":"EID6ee46fbb-0175-1000-6272-7e6cb97292aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee471a8-0175-1000-4fa4-3a8548b711f8","parent":{"ref":"EID6ee46fbb-0175-1000-6272-7e6cb97292aa"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee471a8-0175-1000-191b-01fb974b3bb2","parent":{"ref":"EID6ee46fbb-0175-1000-6272-7e6cb97292aa"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee471a8-0175-1000-3d10-84d9043c19d7","parent":{"ref":"EID6ee46fbb-0175-1000-6272-7e6cb97292aa"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee471a8-0175-1000-b785-205cad8afafb","parent":{"ref":"EID6ee46fbb-0175-1000-6272-7e6cb97292aa"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID90952223-5242-44ab-b7ba-be6753cf47f6"},{"ref":"EID3d09cb1d-2659-4c32-9b4b-5372380f0a80"},{"ref":"EIDc6e5c9f8-1d2f-4594-953b-4301b09ecf97"}]},"parent":{"ref":"EID6ee46901-0175-1000-fd3d-86ab45fcbc57"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:07:45Z","duration":413,"status":"PASSED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:07:44Z","duration":2215,"status":"PASSED"},{"id":"EID6ee471a8-0175-1000-3b6c-21fbebaa88e5","testStepResults":{"TestStepResult":{"id":"EID6ee471a8-0175-1000-5f8c-acaea19b5be6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee47270-0175-1000-8a31-55670531c66b","parent":{"ref":"EID6ee471a8-0175-1000-5f8c-acaea19b5be6"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee47270-0175-1000-cd27-7f6c47561399","parent":{"ref":"EID6ee471a8-0175-1000-5f8c-acaea19b5be6"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee47270-0175-1000-8154-2fe7885c24eb","parent":{"ref":"EID6ee471a8-0175-1000-5f8c-acaea19b5be6"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee47270-0175-1000-2d9e-07eeb4878e36","parent":{"ref":"EID6ee471a8-0175-1000-5f8c-acaea19b5be6"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID392d5967-680f-44ab-a5e4-5851cff0f5ec"},{"ref":"EID33becb7e-1542-4c0f-a4ba-d36133ebd0df"},{"ref":"EID28f54a83-5a01-46e8-8cb5-eb75088e106e"}]},"parent":{"ref":"EID6ee471a8-0175-1000-3b6c-21fbebaa88e5"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:07:46Z","duration":109,"status":"PASSED"}},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:07:46Z","duration":281,"status":"PASSED"},{"id":"EID6ee472c1-0175-1000-6ea5-66c67b9ed475","testStepResults":{"TestStepResult":[{"id":"EID6ee472c1-0175-1000-c6fc-f2356ff09b4e","parent":{"ref":"EID6ee472c1-0175-1000-6ea5-66c67b9ed475"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:07:46Z","duration":0,"status":"PASSED"},{"id":"EID6ee472c1-0175-1000-ad68-f92748462638","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee47848-0175-1000-dcd4-e4e6bf51ed98","parent":{"ref":"EID6ee472c1-0175-1000-ad68-f92748462638"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47848-0175-1000-07e7-47b5a3a9f55b","parent":{"ref":"EID6ee472c1-0175-1000-ad68-f92748462638"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47848-0175-1000-8d29-9b96b98361dd","parent":{"ref":"EID6ee472c1-0175-1000-ad68-f92748462638"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47848-0175-1000-5605-82800eff490d","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee472c1-0175-1000-ad68-f92748462638"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7297a4bc-5860-48d1-bbbe-e216009a0fb2"},{"ref":"EIDf08d5a4e-ecfc-453f-b270-b8dcefaf4e68"},{"ref":"EID94531458-8c15-4755-a3c7-da957c3866ea"}]},"parent":{"ref":"EID6ee472c1-0175-1000-6ea5-66c67b9ed475"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:07:46Z","duration":1283,"status":"FAILED"}]},"parent":{"ref":"EID6ee3f059-0175-1000-c7cb-383ae840af45"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:07:46Z","duration":1416,"status":"FAILED"}]},"parent":{"ref":"EIDb7995d86-1f04-4896-ae20-fb8b349bc120"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:07:13Z","duration":34800,"status":"FAILED"},{"id":"EID6ee47849-0175-1000-56c1-e149bb444136","testCaseResults":{"TestCaseResult":[{"id":"EID6ee47849-0175-1000-755c-911e46d983db","testStepResults":{"TestStepResult":[{"id":"EID6ee47852-0175-1000-1d1e-2f35fe90f279","parent":{"ref":"EID6ee47849-0175-1000-755c-911e46d983db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47852-0175-1000-e513-d918c9beb440","parent":{"ref":"EID6ee47849-0175-1000-755c-911e46d983db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:07:48Z","duration":109,"status":"PASSED"},{"id":"EID6ee47852-0175-1000-5673-f3cbe01dcef0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee47c1f-0175-1000-e437-86897757da82","parent":{"ref":"EID6ee47852-0175-1000-5673-f3cbe01dcef0"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47c1f-0175-1000-6967-c5f84c5e0e4c","parent":{"ref":"EID6ee47852-0175-1000-5673-f3cbe01dcef0"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47c1f-0175-1000-3298-3afe98ff37bb","parent":{"ref":"EID6ee47852-0175-1000-5673-f3cbe01dcef0"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID07cc556b-7331-459f-ae26-a95c754051bb"},{"ref":"EIDb76eb447-9a6f-4b37-a4f1-3e92e68850a2"},{"ref":"EIDb7603a8e-915f-48a5-aae7-163cc65fa22f"}]},"parent":{"ref":"EID6ee47849-0175-1000-755c-911e46d983db"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:07:48Z","duration":782,"status":"PASSED"},{"id":"EID6ee4801c-0175-1000-6b21-08a58878fdd9","attachments":{"attachment":{"ref":"EIDbd870b03-d3aa-4a5b-9ca2-187c21046423"}},"parent":{"ref":"EID6ee47849-0175-1000-755c-911e46d983db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:07:50Z","duration":1,"status":"PASSED"},{"id":"EID6ee4802a-0175-1000-ecbc-46a425fbfa35","parent":{"ref":"EID6ee47849-0175-1000-755c-911e46d983db"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:07:50Z","duration":18,"status":"PASSED"}]},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:07:48Z","duration":2035,"status":"PASSED"},{"id":"EID6ee4803d-0175-1000-7ef5-c28832fef6f2","testStepResults":{"TestStepResult":[{"id":"EID6ee4803d-0175-1000-3948-cfa21adbdafb","parent":{"ref":"EID6ee4803d-0175-1000-7ef5-c28832fef6f2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:07:50Z","duration":991,"status":"PASSED"},{"id":"EID6ee4803d-0175-1000-2795-ae15bf52c8b6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee487fc-0175-1000-13cb-8bc2695080ac","parent":{"ref":"EID6ee4803d-0175-1000-2795-ae15bf52c8b6"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee487fc-0175-1000-4287-c5d59cd388fb","parent":{"ref":"EID6ee4803d-0175-1000-2795-ae15bf52c8b6"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee487fc-0175-1000-c433-f05495ffbb92","parent":{"ref":"EID6ee4803d-0175-1000-2795-ae15bf52c8b6"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee487fc-0175-1000-0a3d-d0dcab1e0082","parent":{"ref":"EID6ee4803d-0175-1000-2795-ae15bf52c8b6"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee487fc-0175-1000-fdd4-fc581912eef2","parent":{"ref":"EID6ee4803d-0175-1000-2795-ae15bf52c8b6"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID76b849af-b1b8-4c8d-a6e7-3f1a1e468801"},{"ref":"EID43162ca5-f23f-4c4d-907c-fb1333876033"},{"ref":"EID81f69c45-0dd0-48b6-8c54-89fdc19c6582"}]},"parent":{"ref":"EID6ee4803d-0175-1000-7ef5-c28832fef6f2"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:07:50Z","duration":1883,"status":"PASSED"}]},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:07:50Z","duration":1983,"status":"PASSED"},{"id":"EID6ee487fc-0175-1000-fd35-b393fe7c266c","testStepResults":{"TestStepResult":[{"id":"EID6ee487fc-0175-1000-12b7-00d226433ba5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4896f-0175-1000-91d8-88bf6e0c5eed","parent":{"ref":"EID6ee487fc-0175-1000-12b7-00d226433ba5"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee4896f-0175-1000-a293-0b8096e53fe7","parent":{"ref":"EID6ee487fc-0175-1000-12b7-00d226433ba5"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee4896f-0175-1000-1b43-c6bb0791713f","parent":{"ref":"EID6ee487fc-0175-1000-12b7-00d226433ba5"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaadc39f2-0527-4010-9ef4-130319d2cf1d"},{"ref":"EID79bda58b-9ea2-495c-9c24-a59fadda1824"},{"ref":"EID961f7bdc-b7be-462d-9089-f634cf4a369c"}]},"parent":{"ref":"EID6ee487fc-0175-1000-fd35-b393fe7c266c"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:07:52Z","duration":298,"status":"PASSED"},{"id":"EID6ee4896f-0175-1000-1647-d7b55550806e","attachments":{"attachment":{"ref":"EID012d920a-4367-4b5f-92c0-afd0880d9307"}},"parent":{"ref":"EID6ee487fc-0175-1000-fd35-b393fe7c266c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:07:52Z","duration":1,"status":"PASSED"},{"id":"EID6ee4897b-0175-1000-a328-f5059e7768d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee48d2e-0175-1000-9b32-697a3a2bcebe","parent":{"ref":"EID6ee4897b-0175-1000-a328-f5059e7768d8"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48d2e-0175-1000-f4b4-b603fba8d5de","parent":{"ref":"EID6ee4897b-0175-1000-a328-f5059e7768d8"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48d2e-0175-1000-1bd2-b6fbbae940bb","parent":{"ref":"EID6ee4897b-0175-1000-a328-f5059e7768d8"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48d2e-0175-1000-dc36-29002d9320da","parent":{"ref":"EID6ee4897b-0175-1000-a328-f5059e7768d8"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48d2e-0175-1000-76c7-0426da518d7f","parent":{"ref":"EID6ee4897b-0175-1000-a328-f5059e7768d8"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb8ff377-f1e6-4942-b146-bf210f5ccbf3"},{"ref":"EIDc348f2e5-bd6d-4820-ae2c-88c34665b999"},{"ref":"EID3e0fccbe-c184-4b6e-b92e-a978e121c998"}]},"parent":{"ref":"EID6ee487fc-0175-1000-fd35-b393fe7c266c"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:07:52Z","duration":861,"status":"PASSED"}]},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:07:52Z","duration":1330,"status":"PASSED"},{"id":"EID6ee48d2e-0175-1000-334b-e86f826fe5ac","testStepResults":{"TestStepResult":[{"id":"EID6ee48d2e-0175-1000-68ae-d48d59a7e36d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee48ef8-0175-1000-b1ec-287c6dd489be","parent":{"ref":"EID6ee48d2e-0175-1000-68ae-d48d59a7e36d"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48ef8-0175-1000-db30-978d5fec8b86","parent":{"ref":"EID6ee48d2e-0175-1000-68ae-d48d59a7e36d"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48ef8-0175-1000-6df1-b9c10ce8817c","parent":{"ref":"EID6ee48d2e-0175-1000-68ae-d48d59a7e36d"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee48ef8-0175-1000-916b-72b06e55edfb","parent":{"ref":"EID6ee48d2e-0175-1000-68ae-d48d59a7e36d"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:07:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d89bc14-e66a-4b9f-a682-185ec68f8fc0"},{"ref":"EIDa1cf80fe-6d3e-4a0b-baf1-d1d9666862ba"},{"ref":"EIDa1bebe9b-916e-4de8-aa26-137c3570b326"}]},"parent":{"ref":"EID6ee48d2e-0175-1000-334b-e86f826fe5ac"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:07:53Z","duration":375,"status":"PASSED"},{"id":"EID6ee48ef8-0175-1000-3d2f-f450edb5f903","attachments":{"attachment":{"ref":"EIDa6de145f-6707-4359-b672-912eb0a1c9eb"}},"parent":{"ref":"EID6ee48d2e-0175-1000-334b-e86f826fe5ac"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:07:53Z","duration":1,"status":"PASSED"},{"id":"EID6ee48f05-0175-1000-1ad0-ce561a7ccc02","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee49990-0175-1000-ddab-cefde50fd418","parent":{"ref":"EID6ee48f05-0175-1000-1ad0-ce561a7ccc02"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:07:56Z","duration":0,"status":"PASSED"},{"id":"EID6ee49990-0175-1000-16f7-88915131c2ec","parent":{"ref":"EID6ee48f05-0175-1000-1ad0-ce561a7ccc02"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:07:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ff88482-4e19-4d1b-8857-e124837ab916"},{"ref":"EID22e5aebb-200b-4717-af26-2250aaac554d"}]},"parent":{"ref":"EID6ee48d2e-0175-1000-334b-e86f826fe5ac"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:07:53Z","duration":2694,"status":"PASSED"},{"id":"EID6ee499a0-0175-1000-6cb8-a6d806c3395b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee49b86-0175-1000-d1b4-f24fd5bf6c77","parent":{"ref":"EID6ee499a0-0175-1000-6cb8-a6d806c3395b"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee49b86-0175-1000-a49b-7af29c7a1cbb","parent":{"ref":"EID6ee499a0-0175-1000-6cb8-a6d806c3395b"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee49b86-0175-1000-24e5-fabed9bdb060","parent":{"ref":"EID6ee499a0-0175-1000-6cb8-a6d806c3395b"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee49b86-0175-1000-e93f-a06d54177d2c","parent":{"ref":"EID6ee499a0-0175-1000-6cb8-a6d806c3395b"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID348174b3-5625-451b-9f88-dbb561d3158c"},{"ref":"EID25aba0b6-9136-456a-b48b-224d63af2852"},{"ref":"EIDecfade20-7fb1-4267-ab7d-3714ac82f882"}]},"parent":{"ref":"EID6ee48d2e-0175-1000-334b-e86f826fe5ac"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:07:56Z","duration":312,"status":"PASSED"}]},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:07:53Z","duration":3672,"status":"PASSED"},{"id":"EID6ee49b87-0175-1000-0f15-2cee4ed01b3c","testStepResults":{"TestStepResult":{"id":"EID6ee49b87-0175-1000-fbb4-32add5ad4997","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee49e99-0175-1000-21d0-63b06ef24e88","parent":{"ref":"EID6ee49b87-0175-1000-fbb4-32add5ad4997"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee49e99-0175-1000-59d9-c3f0beb72112","parent":{"ref":"EID6ee49b87-0175-1000-fbb4-32add5ad4997"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"},{"id":"EID6ee49e99-0175-1000-8a4b-57c4b692ddfe","parent":{"ref":"EID6ee49b87-0175-1000-fbb4-32add5ad4997"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:07:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa26c981a-b0e8-4c07-9d40-2459cce3202f"},{"ref":"EID20203f80-6acf-425a-9e52-79e87d772bfb"},{"ref":"EID154936d6-ad8c-400c-bd3a-c61d56cf2dea"}]},"parent":{"ref":"EID6ee49b87-0175-1000-0f15-2cee4ed01b3c"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:07:57Z","duration":698,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:07:57Z","duration":797,"status":"PASSED"},{"id":"EID6ee49ea4-0175-1000-c01c-120453446251","testStepResults":{"TestStepResult":{"id":"EID6ee49eae-0175-1000-211a-6c3a8eee2e2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a395-0175-1000-de8b-c34b716f3e5b","parent":{"ref":"EID6ee49eae-0175-1000-211a-6c3a8eee2e2a"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a395-0175-1000-64a3-5d106420283b","parent":{"ref":"EID6ee49eae-0175-1000-211a-6c3a8eee2e2a"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a395-0175-1000-4568-7009cf25c280","parent":{"ref":"EID6ee49eae-0175-1000-211a-6c3a8eee2e2a"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42772194-67b7-4219-aeaf-5d0d30d81db3"},{"ref":"EIDa3ad1307-3db9-4c0d-af3b-3c1aa6b71ba1"},{"ref":"EID71babe37-e567-4395-9d34-e5f19963bb6b"}]},"parent":{"ref":"EID6ee49ea4-0175-1000-c01c-120453446251"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:07:57Z","duration":1195,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:07:57Z","duration":1265,"status":"PASSED"},{"id":"EID6ee4a395-0175-1000-2b97-b41c227cd71e","testStepResults":{"TestStepResult":{"id":"EID6ee4a395-0175-1000-876b-7be1d1250d89","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a57b-0175-1000-03a7-282cb72d41c8","parent":{"ref":"EID6ee4a395-0175-1000-876b-7be1d1250d89"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a57b-0175-1000-0628-839c5b562431","parent":{"ref":"EID6ee4a395-0175-1000-876b-7be1d1250d89"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a57b-0175-1000-c2d6-4a73620f16d3","parent":{"ref":"EID6ee4a395-0175-1000-876b-7be1d1250d89"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a57b-0175-1000-46e0-632489bf18d4","parent":{"ref":"EID6ee4a395-0175-1000-876b-7be1d1250d89"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a57b-0175-1000-a1c8-261e6faafd4c","parent":{"ref":"EID6ee4a395-0175-1000-876b-7be1d1250d89"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID62c0c27b-db0c-4a67-a50a-10bfecffa334"},{"ref":"EIDb3cf8797-6afc-4092-931e-ef9f49050b71"},{"ref":"EIDca2bc8c3-d9d4-4f6b-bd55-29f8064c3799"}]},"parent":{"ref":"EID6ee4a395-0175-1000-2b97-b41c227cd71e"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:07:59Z","duration":338,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:07:59Z","duration":486,"status":"PASSED"},{"id":"EID6ee4a57d-0175-1000-c870-17d8f5327a66","testStepResults":{"TestStepResult":{"id":"EID6ee4a57d-0175-1000-f90f-b6456afe9eca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a774-0175-1000-5dd5-0302db123ea5","parent":{"ref":"EID6ee4a57d-0175-1000-f90f-b6456afe9eca"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a774-0175-1000-4d88-56096d14bec3","parent":{"ref":"EID6ee4a57d-0175-1000-f90f-b6456afe9eca"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a774-0175-1000-1054-50a3831a9b92","parent":{"ref":"EID6ee4a57d-0175-1000-f90f-b6456afe9eca"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc7e16e5b-c819-4605-a592-7b18ef9c0ac3"},{"ref":"EID171c5da5-511f-4100-8353-9ae4a95798e3"},{"ref":"EIDa13b64b7-ba9c-4855-ad35-58516c3fb852"}]},"parent":{"ref":"EID6ee4a57d-0175-1000-c870-17d8f5327a66"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:07:59Z","duration":436,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:07:59Z","duration":503,"status":"PASSED"},{"id":"EID6ee4a774-0175-1000-f602-8ef9e536f31a","testStepResults":{"TestStepResult":{"id":"EID6ee4a774-0175-1000-88eb-8672947c841d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4aafe-0175-1000-3184-e9b8dd29d1fb","parent":{"ref":"EID6ee4a774-0175-1000-88eb-8672947c841d"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:08:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee4aafe-0175-1000-468c-7f24abd6bc1e","parent":{"ref":"EID6ee4a774-0175-1000-88eb-8672947c841d"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:08:01Z","duration":0,"status":"PASSED"},{"id":"EID6ee4aafe-0175-1000-c736-a4dd429da8eb","parent":{"ref":"EID6ee4a774-0175-1000-88eb-8672947c841d"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:08:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID35a2763a-f98a-4f42-84bc-43c6d2ad1298"},{"ref":"EID24440713-40bb-40ab-99b2-9b14d71ad1da"},{"ref":"EID48a4b19e-b453-4330-817e-0bcc88f613a7"}]},"parent":{"ref":"EID6ee4a774-0175-1000-f602-8ef9e536f31a"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:08:00Z","duration":841,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:08:00Z","duration":975,"status":"PASSED"},{"id":"EID6ee4ab44-0175-1000-4607-55ed9917b78c","testStepResults":{"TestStepResult":{"id":"EID6ee4ab44-0175-1000-2a04-761a5f0b111a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4b350-0175-1000-cda9-0645d641b8e8","parent":{"ref":"EID6ee4ab44-0175-1000-2a04-761a5f0b111a"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b350-0175-1000-e86d-b9a032d3f4fb","parent":{"ref":"EID6ee4ab44-0175-1000-2a04-761a5f0b111a"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b350-0175-1000-61bd-c3f059ade2fa","parent":{"ref":"EID6ee4ab44-0175-1000-2a04-761a5f0b111a"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b350-0175-1000-deea-b3bf84f6db16","parent":{"ref":"EID6ee4ab44-0175-1000-2a04-761a5f0b111a"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf111c326-3ce3-4dba-97d9-73d53dd73505"},{"ref":"EIDaf602d04-71b3-44c8-a602-160af385006c"},{"ref":"EID04191e10-7aae-45cc-8164-103d5090fcd5"}]},"parent":{"ref":"EID6ee4ab44-0175-1000-4607-55ed9917b78c"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:08:01Z","duration":1970,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:08:01Z","duration":2060,"status":"PASSED"},{"id":"EID6ee4b350-0175-1000-5c92-4f37270231bf","testStepResults":{"TestStepResult":{"id":"EID6ee4b350-0175-1000-0742-c8d4df2b8a1c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4b4db-0175-1000-9c7f-c97a6cd98ea1","parent":{"ref":"EID6ee4b350-0175-1000-0742-c8d4df2b8a1c"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b4db-0175-1000-d333-cf616c1d5a3b","parent":{"ref":"EID6ee4b350-0175-1000-0742-c8d4df2b8a1c"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b4db-0175-1000-5941-cdea815c73e8","parent":{"ref":"EID6ee4b350-0175-1000-0742-c8d4df2b8a1c"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b4db-0175-1000-2339-e07663e8c7b3","parent":{"ref":"EID6ee4b350-0175-1000-0742-c8d4df2b8a1c"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID20c0e637-1641-4f7e-a3c7-a8444cd6dcc0"},{"ref":"EIDe58364bf-c470-438f-a2a4-b98acf960408"},{"ref":"EIDcea22597-2597-41c1-ad15-1640ff8a2fa8"}]},"parent":{"ref":"EID6ee4b350-0175-1000-5c92-4f37270231bf"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:08:03Z","duration":310,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:08:03Z","duration":396,"status":"PASSED"},{"id":"EID6ee4b4e4-0175-1000-9f8e-d29350fbd370","testStepResults":{"TestStepResult":[{"id":"EID6ee4b4e4-0175-1000-1d59-4a55d7471aa9","parent":{"ref":"EID6ee4b4e4-0175-1000-9f8e-d29350fbd370"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b4e4-0175-1000-9ae7-15996767349c","parent":{"ref":"EID6ee4b4e4-0175-1000-9f8e-d29350fbd370"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:08:03Z","duration":1491,"status":"PASSED"},{"id":"EID6ee4b4e4-0175-1000-51c2-895cc52c383b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bacd-0175-1000-aa0e-9ac26ef23d8a","parent":{"ref":"EID6ee4b4e4-0175-1000-51c2-895cc52c383b"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bacd-0175-1000-c642-6b1f5647f0d4","parent":{"ref":"EID6ee4b4e4-0175-1000-51c2-895cc52c383b"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bacd-0175-1000-eeea-fd3b152d1b87","parent":{"ref":"EID6ee4b4e4-0175-1000-51c2-895cc52c383b"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bacd-0175-1000-1bee-bfcd4f1d5fc0","parent":{"ref":"EID6ee4b4e4-0175-1000-51c2-895cc52c383b"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0d05f053-30a2-4d15-a718-860b8cc3d9bc"},{"ref":"EID52c88cc9-bff6-47e1-b1f8-469b7c81ce60"},{"ref":"EIDb1d433d6-2f73-4f8d-a706-33774aaf0c9c"}]},"parent":{"ref":"EID6ee4b4e4-0175-1000-9f8e-d29350fbd370"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:08:03Z","duration":1403,"status":"PASSED"},{"id":"EID6ee4bacd-0175-1000-56c6-1995a7b67ec5","attachments":{"attachment":{"ref":"EIDf24fbbc2-df74-46f8-81e4-f666fc0aad23"}},"parent":{"ref":"EID6ee4b4e4-0175-1000-9f8e-d29350fbd370"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:08:05Z","duration":1,"status":"PASSED"},{"id":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bc60-0175-1000-f882-d41259851d4b","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc60-0175-1000-a1e0-7be6ea30da65","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc60-0175-1000-9b61-7f1f1251f12c","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc60-0175-1000-b4e5-24d47dae30d0","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc60-0175-1000-86c5-a6207eaba5fb","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc60-0175-1000-6e2f-ca366da3cade","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc60-0175-1000-aa47-407212cee97d","parent":{"ref":"EID6ee4bae2-0175-1000-1ea2-3ddb89783002"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID41bf87d1-77eb-4856-b879-8c754b43d1ac"},{"ref":"EID86121f6d-a282-4305-92cd-6ad41a954332"},{"ref":"EIDce457d39-176d-4b2f-b0d6-1e6c29e64044"}]},"parent":{"ref":"EID6ee4b4e4-0175-1000-9f8e-d29350fbd370"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:08:05Z","duration":276,"status":"PASSED"}]},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:08:03Z","duration":1925,"status":"PASSED"},{"id":"EID6ee4bc69-0175-1000-f80f-f8f2727227ae","testStepResults":{"TestStepResult":[{"id":"EID6ee4bc6a-0175-1000-4975-90ac0be693a0","parent":{"ref":"EID6ee4bc69-0175-1000-f80f-f8f2727227ae"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bc6a-0175-1000-29cb-7424638698f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bd5b-0175-1000-b052-34279e11d9ac","parent":{"ref":"EID6ee4bc6a-0175-1000-29cb-7424638698f7"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bd5b-0175-1000-fe32-ba4319664b5e","parent":{"ref":"EID6ee4bc6a-0175-1000-29cb-7424638698f7"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bd5b-0175-1000-e0ef-26c248be00b8","parent":{"ref":"EID6ee4bc6a-0175-1000-29cb-7424638698f7"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bd5b-0175-1000-2f16-388202f1000b","parent":{"ref":"EID6ee4bc6a-0175-1000-29cb-7424638698f7"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID840de33e-ad4a-439c-806b-ce53ed5eea3c"},{"ref":"EID04a582f3-dbcd-4922-b9af-3778d56cbd21"},{"ref":"EIDffce7329-9a86-4df3-aca8-0d81cc099001"}]},"parent":{"ref":"EID6ee4bc69-0175-1000-f80f-f8f2727227ae"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:08:05Z","duration":141,"status":"PASSED"},{"id":"EID6ee4bd5b-0175-1000-8002-bedf51c4435e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee4bd7d-0175-1000-88c7-80dc6f37f889","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4be71-0175-1000-cb55-4c1391c8fdd9","parent":{"ref":"EID6ee4bd7d-0175-1000-88c7-80dc6f37f889"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4be71-0175-1000-f350-cfe8dd668ba4","parent":{"ref":"EID6ee4bd7d-0175-1000-88c7-80dc6f37f889"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4be71-0175-1000-a884-8d204185ea3e","parent":{"ref":"EID6ee4bd7d-0175-1000-88c7-80dc6f37f889"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84c89ff9-d800-49c6-9540-ded5c9ca6f40"},{"ref":"EIDa3a35ebe-c7c3-4832-8b85-a1dc321295ec"},{"ref":"EID3d965781-f3fc-45fd-8369-bbb70ac6f37b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:05Z","duration":149,"status":"PASSED"},{"id":"EID6ee4be73-0175-1000-36ac-ca7b1a2ae4f5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bf38-0175-1000-a7de-66b404460406","parent":{"ref":"EID6ee4be73-0175-1000-36ac-ca7b1a2ae4f5"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bf38-0175-1000-309b-e1655eff6f7c","parent":{"ref":"EID6ee4be73-0175-1000-36ac-ca7b1a2ae4f5"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bf38-0175-1000-dc0b-7c2e77d782f7","parent":{"ref":"EID6ee4be73-0175-1000-36ac-ca7b1a2ae4f5"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:06Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4f48280e-7b7c-4b2b-9926-1bb61b75c30b"},{"ref":"EIDe7b6f0a8-4995-42ee-b0c0-dbb541a48de0"},{"ref":"EID6938e2a0-543d-47d4-bcc4-44f4219caaf9"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:06Z","duration":148,"status":"PASSED"},{"id":"EID6ee4bf3a-0175-1000-dbaf-f239e016f805","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bf93-0175-1000-66d8-2bb56f755c22","parent":{"ref":"EID6ee4bf3a-0175-1000-dbaf-f239e016f805"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bf93-0175-1000-531b-2c0ce0140b09","parent":{"ref":"EID6ee4bf3a-0175-1000-dbaf-f239e016f805"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bf93-0175-1000-db3c-c09aa792c31c","parent":{"ref":"EID6ee4bf3a-0175-1000-dbaf-f239e016f805"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID415d863d-fc45-41fb-8bbd-6cbfe17a932b"},{"ref":"EID63e7f85b-a344-4be1-925f-e2f335cacd68"},{"ref":"EID1282f313-b3eb-4663-a280-486e3bb72050"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:06Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6ee4bc69-0175-1000-f80f-f8f2727227ae"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:08:05Z","duration":568,"status":"PASSED"},{"id":"EID6ee4bf94-0175-1000-5750-d078831d4b79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4c156-0175-1000-a1f0-e5b03193deb2","parent":{"ref":"EID6ee4bf94-0175-1000-5750-d078831d4b79"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c156-0175-1000-5142-94045e396d8d","parent":{"ref":"EID6ee4bf94-0175-1000-5750-d078831d4b79"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c156-0175-1000-1bf9-0fb802bb7a6f","parent":{"ref":"EID6ee4bf94-0175-1000-5750-d078831d4b79"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c156-0175-1000-4fe0-db6b7ad916ea","parent":{"ref":"EID6ee4bf94-0175-1000-5750-d078831d4b79"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ff1e63d-7b3e-47cb-a2ae-6245cbb9005d"},{"ref":"EID36e75484-0c3c-4cc2-b841-fa58f59fcb5d"},{"ref":"EIDc3a20415-0645-40fc-990d-58226f796fab"}]},"parent":{"ref":"EID6ee4bc69-0175-1000-f80f-f8f2727227ae"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:08:06Z","duration":368,"status":"PASSED"}]},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:08:05Z","duration":1270,"status":"PASSED"},{"id":"EID6ee4c15f-0175-1000-0a2c-b98afca46073","testStepResults":{"TestStepResult":{"id":"EID6ee4c15f-0175-1000-0b2f-19c1e449af83","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4c868-0175-1000-baca-6cd68785376d","parent":{"ref":"EID6ee4c15f-0175-1000-0b2f-19c1e449af83"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c868-0175-1000-8846-139307ebf270","parent":{"ref":"EID6ee4c15f-0175-1000-0b2f-19c1e449af83"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c868-0175-1000-ced5-91a865b934d4","parent":{"ref":"EID6ee4c15f-0175-1000-0b2f-19c1e449af83"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c868-0175-1000-af45-5bb95d6af305","parent":{"ref":"EID6ee4c15f-0175-1000-0b2f-19c1e449af83"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc13a80b3-3d06-4e02-bd8e-7248c56d75f3"},{"ref":"EID054f27ae-efb3-4d0f-ba6b-5c6a1030a7df"},{"ref":"EID76d4b698-5510-4103-bf80-e7031ceb7190"}]},"parent":{"ref":"EID6ee4c15f-0175-1000-0a2c-b98afca46073"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:08:06Z","duration":1698,"status":"PASSED"}},"parent":{"ref":"EID6ee47849-0175-1000-56c1-e149bb444136"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:08:06Z","duration":1811,"status":"PASSED"}]},"parent":{"ref":"EIDb7995d86-1f04-4896-ae20-fb8b349bc120"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:07:48Z","duration":20529,"status":"PASSED"},{"id":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee4c87a-0175-1000-50e5-3a8e28b5df21","testStepResults":{"TestStepResult":[{"id":"EID6ee4c87a-0175-1000-a29b-0522b6199121","parent":{"ref":"EID6ee4c87a-0175-1000-50e5-3a8e28b5df21"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:08:08Z","duration":2014,"status":"PASSED"},{"id":"EID6ee4c87b-0175-1000-201d-63487d2312c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4cc42-0175-1000-d26a-1292ce453bed","parent":{"ref":"EID6ee4c87b-0175-1000-201d-63487d2312c3"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cc42-0175-1000-ccb7-1b9fa07850e2","parent":{"ref":"EID6ee4c87b-0175-1000-201d-63487d2312c3"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cc42-0175-1000-4cc5-075ae5810b9b","parent":{"ref":"EID6ee4c87b-0175-1000-201d-63487d2312c3"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:08:09Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ab00c28-fd77-41bf-9115-1fb972f075ed"},{"ref":"EIDa83da5e3-a78c-420d-862f-b5b80df03abf"},{"ref":"EID1799e73f-c64d-40c4-b8f2-e88df3b46dea"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-50e5-3a8e28b5df21"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:08:08Z","duration":880,"status":"PASSED"},{"id":"EID6ee4cc43-0175-1000-0fe7-b9b3fbfd357d","attachments":{"attachment":{"ref":"EIDcb98eedf-63f3-4c32-903e-fe83aea61f5a"}},"parent":{"ref":"EID6ee4c87a-0175-1000-50e5-3a8e28b5df21"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:08:09Z","duration":2,"status":"PASSED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:08:08Z","duration":983,"status":"PASSED"},{"id":"EID6ee4cc5a-0175-1000-a1ce-eb0e4ffb7292","testStepResults":{"TestStepResult":[{"id":"EID6ee4cc5a-0175-1000-767a-9c2cde7a34ef","parent":{"ref":"EID6ee4cc5a-0175-1000-a1ce-eb0e4ffb7292"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:08:09Z","duration":2013,"status":"PASSED"},{"id":"EID6ee4cc5a-0175-1000-6f61-ac74402745f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4cd80-0175-1000-c2e0-00a3ed57bc88","parent":{"ref":"EID6ee4cc5a-0175-1000-6f61-ac74402745f7"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cd80-0175-1000-e303-f88bab45e266","parent":{"ref":"EID6ee4cc5a-0175-1000-6f61-ac74402745f7"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cd80-0175-1000-46e8-5c409a36485a","parent":{"ref":"EID6ee4cc5a-0175-1000-6f61-ac74402745f7"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cd80-0175-1000-66b6-fdd2b52267de","parent":{"ref":"EID6ee4cc5a-0175-1000-6f61-ac74402745f7"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID597e933e-75e6-430c-9f54-5a3824d5aa66"},{"ref":"EID1e46b1f2-c0bc-4915-b12d-3646060eef77"},{"ref":"EIDcc165864-4b53-44bf-896a-0d25ffc0cbf1"}]},"parent":{"ref":"EID6ee4cc5a-0175-1000-a1ce-eb0e4ffb7292"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:08:09Z","duration":173,"status":"PASSED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:08:09Z","duration":294,"status":"PASSED"},{"id":"EID6ee4cd92-0175-1000-d74a-1aa4ae918250","testStepResults":{"TestStepResult":[{"id":"EID6ee4cd92-0175-1000-a1c6-9fc60cb040fc","parent":{"ref":"EID6ee4cd92-0175-1000-d74a-1aa4ae918250"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:08:10Z","duration":2013,"status":"PASSED"},{"id":"EID6ee4cd92-0175-1000-6489-e708bd8dbe83","parent":{"ref":"EID6ee4cd92-0175-1000-d74a-1aa4ae918250"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cd92-0175-1000-006a-dea64fae696b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4ce6c-0175-1000-a3bb-e3a75e3068d0","parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ce6c-0175-1000-8cb1-777b4794279a","parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ce6c-0175-1000-f816-73579b3937a5","parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ce6c-0175-1000-6513-005a65232db0","parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ce6c-0175-1000-52b5-797e42db381b","parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ce6c-0175-1000-6987-04e9454655bc","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"FAILED"},{"id":"EID6ee4ce6c-0175-1000-7a77-34233cf2074a","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee4cd92-0175-1000-006a-dea64fae696b"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7bf7e62e-3fdc-49a1-adc7-b47898fc93d3"},{"ref":"EIDc9f82705-24ca-44a2-8263-873be7ff7101"},{"ref":"EID5aa60040-b29b-40f5-bc9f-0580f7325789"}]},"parent":{"ref":"EID6ee4cd92-0175-1000-d74a-1aa4ae918250"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:08:10Z","duration":90,"status":"FAILED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:08:10Z","duration":235,"status":"FAILED"},{"id":"EID6ee4ce86-0175-1000-731e-e722b0a36d31","testStepResults":{"TestStepResult":[{"id":"EID6ee4ce86-0175-1000-00ca-1461eb40ccd7","parent":{"ref":"EID6ee4ce86-0175-1000-731e-e722b0a36d31"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:08:10Z","duration":2013,"status":"PASSED"},{"id":"EID6ee4ce86-0175-1000-3c67-885792b9c390","parent":{"ref":"EID6ee4ce86-0175-1000-731e-e722b0a36d31"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4cf3c-0175-1000-f64d-fe76ecce7066","parent":{"ref":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf3c-0175-1000-c8db-6f6f194696bd","parent":{"ref":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf3c-0175-1000-ce43-d98f17828479","parent":{"ref":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf3c-0175-1000-6d52-debba4864fef","parent":{"ref":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf3c-0175-1000-9b23-bd937afe9a3e","parent":{"ref":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf3c-0175-1000-d829-c125bc18671b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee4ce86-0175-1000-93d5-3904ca0dcad1"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID22c6a00c-8863-4457-ad94-d12961e3e2f3"},{"ref":"EIDabd393d8-3009-41f4-8f0f-1c903990c57f"},{"ref":"EID9d3860fd-23f9-42ac-8d72-e03b93da04fa"}]},"parent":{"ref":"EID6ee4ce86-0175-1000-731e-e722b0a36d31"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:08:10Z","duration":79,"status":"FAILED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:08:10Z","duration":182,"status":"FAILED"},{"id":"EID6ee4cf3c-0175-1000-b71f-545cb462798d","testStepResults":{"TestStepResult":[{"id":"EID6ee4cf3c-0175-1000-2952-cfa9dfa7cb2a","parent":{"ref":"EID6ee4cf3c-0175-1000-b71f-545cb462798d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:08:10Z","duration":2013,"status":"PASSED"},{"id":"EID6ee4cf3c-0175-1000-3a0b-dbf54edec297","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDf02b9cd6-6b66-4086-96c3-cdd1303cdd3d"},{"ref":"EIDd0a1522c-d6fb-4790-8f52-fb619c97b8c8"},{"ref":"EID601dd2a5-4619-49f1-8407-f5528e1a1936"},{"ref":"EID0e36c725-7647-46d0-9ef0-63f8f3015aca"},{"ref":"EIDf1ccd92b-ace2-4786-9146-e5047cf6fb55"},{"ref":"EID72536a25-119c-413b-8f0d-31bf668a6b19"},{"ref":"EIDa783ba0c-8485-4822-9f79-1a519fcf6fa6"},{"ref":"EIDa18421e2-702b-4247-b0a1-b07e49a00524"},{"ref":"EIDcf50b37a-fcc0-4e4d-8d51-acea33ae8a09"},{"ref":"EID1f4e97aa-0fac-4a4b-abc5-c0d981ce01cd"},{"ref":"EIDbd8777a8-9b70-429f-b834-f6a72e05588e"},{"ref":"EID71ef6da2-9e77-401d-9234-db16cb71e89e"},{"ref":"EID6e41b7d2-9324-4db7-8acf-3c925bc420e6"},{"ref":"EIDac2b60fd-7c7d-4546-b539-c58e8a570b9c"},{"ref":"EID8c9c99ed-be09-451a-9305-6cdf79ec9a47"}]},"parent":{"ref":"EID6ee4cf3c-0175-1000-b71f-545cb462798d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:08:10Z","duration":3029,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:08:10Z","duration":3270,"status":"SKIPPED"},{"id":"EID6ee4dc02-0175-1000-5a3a-43ea55f38f51","testStepResults":{"TestStepResult":[{"id":"EID6ee4dc10-0175-1000-50f2-d51262c9d417","parent":{"ref":"EID6ee4dc02-0175-1000-5a3a-43ea55f38f51"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:08:13Z","duration":2013,"status":"PASSED"},{"id":"EID6ee4dc10-0175-1000-106e-945520df5e60","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4dca9-0175-1000-1a20-95dfa46060c7","parent":{"ref":"EID6ee4dc10-0175-1000-106e-945520df5e60"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dcaa-0175-1000-4ad6-4e842bc74f57","parent":{"ref":"EID6ee4dc10-0175-1000-106e-945520df5e60"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dcaa-0175-1000-0042-c50371f56815","parent":{"ref":"EID6ee4dc10-0175-1000-106e-945520df5e60"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dcaa-0175-1000-e37e-b3e6d063ef3f","parent":{"ref":"EID6ee4dc10-0175-1000-106e-945520df5e60"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa60d2ed8-edc2-4322-830f-2f385dbd6a69"},{"ref":"EIDfc68f265-df0f-4608-866c-bb8b45aa7ea0"},{"ref":"EIDf9bce392-abae-44a2-bfd3-fdd6d8632217"}]},"parent":{"ref":"EID6ee4dc02-0175-1000-5a3a-43ea55f38f51"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:08:13Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:08:13Z","duration":168,"status":"PASSED"},{"id":"EID6ee4dcaa-0175-1000-17c5-00dafd5c8616","testStepResults":{"TestStepResult":[{"id":"EID6ee4dcaa-0175-1000-02a4-fc9f86049436","parent":{"ref":"EID6ee4dcaa-0175-1000-17c5-00dafd5c8616"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:08:13Z","duration":2013,"status":"PASSED"},{"id":"EID6ee4dcaa-0175-1000-0fba-3708a994ceba","parent":{"ref":"EID6ee4dcaa-0175-1000-17c5-00dafd5c8616"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dcaa-0175-1000-ad56-64adbcb34dca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4dd3b-0175-1000-2f85-70318369a841","parent":{"ref":"EID6ee4dcaa-0175-1000-ad56-64adbcb34dca"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dd3b-0175-1000-a121-674e1b37068a","parent":{"ref":"EID6ee4dcaa-0175-1000-ad56-64adbcb34dca"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dd3b-0175-1000-f45d-14026d2258ed","parent":{"ref":"EID6ee4dcaa-0175-1000-ad56-64adbcb34dca"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dd3b-0175-1000-6114-cc9cf91daada","parent":{"ref":"EID6ee4dcaa-0175-1000-ad56-64adbcb34dca"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID333d07ef-2a38-4a70-9f0b-308cb06edb7b"},{"ref":"EID1145f6bf-80ba-448d-8634-945f7c8a48a9"},{"ref":"EID304358df-b20f-458f-92b6-7f7c556f13e0"}]},"parent":{"ref":"EID6ee4dcaa-0175-1000-17c5-00dafd5c8616"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:08:13Z","duration":81,"status":"PASSED"},{"id":"EID6ee4dd3c-0175-1000-c9ef-e97331b03bf9","attachments":{"attachment":{"ref":"EID4b9e9017-da4f-426b-89e7-30c7ba45eeda"}},"parent":{"ref":"EID6ee4dcaa-0175-1000-17c5-00dafd5c8616"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dd4a-0175-1000-4cef-6d8176416907","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4dd67-0175-1000-3023-574f7656d1c9","parent":{"ref":"EID6ee4dd4a-0175-1000-4cef-6d8176416907"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dd67-0175-1000-8c2d-d1c9ccd95e9b","parent":{"ref":"EID6ee4dd4a-0175-1000-4cef-6d8176416907"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4dd67-0175-1000-4956-a8f319c81f62","parent":{"ref":"EID6ee4dd4a-0175-1000-4cef-6d8176416907"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8f5dd82-ed9f-4d6e-80bd-f8d7030c8c16"},{"ref":"EID65a654e3-190c-4ae3-9833-9889f1ffc798"}]},"parent":{"ref":"EID6ee4dcaa-0175-1000-17c5-00dafd5c8616"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:08:14Z","duration":13,"status":"PASSED"}]},"parent":{"ref":"EID6ee4c87a-0175-1000-4e83-8fe6d003fa1a"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:08:13Z","duration":189,"status":"PASSED"}]},"parent":{"ref":"EIDb7995d86-1f04-4896-ae20-fb8b349bc120"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:08:08Z","duration":5357,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EIDa783ba0c-8485-4822-9f79-1a519fcf6fa6","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa783ba0c-8485-4822-9f79-1a519fcf6fa6"}},{"type":"ServiceEndpoint","id":"EID0ff88482-4e19-4d1b-8857-e124837ab916","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9kb3dubG9hZHMva3JtX21hcmllbmVyYXBwb3J0YWdlZWVuaGVkZW5fZXUyMDE4X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EIDdb584cdc-9329-483e-b881-d6df58ebab2d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID110a88a1-23ba-4ed7-8ac9-3dbc1c3bd987","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID110a88a1-23ba-4ed7-8ac9-3dbc1c3bd987"}},{"type":"ServiceEndpoint","id":"EID84c89ff9-d800-49c6-9540-ded5c9ca6f40","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID76d4b698-5510-4103-bf80-e7031ceb7190","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDf30cfab0-d80a-4714-a90c-f1c6fb0ce0ad","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDf30cfab0-d80a-4714-a90c-f1c6fb0ce0ad"}},{"type":"ServiceResponse","id":"EID054f27ae-efb3-4d0f-ba6b-5c6a1030a7df","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID054f27ae-efb3-4d0f-ba6b-5c6a1030a7df"}},{"type":"GetParameter","id":"EIDa1bebe9b-916e-4de8-aa26-137c3570b326","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDea6803b3-bdb3-40f6-a4af-6d4f13e22d80","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDea6803b3-bdb3-40f6-a4af-6d4f13e22d80"}},{"type":"Message","id":"EIDe4531ca2-3102-4f20-9541-734e69223971","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDe4531ca2-3102-4f20-9541-734e69223971"}},{"type":"Message","id":"EID8c9c99ed-be09-451a-9305-6cdf79ec9a47","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID8c9c99ed-be09-451a-9305-6cdf79ec9a47"}},{"type":"GetParameter","id":"EID04191e10-7aae-45cc-8164-103d5090fcd5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDbd870b03-d3aa-4a5b-9ca2-187c21046423","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDbd870b03-d3aa-4a5b-9ca2-187c21046423"}},{"type":"Message","id":"EID6e41b7d2-9324-4db7-8acf-3c925bc420e6","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID6e41b7d2-9324-4db7-8acf-3c925bc420e6"}},{"type":"Message","id":"EID7ca7d974-ec7e-41f7-8b8d-b212f060bf28","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID7ca7d974-ec7e-41f7-8b8d-b212f060bf28"}},{"type":"Message","id":"EIDdd729076-8f5b-47dc-83a4-4e4ef2fc1275","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDdd729076-8f5b-47dc-83a4-4e4ef2fc1275"}},{"type":"ServiceEndpoint","id":"EIDf47382ff-969f-413b-8ad4-5f82ba1fee20","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID1fb50f36-c5e0-44a0-8e53-86642cb137f4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDaadc39f2-0527-4010-9ef4-130319d2cf1d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID62c0c27b-db0c-4a67-a50a-10bfecffa334","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID41238ce4-e21b-4018-9fc0-e0b4756608f0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID22e5aebb-200b-4717-af26-2250aaac554d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9kb3dubG9hZHMva3JtX21hcmllbmVyYXBwb3J0YWdlZWVuaGVkZW5fZXUyMDE4X2dwa2cuemlw"},{"type":"Message","id":"EIDf24fbbc2-df74-46f8-81e4-f666fc0aad23","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDf24fbbc2-df74-46f8-81e4-f666fc0aad23"}},{"type":"ServiceEndpoint","id":"EID22c6a00c-8863-4457-ad94-d12961e3e2f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID52c88cc9-bff6-47e1-b1f8-469b7c81ce60","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID52c88cc9-bff6-47e1-b1f8-469b7c81ce60"}},{"type":"ServiceEndpoint","id":"EIDfc9b24f2-c651-4cea-be49-8c27f05fe202","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4fcc8046-8013-4274-bb5f-45e8fa516e03","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDdb4d0331-772e-48fc-8a99-9f2a1a0dd05f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDdb4d0331-772e-48fc-8a99-9f2a1a0dd05f"}},{"type":"ServiceEndpoint","id":"EID41bf87d1-77eb-4856-b879-8c754b43d1ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID1368d856-8f10-499a-a56a-e6e464f61d10","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID1368d856-8f10-499a-a56a-e6e464f61d10"}},{"type":"ServiceResponse","id":"EID79bda58b-9ea2-495c-9c24-a59fadda1824","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID79bda58b-9ea2-495c-9c24-a59fadda1824"}},{"type":"ServiceResponse","id":"EIDa3ad1307-3db9-4c0d-af3b-3c1aa6b71ba1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa3ad1307-3db9-4c0d-af3b-3c1aa6b71ba1"}},{"type":"Message","id":"EID093d8c5d-24d3-4a6a-a427-9b3bb5e13d6e","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID093d8c5d-24d3-4a6a-a427-9b3bb5e13d6e"}},{"type":"GetParameter","id":"EID14014cc4-8fc7-4e32-9659-52cf7a55f3be","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDcb98eedf-63f3-4c32-903e-fe83aea61f5a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDcb98eedf-63f3-4c32-903e-fe83aea61f5a"}},{"type":"ServiceEndpoint","id":"EID2e3c14ab-c4e5-409b-9d1c-09b2e58febb1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID3d09cb1d-2659-4c32-9b4b-5372380f0a80","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID3d09cb1d-2659-4c32-9b4b-5372380f0a80"}},{"type":"ServiceResponse","id":"EID121dc584-ba46-47b4-b362-31fe0f6dee58","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID121dc584-ba46-47b4-b362-31fe0f6dee58"}},{"type":"Message","id":"EID987998da-0659-4c08-9143-f8625c576f1f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID987998da-0659-4c08-9143-f8625c576f1f"}},{"type":"Message","id":"EID30ec55f3-7fdf-46c9-af93-88acbbad0954","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID30ec55f3-7fdf-46c9-af93-88acbbad0954"}},{"type":"ServiceEndpoint","id":"EID76b849af-b1b8-4c8d-a6e7-3f1a1e468801","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EIDcb8adbb0-2485-4abc-ae6a-3e6292d24490","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDcb8adbb0-2485-4abc-ae6a-3e6292d24490"}},{"type":"ServiceEndpoint","id":"EID348174b3-5625-451b-9f88-dbb561d3158c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDecfade20-7fb1-4267-ab7d-3714ac82f882","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID71babe37-e567-4395-9d34-e5f19963bb6b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID25a39f30-abbc-4997-8f4a-dd5223de1ebe","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID25a39f30-abbc-4997-8f4a-dd5223de1ebe"}},{"type":"ServiceResponse","id":"EID33becb7e-1542-4c0f-a4ba-d36133ebd0df","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID33becb7e-1542-4c0f-a4ba-d36133ebd0df"}},{"type":"ServiceResponse","id":"EID3eab0ede-e0c7-4d70-a868-1a0c25829f84","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID3eab0ede-e0c7-4d70-a868-1a0c25829f84"}},{"type":"GetParameter","id":"EID902968c8-5ceb-41f1-a459-9d768a2f4f90","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID28f54a83-5a01-46e8-8cb5-eb75088e106e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa83da5e3-a78c-420d-862f-b5b80df03abf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa83da5e3-a78c-420d-862f-b5b80df03abf"}},{"type":"ServiceEndpoint","id":"EID1ff1e63d-7b3e-47cb-a2ae-6245cbb9005d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID415d863d-fc45-41fb-8bbd-6cbfe17a932b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID304358df-b20f-458f-92b6-7f7c556f13e0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID25aba0b6-9136-456a-b48b-224d63af2852","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID25aba0b6-9136-456a-b48b-224d63af2852"}},{"type":"ServiceResponse","id":"EIDb3cf8797-6afc-4092-931e-ef9f49050b71","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDb3cf8797-6afc-4092-931e-ef9f49050b71"}},{"type":"Message","id":"EIDf02b9cd6-6b66-4086-96c3-cdd1303cdd3d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDf02b9cd6-6b66-4086-96c3-cdd1303cdd3d"}},{"type":"GetParameter","id":"EID6938e2a0-543d-47d4-bcc4-44f4219caaf9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID8e9aa79d-7136-401d-9659-b8dad2bdcc70","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID8e9aa79d-7136-401d-9659-b8dad2bdcc70"}},{"type":"ServiceEndpoint","id":"EIDf111c326-3ce3-4dba-97d9-73d53dd73505","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID1282f313-b3eb-4663-a280-486e3bb72050","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDf08d5a4e-ecfc-453f-b270-b8dcefaf4e68","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDf08d5a4e-ecfc-453f-b270-b8dcefaf4e68"}},{"type":"ServiceResponse","id":"EIDbe717ada-132f-4a41-b73f-0554c78d2bdf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDbe717ada-132f-4a41-b73f-0554c78d2bdf"}},{"type":"ServiceEndpoint","id":"EID35a2763a-f98a-4f42-84bc-43c6d2ad1298","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID36e75484-0c3c-4cc2-b841-fa58f59fcb5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID36e75484-0c3c-4cc2-b841-fa58f59fcb5d"}},{"type":"GetParameter","id":"EIDa7c6c022-328f-4834-a877-813e0e17073d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID9115763a-7ebc-40a0-92b5-327e707fbb5b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID840de33e-ad4a-439c-806b-ce53ed5eea3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDcc165864-4b53-44bf-896a-0d25ffc0cbf1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDabd393d8-3009-41f4-8f0f-1c903990c57f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDabd393d8-3009-41f4-8f0f-1c903990c57f"}},{"type":"Message","id":"EID494fd063-bf3e-454b-bb54-171a50ec996e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID494fd063-bf3e-454b-bb54-171a50ec996e"}},{"type":"Message","id":"EID71ef6da2-9e77-401d-9234-db16cb71e89e","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID71ef6da2-9e77-401d-9234-db16cb71e89e"}},{"type":"ServiceEndpoint","id":"EID5fb9985d-3e83-4692-98ac-139ed338eb01","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDc2f90a90-ff05-4811-bd6b-44ddfaae1773","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDc2f90a90-ff05-4811-bd6b-44ddfaae1773"}},{"type":"GetParameter","id":"EID9d3860fd-23f9-42ac-8d72-e03b93da04fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDe6b86584-3a77-43ca-b2f5-21c6d1db21bc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDcf50b37a-fcc0-4e4d-8d51-acea33ae8a09","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDcf50b37a-fcc0-4e4d-8d51-acea33ae8a09"}},{"type":"Message","id":"EID5ed427ac-2e67-44fd-b643-a2777669d277","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID5ed427ac-2e67-44fd-b643-a2777669d277"}},{"type":"Message","id":"EID8ad22974-9b4a-4346-9b0f-bdbd77838712","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID8ad22974-9b4a-4346-9b0f-bdbd77838712"}},{"type":"ServiceEndpoint","id":"EIDfb8ff377-f1e6-4942-b146-bf210f5ccbf3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID3e0fccbe-c184-4b6e-b92e-a978e121c998","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID8bd40abd-91d1-49f2-b581-aa0bae192e56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID8bd40abd-91d1-49f2-b581-aa0bae192e56"}},{"type":"ServiceEndpoint","id":"EIDa26c981a-b0e8-4c07-9d40-2459cce3202f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDd0a1522c-d6fb-4790-8f52-fb619c97b8c8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDd0a1522c-d6fb-4790-8f52-fb619c97b8c8"}},{"type":"Message","id":"EIDf1ccd92b-ace2-4786-9146-e5047cf6fb55","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDf1ccd92b-ace2-4786-9146-e5047cf6fb55"}},{"type":"Message","id":"EID38aead60-667c-4743-83e7-6e36f44aef92","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID38aead60-667c-4743-83e7-6e36f44aef92"}},{"type":"ServiceResponse","id":"EIDb76eb447-9a6f-4b37-a4f1-3e92e68850a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDb76eb447-9a6f-4b37-a4f1-3e92e68850a2"}},{"type":"GetParameter","id":"EIDc6e5c9f8-1d2f-4594-953b-4301b09ecf97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDf9bce392-abae-44a2-bfd3-fdd6d8632217","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID72536a25-119c-413b-8f0d-31bf668a6b19","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID72536a25-119c-413b-8f0d-31bf668a6b19"}},{"type":"ServiceEndpoint","id":"EIDa60d2ed8-edc2-4322-830f-2f385dbd6a69","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf518d4c3-6f3b-4fc5-b9b3-70e84f736d88","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID24440713-40bb-40ab-99b2-9b14d71ad1da","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID24440713-40bb-40ab-99b2-9b14d71ad1da"}},{"type":"GetParameter","id":"EIDa13b64b7-ba9c-4855-ad35-58516c3fb852","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID082c1e5d-bb6b-4f24-87c1-c190ecce7b96","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID082c1e5d-bb6b-4f24-87c1-c190ecce7b96"}},{"type":"ServiceResponse","id":"EID6ed5485c-66e0-46bd-be75-07ccf3fc52b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID6ed5485c-66e0-46bd-be75-07ccf3fc52b6"}},{"type":"Message","id":"EID799dce4a-d215-41d9-810c-4f23dabea0f5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID799dce4a-d215-41d9-810c-4f23dabea0f5"}},{"type":"Message","id":"EID5e0689f1-f7eb-4939-9498-27a704b2965b","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID5e0689f1-f7eb-4939-9498-27a704b2965b"}},{"type":"ServiceResponse","id":"EID3e680204-ecfd-4c2f-ae57-adcd54a5d6f2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID3e680204-ecfd-4c2f-ae57-adcd54a5d6f2"}},{"type":"Message","id":"EIDab5ee120-b323-4e95-a0c5-fa41f0e982e2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDab5ee120-b323-4e95-a0c5-fa41f0e982e2"}},{"type":"GetParameter","id":"EID74410164-588f-4ba7-aabd-f3a1bb6fd2a8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3ba29d8a-3ced-4797-a7dd-d58d28538116","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID7e488551-0b1d-437e-b550-af4accf1c1cc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID1799e73f-c64d-40c4-b8f2-e88df3b46dea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa6de145f-6707-4359-b672-912eb0a1c9eb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa6de145f-6707-4359-b672-912eb0a1c9eb"}},{"type":"Message","id":"EID012d920a-4367-4b5f-92c0-afd0880d9307","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID012d920a-4367-4b5f-92c0-afd0880d9307"}},{"type":"ServiceResponse","id":"EID63e7f85b-a344-4be1-925f-e2f335cacd68","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID63e7f85b-a344-4be1-925f-e2f335cacd68"}},{"type":"ServiceEndpoint","id":"EID7bf7e62e-3fdc-49a1-adc7-b47898fc93d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID3d965781-f3fc-45fd-8369-bbb70ac6f37b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID4f48280e-7b7c-4b2b-9926-1bb61b75c30b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID7297a4bc-5860-48d1-bbbe-e216009a0fb2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID33ab6579-80e0-4633-8784-ec6a865b7fe4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDffce7329-9a86-4df3-aca8-0d81cc099001","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDce97cfa4-4f08-48b6-98d2-5d4a02badf70","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5d89bc14-e66a-4b9f-a682-185ec68f8fc0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID5aa60040-b29b-40f5-bc9f-0580f7325789","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDbd8777a8-9b70-429f-b834-f6a72e05588e","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDbd8777a8-9b70-429f-b834-f6a72e05588e"}},{"type":"Message","id":"EID87fc9588-f21e-4dd2-9c8f-4fb2a960d719","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID87fc9588-f21e-4dd2-9c8f-4fb2a960d719"}},{"type":"ServiceEndpoint","id":"EID7014511f-bb77-4700-ac84-1950117b9e04","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID154936d6-ad8c-400c-bd3a-c61d56cf2dea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EIDfc68f265-df0f-4608-866c-bb8b45aa7ea0","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDfc68f265-df0f-4608-866c-bb8b45aa7ea0"}},{"type":"ServiceResponse","id":"EIDfe6581c7-9a1b-4251-947e-66d45de40314","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDfe6581c7-9a1b-4251-947e-66d45de40314"}},{"type":"GetParameter","id":"EID65a654e3-190c-4ae3-9833-9889f1ffc798","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID605af5f0-9c36-4804-92d4-d058941985f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe7b6f0a8-4995-42ee-b0c0-dbb541a48de0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDe7b6f0a8-4995-42ee-b0c0-dbb541a48de0"}},{"type":"ServiceResponse","id":"EID43162ca5-f23f-4c4d-907c-fb1333876033","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID43162ca5-f23f-4c4d-907c-fb1333876033"}},{"type":"GetParameter","id":"EIDce457d39-176d-4b2f-b0d6-1e6c29e64044","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID5b48eb09-9b60-4d3a-87ce-abc47e09f0f4","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID5b48eb09-9b60-4d3a-87ce-abc47e09f0f4"}},{"type":"GetParameter","id":"EID961f7bdc-b7be-462d-9089-f634cf4a369c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID48a4b19e-b453-4330-817e-0bcc88f613a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID9e3b0aa3-be73-4816-99d9-05073c1ffdda","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID9e3b0aa3-be73-4816-99d9-05073c1ffdda"}},{"type":"ServiceEndpoint","id":"EID0d05f053-30a2-4d15-a718-860b8cc3d9bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDb7603a8e-915f-48a5-aae7-163cc65fa22f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDb4424c1c-03d1-4c0e-9e9a-b58a294edcec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID333d07ef-2a38-4a70-9f0b-308cb06edb7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID8cff9e02-b80c-402b-8c22-1205713a8431","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID8cff9e02-b80c-402b-8c22-1205713a8431"}},{"type":"GetParameter","id":"EIDca2bc8c3-d9d4-4f6b-bd55-29f8064c3799","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EIDa3a35ebe-c7c3-4832-8b85-a1dc321295ec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa3a35ebe-c7c3-4832-8b85-a1dc321295ec"}},{"type":"ServiceResponse","id":"EID20203f80-6acf-425a-9e52-79e87d772bfb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID20203f80-6acf-425a-9e52-79e87d772bfb"}},{"type":"ServiceResponse","id":"EID1145f6bf-80ba-448d-8634-945f7c8a48a9","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID1145f6bf-80ba-448d-8634-945f7c8a48a9"}},{"type":"GetParameter","id":"EIDe1fe4858-7407-42ef-b487-6701bfb405c9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID9df18f6f-bd66-4048-bf8e-edba8834d498","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID023ceda5-0daf-4be9-8c4a-179f41371eeb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDaf602d04-71b3-44c8-a602-160af385006c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDaf602d04-71b3-44c8-a602-160af385006c"}},{"type":"ServiceEndpoint","id":"EIDbeae5212-3494-4b93-a1bd-81bdc758ca1f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa1cf80fe-6d3e-4a0b-baf1-d1d9666862ba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa1cf80fe-6d3e-4a0b-baf1-d1d9666862ba"}},{"type":"ServiceEndpoint","id":"EID597e933e-75e6-430c-9f54-5a3824d5aa66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDc348f2e5-bd6d-4820-ae2c-88c34665b999","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDc348f2e5-bd6d-4820-ae2c-88c34665b999"}},{"type":"ServiceEndpoint","id":"EIDd8f5dd82-ed9f-4d6e-80bd-f8d7030c8c16","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID04a582f3-dbcd-4922-b9af-3778d56cbd21","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID04a582f3-dbcd-4922-b9af-3778d56cbd21"}},{"type":"Message","id":"EID9f654110-1a24-43db-9482-5dc659e00b80","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID9f654110-1a24-43db-9482-5dc659e00b80"}},{"type":"GetParameter","id":"EID1c8bb413-4e6a-4230-9810-5976848059d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDe31a5291-c4d0-40cb-b509-d665acd3b207","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDe31a5291-c4d0-40cb-b509-d665acd3b207"}},{"type":"ServiceEndpoint","id":"EID1ab00c28-fd77-41bf-9115-1fb972f075ed","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDb1d433d6-2f73-4f8d-a706-33774aaf0c9c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID4b9e9017-da4f-426b-89e7-30c7ba45eeda","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID4b9e9017-da4f-426b-89e7-30c7ba45eeda"}},{"type":"ServiceEndpoint","id":"EIDc7e16e5b-c819-4605-a592-7b18ef9c0ac3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID5853f0c2-b084-4e20-830e-5f7dcc9db042","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1e46b1f2-c0bc-4915-b12d-3646060eef77","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID1e46b1f2-c0bc-4915-b12d-3646060eef77"}},{"type":"ServiceResponse","id":"EIDc9f82705-24ca-44a2-8263-873be7ff7101","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDc9f82705-24ca-44a2-8263-873be7ff7101"}},{"type":"GetParameter","id":"EIDf1cb77f7-ff63-4dd6-ab52-b39821266f99","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDed9b1f4d-3145-47b5-ad85-9b9d7f19c12b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDed9b1f4d-3145-47b5-ad85-9b9d7f19c12b"}},{"type":"ServiceResponse","id":"EID09a95fb9-9a5c-4114-bd6e-dcc4d4a78043","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID09a95fb9-9a5c-4114-bd6e-dcc4d4a78043"}},{"type":"ServiceEndpoint","id":"EID392d5967-680f-44ab-a5e4-5851cff0f5ec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe86ff05a-65eb-43e2-9a6e-385958f28247","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDe86ff05a-65eb-43e2-9a6e-385958f28247"}},{"type":"ServiceResponse","id":"EIDe58364bf-c470-438f-a2a4-b98acf960408","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDe58364bf-c470-438f-a2a4-b98acf960408"}},{"type":"Message","id":"EIDd69495ad-42f1-40ff-babc-3b0b8fdcdcd2","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDd69495ad-42f1-40ff-babc-3b0b8fdcdcd2"}},{"type":"GetParameter","id":"EIDcea22597-2597-41c1-ad15-1640ff8a2fa8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID20c0e637-1641-4f7e-a3c7-a8444cd6dcc0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID5fe80150-5ed0-416c-be83-1265370927ba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID5fe80150-5ed0-416c-be83-1265370927ba"}},{"type":"Message","id":"EIDf47f537c-f2d9-448d-9894-9e93dc6b9db6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDf47f537c-f2d9-448d-9894-9e93dc6b9db6"}},{"type":"GetParameter","id":"EID81f69c45-0dd0-48b6-8c54-89fdc19c6582","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID1a36e236-8819-4392-900a-48bb9dd3878e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID1a36e236-8819-4392-900a-48bb9dd3878e"}},{"type":"ServiceEndpoint","id":"EID42772194-67b7-4219-aeaf-5d0d30d81db3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID171c5da5-511f-4100-8353-9ae4a95798e3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID171c5da5-511f-4100-8353-9ae4a95798e3"}},{"type":"ServiceEndpoint","id":"EIDc13a80b3-3d06-4e02-bd8e-7248c56d75f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDeeed11ca-69b0-4fd4-b534-3022b7a2eb92","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDeeed11ca-69b0-4fd4-b534-3022b7a2eb92"}},{"type":"ServiceResponse","id":"EIDcd7d057e-fd33-4b80-8e46-e339667fe652","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDcd7d057e-fd33-4b80-8e46-e339667fe652"}},{"type":"Message","id":"EIDe55a5b41-ae93-4123-92c1-aa275a98d842","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDe55a5b41-ae93-4123-92c1-aa275a98d842"}},{"type":"ServiceEndpoint","id":"EIDd7f01001-3771-4a23-95ec-3388792fa7dd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID86121f6d-a282-4305-92cd-6ad41a954332","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID86121f6d-a282-4305-92cd-6ad41a954332"}},{"type":"ServiceEndpoint","id":"EID876b7a60-c86c-40b1-8fc2-30b49c3c0557","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID07cc556b-7331-459f-ae26-a95c754051bb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID601dd2a5-4619-49f1-8407-f5528e1a1936","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID601dd2a5-4619-49f1-8407-f5528e1a1936"}},{"type":"Message","id":"EID0e36c725-7647-46d0-9ef0-63f8f3015aca","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID0e36c725-7647-46d0-9ef0-63f8f3015aca"}},{"type":"ServiceEndpoint","id":"EIDc372c928-e548-474d-89cc-7ff1341f533f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDd395f74c-cb2a-46df-8233-9f319500bbed","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDc3a20415-0645-40fc-990d-58226f796fab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"LogFile","id":"EID569037f4-b010-4ebf-a61f-b35a1abe8e8c","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID569037f4-b010-4ebf-a61f-b35a1abe8e8c"}},{"type":"Message","id":"EID98112b1d-2667-474a-b7ff-09f932c0de26","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID98112b1d-2667-474a-b7ff-09f932c0de26"}},{"type":"ServiceEndpoint","id":"EID90952223-5242-44ab-b7ba-be6753cf47f6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa18421e2-702b-4247-b0a1-b07e49a00524","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDa18421e2-702b-4247-b0a1-b07e49a00524"}},{"type":"ServiceResponse","id":"EIDc27aea2c-c5bd-4c66-b028-136bc652c29b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDc27aea2c-c5bd-4c66-b028-136bc652c29b"}},{"type":"GetParameter","id":"EID1003a81e-2bea-487d-8e8d-f779cf4cebdd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID7d87df33-82a7-4a4d-8337-b3bbd565f76f","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID7d87df33-82a7-4a4d-8337-b3bbd565f76f"}},{"type":"ServiceEndpoint","id":"EID7aa590b5-1035-4bf7-a500-5e36b0a46d68","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID1f4e97aa-0fac-4a4b-abc5-c0d981ce01cd","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID1f4e97aa-0fac-4a4b-abc5-c0d981ce01cd"}},{"type":"Message","id":"EIDac2b60fd-7c7d-4546-b539-c58e8a570b9c","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EIDac2b60fd-7c7d-4546-b539-c58e8a570b9c"}},{"type":"ServiceEndpoint","id":"EIDed6e0a53-577d-45af-a58c-e8bba19fed7d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID94531458-8c15-4755-a3c7-da957c3866ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID53233b6a-145c-4275-8e35-2768a275b14b","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7995d86-1f04-4896-ae20-fb8b349bc120/Attachments/EID53233b6a-145c-4275-8e35-2768a275b14b"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:07:11Z","duration":62854,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:08:22.551 [print] EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:08:22.551 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:08:22.551 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:08:22.551 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:08:22.551 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/b81dd0bc-c9b8-4759-b13a-e7b8aac238d2.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:08:22.551 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/b81dd0bc-c9b8-4759-b13a-e7b8aac238d2.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:08:22.551 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb81dd0bc-c9b8-4759-b13a-e7b8aac238d2/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.006
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.004
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.002
* def Collections = Java.type('java.util.Collections') 0.001
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:08:22.571 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:08:22.571 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.001
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.417
* print "testing url:" + metadata.url 0.000
11:13:59.333 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.416
11:13:59.333 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:59.749 response time in milliseconds: 415.74
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:13:59 GMT
1 < ETag: "18178-5af58a64e98b9-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.411
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.411
11:13:59.756 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:00.165 response time in milliseconds: 408.59
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:00 GMT
1 < ETag: "18178-5af58ad4f78a0-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:14:00.166 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
40.409
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:34.822 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 11.734
11:16:34.824 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}

11:16:46.546 response time in milliseconds: 10966.12
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:45 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:16:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5.json","testRuns":{"TestRun":{"id":"EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:42.403Z","testTasks":{"TestTask":{"id":"EID6e255705-1b2d-41fb-8071-26515ee04741","parent":{"ref":"EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID8ed0c556-b459-4008-b1d1-cb5bc7b13771"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID8ed0c556-b459-4008-b1d1-cb5bc7b13771","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:16:35.266Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:16:39.285Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:16:46.556 [print] EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:46.557 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:46.557 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:16:46.557 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:46.557 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:16:46.557 [print] statuspath TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5
* print 'progresspath ', progresspath 0.000
11:16:46.557 [print] progresspath  TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
Given path progresspath 0.000
When method GET 0.519
11:16:46.559 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:47.077 response time in milliseconds: 518.01
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:16:47 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["28.10.2020 11:16:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:42 UTC 2020)","28.10.2020 11:16:42 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:42 - Preparing 1 Test Task:","28.10.2020 11:16:42 -  TestTask 1 (6e255705-1b2d-41fb-8071-26515ee04741)","28.10.2020 11:16:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:42 -  with parameters: ","28.10.2020 11:16:42 - etf.testcases = *","28.10.2020 11:16:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:42 - Setting state to CREATED","28.10.2020 11:16:42 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:43 - Starting TestRun.51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5 at 2020-10-28T11:16:44Z","28.10.2020 11:16:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:44 - Project Properties: ","28.10.2020 11:16:44 - etf.testcases - * ","28.10.2020 11:16:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:16:44 - username -  ","28.10.2020 11:16:44 - authUser -  ","28.10.2020 11:16:44 - authMethod - basic ","28.10.2020 11:16:44 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:16:47.077 [print] {
  "val": "25",
  "max": "26",
  "log": [
    "28.10.2020 11:16:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:42 UTC 2020)",
    "28.10.2020 11:16:42 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:16:42 - Preparing 1 Test Task:",
    "28.10.2020 11:16:42 -  TestTask 1 (6e255705-1b2d-41fb-8071-26515ee04741)",
    "28.10.2020 11:16:42 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:16:42 -  with parameters: ",
    "28.10.2020 11:16:42 - etf.testcases = *",
    "28.10.2020 11:16:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:16:42 - Setting state to CREATED",
    "28.10.2020 11:16:42 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:16:43 - Starting TestRun.51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5 at 2020-10-28T11:16:44Z",
    "28.10.2020 11:16:44 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:16:44 - Project Properties: ",
    "28.10.2020 11:16:44 - etf.testcases - * ",
    "28.10.2020 11:16:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ",
    "28.10.2020 11:16:44 - username -  ",
    "28.10.2020 11:16:44 - authUser -  ",
    "28.10.2020 11:16:44 - authMethod - basic ",
    "28.10.2020 11:16:44 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 24.325
11:16:47.078 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:47.591 response time in milliseconds: 512.43
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:16:47 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:16:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:42 UTC 2020)","28.10.2020 11:16:42 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:42 - Preparing 1 Test Task:","28.10.2020 11:16:42 -  TestTask 1 (6e255705-1b2d-41fb-8071-26515ee04741)","28.10.2020 11:16:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:42 -  with parameters: ","28.10.2020 11:16:42 - etf.testcases = *","28.10.2020 11:16:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:42 - Setting state to CREATED","28.10.2020 11:16:42 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:43 - Starting TestRun.51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5 at 2020-10-28T11:16:44Z","28.10.2020 11:16:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:44 - Project Properties: ","28.10.2020 11:16:44 - etf.testcases - * ","28.10.2020 11:16:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:16:44 - username -  ","28.10.2020 11:16:44 - authUser -  ","28.10.2020 11:16:44 - authMethod - basic ","28.10.2020 11:16:44 - TestRunTask initialized"]}

11:16:47.591 retry condition not satisfied: response.val == response.max
11:16:47.591 sleeping before retry #1
11:16:52.592 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:53.114 response time in milliseconds: 522.28
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:16:53 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"90","max":"91","log":["28.10.2020 11:16:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:42 UTC 2020)","28.10.2020 11:16:42 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:42 - Preparing 1 Test Task:","28.10.2020 11:16:42 -  TestTask 1 (6e255705-1b2d-41fb-8071-26515ee04741)","28.10.2020 11:16:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:42 -  with parameters: ","28.10.2020 11:16:42 - etf.testcases = *","28.10.2020 11:16:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:42 - Setting state to CREATED","28.10.2020 11:16:42 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:43 - Starting TestRun.51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5 at 2020-10-28T11:16:44Z","28.10.2020 11:16:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:44 - Project Properties: ","28.10.2020 11:16:44 - etf.testcases - * ","28.10.2020 11:16:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:16:44 - username -  ","28.10.2020 11:16:44 - authUser -  ","28.10.2020 11:16:44 - authMethod - basic ","28.10.2020 11:16:44 - TestRunTask initialized","28.10.2020 11:16:52 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:16:53.115 retry condition not satisfied: response.val == response.max
11:16:53.115 sleeping before retry #2
11:16:58.116 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:58.868 response time in milliseconds: 751.18
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:16:58 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"160","max":"161","log":["28.10.2020 11:16:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:42 UTC 2020)","28.10.2020 11:16:42 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:42 - Preparing 1 Test Task:","28.10.2020 11:16:42 -  TestTask 1 (6e255705-1b2d-41fb-8071-26515ee04741)","28.10.2020 11:16:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:42 -  with parameters: ","28.10.2020 11:16:42 - etf.testcases = *","28.10.2020 11:16:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:42 - Setting state to CREATED","28.10.2020 11:16:42 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:43 - Starting TestRun.51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5 at 2020-10-28T11:16:44Z","28.10.2020 11:16:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:44 - Project Properties: ","28.10.2020 11:16:44 - etf.testcases - * ","28.10.2020 11:16:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:16:44 - username -  ","28.10.2020 11:16:44 - authUser -  ","28.10.2020 11:16:44 - authMethod - basic ","28.10.2020 11:16:44 - TestRunTask initialized","28.10.2020 11:16:52 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:16:58.873 retry condition not satisfied: response.val == response.max
11:16:58.873 sleeping before retry #3
11:17:03.874 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:04.389 response time in milliseconds: 513.85
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:17:04 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:16:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:42 UTC 2020)","28.10.2020 11:16:42 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:42 - Preparing 1 Test Task:","28.10.2020 11:16:42 -  TestTask 1 (6e255705-1b2d-41fb-8071-26515ee04741)","28.10.2020 11:16:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:42 -  with parameters: ","28.10.2020 11:16:42 - etf.testcases = *","28.10.2020 11:16:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:42 - Setting state to CREATED","28.10.2020 11:16:42 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:43 - Starting TestRun.51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5 at 2020-10-28T11:16:44Z","28.10.2020 11:16:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:44 - Project Properties: ","28.10.2020 11:16:44 - etf.testcases - * ","28.10.2020 11:16:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","28.10.2020 11:16:44 - username -  ","28.10.2020 11:16:44 - authUser -  ","28.10.2020 11:16:44 - authMethod - basic ","28.10.2020 11:16:44 - TestRunTask initialized","28.10.2020 11:16:52 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:17:00 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:17:00 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:17:02 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:17:04.389 retry condition not satisfied: response.val == response.max
11:17:04.389 sleeping before retry #4
11:17:09.390 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:11.403 response time in milliseconds: 2012.47
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:17:11 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:17:11.403 retry condition satisfied
* print response 0.000
11:17:11.403 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.820
11:17:11.404 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:17:15.219 response time in milliseconds: 2746.46
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:17:14 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Wed, 28 Oct 2020 11:17:06 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5.json","testRuns":{"TestRun":{"id":"EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:42.403Z","testTasks":{"TestTask":{"id":"EID6e255705-1b2d-41fb-8071-26515ee04741","parent":{"ref":"EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID8ed0c556-b459-4008-b1d1-cb5bc7b13771"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID8ed0c556-b459-4008-b1d1-cb5bc7b13771","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:16:35.266Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:16:39.285Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe","testObject":{"ref":"EID8ed0c556-b459-4008-b1d1-cb5bc7b13771"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eeca922-0175-1000-6fed-d03460731922","testCaseResults":{"TestCaseResult":[{"id":"EID6eeca923-0175-1000-bdd6-46ffab4605f6","testStepResults":{"TestStepResult":[{"id":"EID6eeca924-0175-1000-6ac7-93255437d4eb","parent":{"ref":"EID6eeca923-0175-1000-bdd6-46ffab4605f6"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:16:44Z","duration":27,"status":"PASSED"},{"id":"EID6eeca93f-0175-1000-9c18-3ac20f67b80d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecaa2e-0175-1000-7e64-a3f8bf04137b","parent":{"ref":"EID6eeca93f-0175-1000-9c18-3ac20f67b80d"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecaa2e-0175-1000-b675-b643e6a9296a","parent":{"ref":"EID6eeca93f-0175-1000-9c18-3ac20f67b80d"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecaa2e-0175-1000-0c92-59a137e997d1","parent":{"ref":"EID6eeca93f-0175-1000-9c18-3ac20f67b80d"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecaa2e-0175-1000-2e30-4414298ec1b2","parent":{"ref":"EID6eeca93f-0175-1000-9c18-3ac20f67b80d"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd30d0301-0040-4f2c-8451-59e5370aa6d3"},{"ref":"EIDfae7e492-6098-4f26-8ffb-088e3a6cc7a2"},{"ref":"EID43e8bcf9-1461-4f7d-abf0-13b3206a543d"}]},"parent":{"ref":"EID6eeca923-0175-1000-bdd6-46ffab4605f6"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:16:44Z","duration":93,"status":"PASSED"}]},"parent":{"ref":"EID6eeca922-0175-1000-6fed-d03460731922"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:16:44Z","duration":276,"status":"PASSED"},{"id":"EID6eecaa38-0175-1000-1cab-8d5a10dcd427","testStepResults":{"TestStepResult":{"id":"EID6eecaa38-0175-1000-2962-f9becec73791","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecaac2-0175-1000-342b-2869f25af79d","parent":{"ref":"EID6eecaa38-0175-1000-2962-f9becec73791"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecaac2-0175-1000-1427-9ea98c4f9101","parent":{"ref":"EID6eecaa38-0175-1000-2962-f9becec73791"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecaac2-0175-1000-21ed-590864b0b219","parent":{"ref":"EID6eecaa38-0175-1000-2962-f9becec73791"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID137b68e3-ea96-4377-992c-2104e735a40b"},{"ref":"EID5414f3fa-6bf5-4061-9059-3f51a9e5b99d"},{"ref":"EIDa5d23045-e0f1-4f1d-89d9-7dc8cc56bbb3"}]},"parent":{"ref":"EID6eecaa38-0175-1000-1cab-8d5a10dcd427"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:16:45Z","duration":58,"status":"PASSED"}},"parent":{"ref":"EID6eeca922-0175-1000-6fed-d03460731922"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:16:45Z","duration":138,"status":"PASSED"}]},"parent":{"ref":"EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:16:44Z","duration":427,"status":"PASSED"},{"id":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc","testCaseResults":{"TestCaseResult":[{"id":"EID6eecaacd-0175-1000-361a-a29ad78ed268","testStepResults":{"TestStepResult":[{"id":"EID6eecaacd-0175-1000-32e4-3aafa0501a4f","parent":{"ref":"EID6eecaacd-0175-1000-361a-a29ad78ed268"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:16:45Z","duration":58,"status":"PASSED"},{"id":"EID6eecaacd-0175-1000-28b7-3d2733c822a9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecabcf-0175-1000-1246-30b1110e4080","parent":{"ref":"EID6eecaacd-0175-1000-28b7-3d2733c822a9"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecabcf-0175-1000-f184-78045ae626ea","parent":{"ref":"EID6eecaacd-0175-1000-28b7-3d2733c822a9"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecabcf-0175-1000-aae3-4625e6981d31","parent":{"ref":"EID6eecaacd-0175-1000-28b7-3d2733c822a9"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecabcf-0175-1000-6489-13cfd2f8a213","parent":{"ref":"EID6eecaacd-0175-1000-28b7-3d2733c822a9"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"},{"id":"EID6eecabcf-0175-1000-b632-31c8f5871b95","parent":{"ref":"EID6eecaacd-0175-1000-28b7-3d2733c822a9"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:16:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID02c989f8-6aba-4144-9ca0-f926b299372d"},{"ref":"EID813ced29-4ea9-48da-a60b-6beda427b8ad"},{"ref":"EID6b9a60cc-001b-49bc-8bb3-3071aa2d6885"}]},"parent":{"ref":"EID6eecaacd-0175-1000-361a-a29ad78ed268"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:16:45Z","duration":117,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:16:45Z","duration":301,"status":"PASSED"},{"id":"EID6eecabfa-0175-1000-1270-c7a604de0502","testStepResults":{"TestStepResult":[{"id":"EID6eecabfa-0175-1000-d62b-93605eddc903","attachments":{"attachment":[{"ref":"EIDcb33ea8b-529b-4b3e-8b5c-6b5e413962ea"},{"ref":"EID9a47608d-fced-4180-8844-2c91f68393d9"}]},"parent":{"ref":"EID6eecabfa-0175-1000-1270-c7a604de0502"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:16:45Z","duration":130,"status":"PASSED"},{"id":"EID6eecacae-0175-1000-b242-658f16812bf7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecadc4-0175-1000-49eb-6f53d2406afa","parent":{"ref":"EID6eecacae-0175-1000-b242-658f16812bf7"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecadc4-0175-1000-edef-52385b6b0e32","parent":{"ref":"EID6eecacae-0175-1000-b242-658f16812bf7"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecadc4-0175-1000-e2b6-4f8398127164","parent":{"ref":"EID6eecacae-0175-1000-b242-658f16812bf7"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecadc4-0175-1000-7436-43e54acd43da","parent":{"ref":"EID6eecacae-0175-1000-b242-658f16812bf7"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa9b23f74-86cb-4e38-b4aa-b4b35d585a93"},{"ref":"EID2e9c56f3-132b-4e31-9ac9-93df5b0cee1c"},{"ref":"EIDab358153-b426-4a44-8fca-08d1a8b06bbc"}]},"parent":{"ref":"EID6eecabfa-0175-1000-1270-c7a604de0502"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:16:45Z","duration":114,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:16:45Z","duration":467,"status":"PASSED"},{"id":"EID6eecadce-0175-1000-60ef-1d566a82491e","testStepResults":{"TestStepResult":[{"id":"EID6eecadce-0175-1000-8b7e-7ca4bd148621","attachments":{"attachment":[{"ref":"EID71188997-0c9e-4ca2-82f6-aaae5c3f8cf5"},{"ref":"EID48f84cbb-d596-4fa3-a153-0a7de1e57e82"}]},"parent":{"ref":"EID6eecadce-0175-1000-60ef-1d566a82491e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:16:46Z","duration":124,"status":"PASSED"},{"id":"EID6eecae71-0175-1000-a3c8-090ecd2152b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecaf81-0175-1000-59ef-f3c722608da4","parent":{"ref":"EID6eecae71-0175-1000-a3c8-090ecd2152b8"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecaf81-0175-1000-484a-1263c83e0179","parent":{"ref":"EID6eecae71-0175-1000-a3c8-090ecd2152b8"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecaf81-0175-1000-b260-228c5130f317","parent":{"ref":"EID6eecae71-0175-1000-a3c8-090ecd2152b8"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecaf81-0175-1000-49f4-0650fc1266a5","parent":{"ref":"EID6eecae71-0175-1000-a3c8-090ecd2152b8"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecaf81-0175-1000-6af2-681d3f6cf621","parent":{"ref":"EID6eecae71-0175-1000-a3c8-090ecd2152b8"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3da24fb-c559-465a-99f8-097a8a5acaa1"},{"ref":"EIDc80e9955-7b64-4865-b2e2-8a5878cf3375"},{"ref":"EID9a81b34e-1b7c-4044-bd3d-f8b3c675a57d"}]},"parent":{"ref":"EID6eecadce-0175-1000-60ef-1d566a82491e"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:16:46Z","duration":176,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:16:46Z","duration":444,"status":"PASSED"},{"id":"EID6eecaf8b-0175-1000-d9eb-0627b839ad01","testStepResults":{"TestStepResult":[{"id":"EID6eecaf8b-0175-1000-3cc6-38bf59e64e84","attachments":{"attachment":[{"ref":"EIDb4d4ea2d-1f82-425f-9747-ace0ffcd3dfb"},{"ref":"EID14b40385-8648-4b9a-8113-0dc59834653f"}]},"parent":{"ref":"EID6eecaf8b-0175-1000-d9eb-0627b839ad01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:16:46Z","duration":117,"status":"PASSED"},{"id":"EID6eecb027-0175-1000-2ec3-ebebba034896","parent":{"ref":"EID6eecaf8b-0175-1000-d9eb-0627b839ad01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecb027-0175-1000-8afc-8c438dd56b80","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecb0d4-0175-1000-578e-1fdf0062deb5","parent":{"ref":"EID6eecb027-0175-1000-8afc-8c438dd56b80"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecb0d4-0175-1000-8601-3fc466cfc579","parent":{"ref":"EID6eecb027-0175-1000-8afc-8c438dd56b80"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecb0d4-0175-1000-c63d-b358a2a82a3b","parent":{"ref":"EID6eecb027-0175-1000-8afc-8c438dd56b80"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"},{"id":"EID6eecb0d4-0175-1000-359c-5e8cb89f25d7","parent":{"ref":"EID6eecb027-0175-1000-8afc-8c438dd56b80"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:16:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb4b3636b-7d2d-4307-856a-cbca46b727c6"},{"ref":"EID92d0335d-82b0-4fdf-a3a9-a4dfab87eac2"},{"ref":"EID093d19f3-38a0-4d01-a217-f1fd0f92a164"}]},"parent":{"ref":"EID6eecaf8b-0175-1000-d9eb-0627b839ad01"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:16:46Z","duration":49,"status":"PASSED"},{"id":"EID6eecb0d4-0175-1000-091b-d4da281a6016","attachments":{"attachment":{"ref":"EIDdce0ea97-0678-407e-909a-270d59dd10e6"}},"parent":{"ref":"EID6eecaf8b-0175-1000-d9eb-0627b839ad01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:16:46Z","duration":1,"status":"PASSED"},{"id":"EID6eecb0e0-0175-1000-841a-8657216b092d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecb249-0175-1000-15c1-f161a646d807","parent":{"ref":"EID6eecb0e0-0175-1000-841a-8657216b092d"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb249-0175-1000-5e1a-dabaa4137f9c","parent":{"ref":"EID6eecb0e0-0175-1000-841a-8657216b092d"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb249-0175-1000-3b95-1700128afda9","parent":{"ref":"EID6eecb0e0-0175-1000-841a-8657216b092d"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb24a-0175-1000-0084-3be5aeaf2f79","parent":{"ref":"EID6eecb0e0-0175-1000-841a-8657216b092d"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb24a-0175-1000-c4fc-6ca9255dcdb1","parent":{"ref":"EID6eecb0e0-0175-1000-841a-8657216b092d"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID68a17673-ae9e-40f3-b3f9-1cc6e6e21712"},{"ref":"EID1444a3fc-cd1e-4808-b92d-f62748dd2774"},{"ref":"EID0f567600-4ac6-4aa2-98e0-81b3ca2b87a2"}]},"parent":{"ref":"EID6eecaf8b-0175-1000-d9eb-0627b839ad01"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:16:46Z","duration":155,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:16:46Z","duration":703,"status":"PASSED"},{"id":"EID6eecb24a-0175-1000-380a-b488fc145e2d","testStepResults":{"TestStepResult":[{"id":"EID6eecb24a-0175-1000-06e6-d34adb5d6376","attachments":{"attachment":[{"ref":"EID0b55670d-2e08-4e92-a5a8-260ad063f830"},{"ref":"EIDbaea6461-00f7-4f2d-8fea-823ac272efef"}]},"parent":{"ref":"EID6eecb24a-0175-1000-380a-b488fc145e2d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:16:47Z","duration":141,"status":"PASSED"},{"id":"EID6eecb36b-0175-1000-6ec9-5312eb6f235d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecb3ee-0175-1000-fae1-041fbd695ab4","parent":{"ref":"EID6eecb36b-0175-1000-6ec9-5312eb6f235d"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb3ef-0175-1000-2c03-e22194652a4a","parent":{"ref":"EID6eecb36b-0175-1000-6ec9-5312eb6f235d"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb3ef-0175-1000-f23e-c0475e5b098c","parent":{"ref":"EID6eecb36b-0175-1000-6ec9-5312eb6f235d"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"},{"id":"EID6eecb3ef-0175-1000-1367-34361b69a579","parent":{"ref":"EID6eecb36b-0175-1000-6ec9-5312eb6f235d"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:16:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0709dc92-79fa-4e65-9242-2feec5370f62"},{"ref":"EIDf777ad0d-5df5-406f-9b0e-caab97be222b"},{"ref":"EID99f03d28-cbc3-488e-9b9e-c57d13d1c40e"}]},"parent":{"ref":"EID6eecb24a-0175-1000-380a-b488fc145e2d"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:16:47Z","duration":44,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:16:47Z","duration":421,"status":"PASSED"},{"id":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce","testStepResults":{"TestStepResult":[{"id":"EID6eecb3ef-0175-1000-6355-f6a68eea5896","attachments":{"attachment":[{"ref":"EIDf41ba235-74e3-44a0-adac-ad92f9f0f6ac"},{"ref":"EIDf4a626ee-09be-4f1d-9cb6-2e670bf02554"}]},"parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:16:47Z","duration":251,"status":"PASSED"},{"id":"EID6eecb57d-0175-1000-27bb-7c9592d2307b","parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"},{"id":"EID6eecb57d-0175-1000-883b-3fd8fd28dc94","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecb809-0175-1000-7c34-14120585e684","parent":{"ref":"EID6eecb57d-0175-1000-883b-3fd8fd28dc94"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"},{"id":"EID6eecb809-0175-1000-24bb-4cacfa218219","parent":{"ref":"EID6eecb57d-0175-1000-883b-3fd8fd28dc94"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"},{"id":"EID6eecb809-0175-1000-6991-fd6e6bccedd8","parent":{"ref":"EID6eecb57d-0175-1000-883b-3fd8fd28dc94"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"},{"id":"EID6eecb809-0175-1000-2f2e-213997137619","parent":{"ref":"EID6eecb57d-0175-1000-883b-3fd8fd28dc94"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7f1d2290-976d-4bd9-8ead-bccf366781e8"},{"ref":"EIDe3cfd4e9-4a52-4057-b337-30d47d3530d5"},{"ref":"EIDef087dde-e1a1-4748-8d30-de7196912613"}]},"parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:16:48Z","duration":564,"status":"PASSED"},{"id":"EID6eecb80a-0175-1000-b4cb-3e9863bfcf9d","attachments":{"attachment":{"ref":"EID4893f880-ae90-4e8c-93de-924c9d224760"}},"parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:16:48Z","duration":1,"status":"PASSED"},{"id":"EID6eecb822-0175-1000-b357-00bbe0540cc0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecb8da-0175-1000-6402-4d193e6d48bc","parent":{"ref":"EID6eecb822-0175-1000-b357-00bbe0540cc0"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"},{"id":"EID6eecb8da-0175-1000-cf06-f0cc7c515695","parent":{"ref":"EID6eecb822-0175-1000-b357-00bbe0540cc0"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"},{"id":"EID6eecb8da-0175-1000-79cd-e6648f3cdda3","parent":{"ref":"EID6eecb822-0175-1000-b357-00bbe0540cc0"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:16:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9cb15dc0-e8ec-4e17-8552-e380ef39ee7e"},{"ref":"EID23ed9cd3-0de2-49e5-8022-85309e5f33e9"},{"ref":"EID3b282513-fbf3-425d-b77d-5c59f07d752d"}]},"parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:16:48Z","duration":125,"status":"PASSED"},{"id":"EID6eecb8da-0175-1000-8087-bbd08e4663dc","attachments":{"attachment":{"ref":"EID6398b249-43fd-443b-bde9-a4b344f59b2a"}},"parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:16:48Z","duration":1,"status":"PASSED"},{"id":"EID6eecb8e6-0175-1000-48b5-9973c8006645","attachments":{"attachment":{"ref":"EIDed2a420e-d656-411f-a651-8c5f57acf047"}},"parent":{"ref":"EID6eecb3ef-0175-1000-bdee-e58ee678d6ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:16:48Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:16:47Z","duration":1283,"status":"PASSED"},{"id":"EID6eecb8f2-0175-1000-6990-26b5ba65da3b","testStepResults":{"TestStepResult":[{"id":"EID6eecb8f2-0175-1000-a6f4-d59005c3d665","attachments":{"attachment":[{"ref":"EIDa0d645c4-e693-43e5-9613-e0d630cc8de7"},{"ref":"EID919e5a43-83fd-4ab3-a10a-79bc51d9ac8c"}]},"parent":{"ref":"EID6eecb8f2-0175-1000-6990-26b5ba65da3b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:16:49Z","duration":214,"status":"PASSED"},{"id":"EID6eecb9ef-0175-1000-4859-4ddc2e65c09f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecba78-0175-1000-d95f-926fcd9ac614","parent":{"ref":"EID6eecb9ef-0175-1000-4859-4ddc2e65c09f"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecba78-0175-1000-5578-5d521aa1a560","parent":{"ref":"EID6eecb9ef-0175-1000-4859-4ddc2e65c09f"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecba78-0175-1000-3660-e585ae9f7e78","parent":{"ref":"EID6eecb9ef-0175-1000-4859-4ddc2e65c09f"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecba78-0175-1000-1f9f-1842b3b682a2","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eecb9ef-0175-1000-4859-4ddc2e65c09f"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID58cbd8d7-55f9-4573-8a1e-d452b8909330"},{"ref":"EID112bebb7-6327-4a75-8009-e711b32d965c"},{"ref":"EID26d15417-036b-42b0-9845-adbe9e837bfa"}]},"parent":{"ref":"EID6eecb8f2-0175-1000-6990-26b5ba65da3b"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:16:49Z","duration":36,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:16:49Z","duration":390,"status":"PASSED_MANUAL"},{"id":"EID6eecba81-0175-1000-28bd-1894f74f8ece","testStepResults":{"TestStepResult":{"id":"EID6eecba81-0175-1000-c998-e3aee4ce04fe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecbb43-0175-1000-1246-158494ae2db1","parent":{"ref":"EID6eecba81-0175-1000-c998-e3aee4ce04fe"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecbb43-0175-1000-9201-485e76051862","parent":{"ref":"EID6eecba81-0175-1000-c998-e3aee4ce04fe"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecbb43-0175-1000-624a-3b79f954ea9c","parent":{"ref":"EID6eecba81-0175-1000-c998-e3aee4ce04fe"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecbb43-0175-1000-528c-200fdab3df35","parent":{"ref":"EID6eecba81-0175-1000-c998-e3aee4ce04fe"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7daea2e7-9d5b-4bc5-a9cc-4ef42fa440fc"},{"ref":"EID98854801-1c72-4123-add6-ea7cc0592214"},{"ref":"EIDa804ba65-e8af-4d8f-8b79-1b3bacdbee9e"}]},"parent":{"ref":"EID6eecba81-0175-1000-28bd-1894f74f8ece"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:16:49Z","duration":85,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:16:49Z","duration":195,"status":"PASSED"},{"id":"EID6eecbb4e-0175-1000-1f72-f121861f73ac","testStepResults":{"TestStepResult":{"id":"EID6eecbb4e-0175-1000-ad86-e1f8cf1b77be","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecbbfd-0175-1000-da49-884e55a773aa","parent":{"ref":"EID6eecbb4e-0175-1000-ad86-e1f8cf1b77be"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecbbfd-0175-1000-1ebd-c26ab66033c6","parent":{"ref":"EID6eecbb4e-0175-1000-ad86-e1f8cf1b77be"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecbbfd-0175-1000-01ee-46c3bb91cc49","parent":{"ref":"EID6eecbb4e-0175-1000-ad86-e1f8cf1b77be"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"},{"id":"EID6eecbbfd-0175-1000-4066-99d57efd267b","parent":{"ref":"EID6eecbb4e-0175-1000-ad86-e1f8cf1b77be"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:16:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID03a4b02b-00df-4d37-8161-90cf03175ec9"},{"ref":"EIDf003f494-a0a2-4ab4-b7a4-7510c78b341a"},{"ref":"EID646c8691-14ce-416e-9ef9-3913c4b69fdd"}]},"parent":{"ref":"EID6eecbb4e-0175-1000-1f72-f121861f73ac"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:16:49Z","duration":71,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:16:49Z","duration":175,"status":"PASSED"},{"id":"EID6eecbbfd-0175-1000-80f6-a85200feb0ab","testStepResults":{"TestStepResult":[{"id":"EID6eecbbfd-0175-1000-a85e-c6eb0f482c96","attachments":{"attachment":[{"ref":"EID802e06d6-4c5c-43a2-a7cf-94dc387e96d0"},{"ref":"EID9f6b46f6-8a61-4859-8b49-c54c3b96c8af"},{"ref":"EID632dc433-c8b4-4771-990c-5b90fb09a9c6"},{"ref":"EIDfce6119e-4a4d-4c47-b785-7a4a49fe4b71"},{"ref":"EID4f7ae49a-8537-4d08-915d-0d4213197de9"},{"ref":"EID4e4fd03d-4bd6-4c6a-917f-9665076a4d93"},{"ref":"EID04856c5b-cc54-46b3-a9d6-3123bbc573a3"},{"ref":"EID649fb28a-33c0-4ab1-8cd8-920672407d0e"},{"ref":"EID9269fcc9-2bc9-4f8b-b583-02ef84364beb"},{"ref":"EIDc6b63487-a521-4151-926d-ec0898ee1837"},{"ref":"EIDafb0a01b-02f0-4a7f-a295-27d125db44e2"},{"ref":"EIDe6788715-6b36-420e-8de1-235a4a00bc07"}]},"parent":{"ref":"EID6eecbbfd-0175-1000-80f6-a85200feb0ab"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:16:49Z","duration":685,"status":"PASSED"},{"id":"EID6eecbf51-0175-1000-4a25-2e266c826429","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc02e-0175-1000-9d28-80259b6bd2c0","parent":{"ref":"EID6eecbf51-0175-1000-4a25-2e266c826429"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:16:50Z","duration":0,"status":"PASSED"},{"id":"EID6eecc02e-0175-1000-94fe-4f5cfe24a153","parent":{"ref":"EID6eecbf51-0175-1000-4a25-2e266c826429"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:16:50Z","duration":0,"status":"PASSED"},{"id":"EID6eecc02e-0175-1000-07e7-486f2caebe31","parent":{"ref":"EID6eecbf51-0175-1000-4a25-2e266c826429"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:16:50Z","duration":0,"status":"PASSED"},{"id":"EID6eecc02e-0175-1000-4e63-5ed94340ed35","parent":{"ref":"EID6eecbf51-0175-1000-4a25-2e266c826429"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:16:50Z","duration":0,"status":"PASSED"},{"id":"EID6eecc02e-0175-1000-f062-7b1655367b9a","parent":{"ref":"EID6eecbf51-0175-1000-4a25-2e266c826429"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:16:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID502ae46b-b713-40f5-93fb-2e183f58c21c"},{"ref":"EIDaa492b95-9f25-4a63-98f0-15decfc01d31"},{"ref":"EID5ff42549-ca05-4730-a026-a65dd123901b"}]},"parent":{"ref":"EID6eecbbfd-0175-1000-80f6-a85200feb0ab"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:16:50Z","duration":46,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:16:49Z","duration":1082,"status":"PASSED"},{"id":"EID6eecc038-0175-1000-1a95-7a5693025adc","testStepResults":{"TestStepResult":{"id":"EID6eecc038-0175-1000-2510-2307f5edd845","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc0f8-0175-1000-f18f-d6bef6d98318","parent":{"ref":"EID6eecc038-0175-1000-2510-2307f5edd845"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc0f8-0175-1000-9299-9140ec152979","parent":{"ref":"EID6eecc038-0175-1000-2510-2307f5edd845"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc0f8-0175-1000-2dc9-fdbe12f3b482","parent":{"ref":"EID6eecc038-0175-1000-2510-2307f5edd845"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc0f8-0175-1000-0f6e-667ee3852622","parent":{"ref":"EID6eecc038-0175-1000-2510-2307f5edd845"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1c5c0ad-635e-4739-9424-69a51e8ab155"},{"ref":"EID60b277e3-2357-43aa-94a8-52443eb6899e"},{"ref":"EIDa10cbd32-d90e-4dce-8f11-398f5532a680"}]},"parent":{"ref":"EID6eecc038-0175-1000-1a95-7a5693025adc"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:16:50Z","duration":106,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:16:50Z","duration":192,"status":"PASSED"},{"id":"EID6eecc105-0175-1000-fd67-d090eda69fc0","testStepResults":{"TestStepResult":{"id":"EID6eecc105-0175-1000-c812-0436c01336b1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc204-0175-1000-bfe6-64245a340407","parent":{"ref":"EID6eecc105-0175-1000-c812-0436c01336b1"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc204-0175-1000-031a-98cb8e105f41","parent":{"ref":"EID6eecc105-0175-1000-c812-0436c01336b1"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc204-0175-1000-83b2-0a5aaf7d1fe1","parent":{"ref":"EID6eecc105-0175-1000-c812-0436c01336b1"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc204-0175-1000-0f98-3afd8dca27fb","parent":{"ref":"EID6eecc105-0175-1000-c812-0436c01336b1"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc204-0175-1000-b103-1cadfe75ea30","parent":{"ref":"EID6eecc105-0175-1000-c812-0436c01336b1"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc204-0175-1000-010d-c8a03a8727ba","parent":{"ref":"EID6eecc105-0175-1000-c812-0436c01336b1"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa114ef68-3469-4d54-b979-5ee3994915d0"},{"ref":"EID42e6c9ba-6d5f-4d7a-b299-a34a2cfd8fae"},{"ref":"EID5f2cb4b0-c800-4080-9dea-4a37952781a2"}]},"parent":{"ref":"EID6eecc105-0175-1000-fd67-d090eda69fc0"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:16:51Z","duration":113,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:16:51Z","duration":265,"status":"PASSED"},{"id":"EID6eecc20f-0175-1000-ef24-5bfb1aa45772","testStepResults":{"TestStepResult":{"id":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc2aa-0175-1000-801e-f996e8f82f45","parent":{"ref":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc2aa-0175-1000-6e1e-6fdb8d6880cc","parent":{"ref":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc2aa-0175-1000-09f5-9da4c30c362d","parent":{"ref":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc2aa-0175-1000-77bb-7a5236f4a095","parent":{"ref":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc2aa-0175-1000-fd58-feaa86a9af95","parent":{"ref":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc2aa-0175-1000-dec7-261860b3c959","parent":{"ref":"EID6eecc20f-0175-1000-788c-7c8d88ef14f1"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3792d798-2f60-41eb-b789-75706ba2e871"},{"ref":"EID6fa67810-c24a-44cc-8518-eff3a39cf00c"},{"ref":"EIDc1bb70d0-74a9-4d02-90d4-3b16e637e54d"}]},"parent":{"ref":"EID6eecc20f-0175-1000-ef24-5bfb1aa45772"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:16:51Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:16:51Z","duration":164,"status":"PASSED"},{"id":"EID6eecc2b3-0175-1000-4555-de609f737c13","testStepResults":{"TestStepResult":{"id":"EID6eecc2b3-0175-1000-59cd-aaaca1c381ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc35e-0175-1000-8325-7fcbfb2e57f0","parent":{"ref":"EID6eecc2b3-0175-1000-59cd-aaaca1c381ca"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc35e-0175-1000-1121-231c92d14e67","parent":{"ref":"EID6eecc2b3-0175-1000-59cd-aaaca1c381ca"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc35e-0175-1000-fa46-ea8c2c6ffde6","parent":{"ref":"EID6eecc2b3-0175-1000-59cd-aaaca1c381ca"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"},{"id":"EID6eecc35e-0175-1000-c157-7372b8cb9bd9","parent":{"ref":"EID6eecc2b3-0175-1000-59cd-aaaca1c381ca"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:16:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ab33628-58d1-4157-b0d6-8356a88b19a3"},{"ref":"EID47c55d8b-1e55-4cd4-98b5-f2c09e22c243"},{"ref":"EID5ffa2fdd-132e-4ac4-857e-f4fdaf168abc"}]},"parent":{"ref":"EID6eecc2b3-0175-1000-4555-de609f737c13"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:16:51Z","duration":77,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:16:51Z","duration":181,"status":"PASSED"},{"id":"EID6eecc368-0175-1000-3c98-8f70cbd7322b","testStepResults":{"TestStepResult":[{"id":"EID6eecc368-0175-1000-19bc-916a86cc6ba0","attachments":{"attachment":[{"ref":"EID1d0874df-ce32-4ed4-b775-9896bf1c2e55"},{"ref":"EID091e8590-5eca-4223-9a7f-7e35d4d854f0"},{"ref":"EIDc531f561-9229-414b-9f9a-decd2522a125"},{"ref":"EID9dc311a7-cd60-4b1c-9b0d-d652c37d7808"}]},"parent":{"ref":"EID6eecc368-0175-1000-3c98-8f70cbd7322b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:16:51Z","duration":239,"status":"PASSED"},{"id":"EID6eecc489-0175-1000-318f-2253798af9ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc54b-0175-1000-95d4-246c7cefa6ee","parent":{"ref":"EID6eecc489-0175-1000-318f-2253798af9ae"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc54b-0175-1000-e81f-bd2247df81a0","parent":{"ref":"EID6eecc489-0175-1000-318f-2253798af9ae"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc54b-0175-1000-f340-b0b3f8813bd3","parent":{"ref":"EID6eecc489-0175-1000-318f-2253798af9ae"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc54b-0175-1000-bdc0-a03b28e37b35","parent":{"ref":"EID6eecc489-0175-1000-318f-2253798af9ae"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55b6024e-d4e4-4dc2-bd72-9f1608d1b087"},{"ref":"EID2a5621d4-10c5-40db-868c-f27a02e77ed2"},{"ref":"EID2611c062-b232-4141-a0ce-9e21e1f63ef7"}]},"parent":{"ref":"EID6eecc368-0175-1000-3c98-8f70cbd7322b"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:16:51Z","duration":99,"status":"PASSED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:16:51Z","duration":493,"status":"PASSED"},{"id":"EID6eecc555-0175-1000-6815-c1d3e20d6899","testStepResults":{"TestStepResult":{"id":"EID6eecc555-0175-1000-5745-23fc8b80efab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc778-0175-1000-f3fd-c85eb99fd971","parent":{"ref":"EID6eecc555-0175-1000-5745-23fc8b80efab"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc778-0175-1000-178e-af9c4608d08b","parent":{"ref":"EID6eecc555-0175-1000-5745-23fc8b80efab"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc778-0175-1000-97f3-9ede27247c4e","parent":{"ref":"EID6eecc555-0175-1000-5745-23fc8b80efab"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc778-0175-1000-a555-c9345bb0c82e","parent":{"ref":"EID6eecc555-0175-1000-5745-23fc8b80efab"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID89d8aea0-9f4f-4cd5-86fb-ee63ad230569"},{"ref":"EID901d2925-6765-483a-9d8b-238fca5496b8"},{"ref":"EIDe5855c6a-92e9-460f-9881-0648a22dc0df"}]},"parent":{"ref":"EID6eecc555-0175-1000-6815-c1d3e20d6899"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:16:52Z","duration":400,"status":"PASSED"}},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:16:52Z","duration":547,"status":"PASSED"},{"id":"EID6eecc778-0175-1000-27da-ea05e6a72f10","testStepResults":{"TestStepResult":[{"id":"EID6eecc778-0175-1000-79eb-9320fcff0e82","parent":{"ref":"EID6eecc778-0175-1000-27da-ea05e6a72f10"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc779-0175-1000-7641-c82bc45dabe5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc82b-0175-1000-c005-4a8d4098460d","parent":{"ref":"EID6eecc779-0175-1000-7641-c82bc45dabe5"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc82b-0175-1000-3049-83f8253957ec","parent":{"ref":"EID6eecc779-0175-1000-7641-c82bc45dabe5"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc82b-0175-1000-30a8-9b48a69fa532","parent":{"ref":"EID6eecc779-0175-1000-7641-c82bc45dabe5"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:16:52Z","duration":0,"status":"PASSED"},{"id":"EID6eecc82b-0175-1000-355b-3e58f474d81a","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eecc779-0175-1000-7641-c82bc45dabe5"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:16:52Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdd2a69ed-1402-4b6c-ab27-f4d42ed7bf49"},{"ref":"EIDafb8653f-5115-4f9a-b4d6-dbf0d9dec5ff"},{"ref":"EID91aa5ebe-42f2-4d45-86ec-6f8f4ea09884"}]},"parent":{"ref":"EID6eecc778-0175-1000-27da-ea05e6a72f10"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:16:52Z","duration":54,"status":"FAILED"}]},"parent":{"ref":"EID6eecaacd-0175-1000-f5e6-ec21aea063cc"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:16:52Z","duration":281,"status":"FAILED"}]},"parent":{"ref":"EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:16:45Z","duration":7621,"status":"FAILED"},{"id":"EID6eecc892-0175-1000-6668-dce03519efb3","testCaseResults":{"TestCaseResult":[{"id":"EID6eecc892-0175-1000-1728-c3b7876b9061","testStepResults":{"TestStepResult":[{"id":"EID6eecc892-0175-1000-e992-8ce953c80477","parent":{"ref":"EID6eecc892-0175-1000-1728-c3b7876b9061"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc892-0175-1000-b9c9-006f4d47710e","parent":{"ref":"EID6eecc892-0175-1000-1728-c3b7876b9061"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:16:53Z","duration":400,"status":"PASSED"},{"id":"EID6eecc892-0175-1000-33e3-9a9cf9f6038c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc90e-0175-1000-74c2-c87bc1f3b672","parent":{"ref":"EID6eecc892-0175-1000-33e3-9a9cf9f6038c"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc90e-0175-1000-1d44-57a7fd08506e","parent":{"ref":"EID6eecc892-0175-1000-33e3-9a9cf9f6038c"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc90e-0175-1000-43cf-e670d1897ec4","parent":{"ref":"EID6eecc892-0175-1000-33e3-9a9cf9f6038c"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID601d5d0a-9c4a-4b3a-9054-36b9daa292d7"},{"ref":"EID22e69c4b-acc2-44cf-9d56-a0e1f7a3a78d"},{"ref":"EIDf71222aa-9cf9-4ee8-b47d-95e9d48617e2"}]},"parent":{"ref":"EID6eecc892-0175-1000-1728-c3b7876b9061"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:16:53Z","duration":44,"status":"PASSED"},{"id":"EID6eecc90e-0175-1000-a5de-22429b5ff489","attachments":{"attachment":{"ref":"EID4fdbfa96-040a-4723-97c3-e36b81de63da"}},"parent":{"ref":"EID6eecc892-0175-1000-1728-c3b7876b9061"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc930-0175-1000-644d-a5af7d555a45","parent":{"ref":"EID6eecc892-0175-1000-1728-c3b7876b9061"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:16:53Z","duration":25,"status":"PASSED"}]},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:16:53Z","duration":184,"status":"PASSED"},{"id":"EID6eecc94a-0175-1000-522a-1c81c0c425fc","testStepResults":{"TestStepResult":[{"id":"EID6eecc94a-0175-1000-79ef-4bd363e339a5","parent":{"ref":"EID6eecc94a-0175-1000-522a-1c81c0c425fc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:16:53Z","duration":58,"status":"PASSED"},{"id":"EID6eecc94a-0175-1000-4c63-84ea0016f69f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecc9e8-0175-1000-059a-356eac705ea5","parent":{"ref":"EID6eecc94a-0175-1000-4c63-84ea0016f69f"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc9e8-0175-1000-116e-844625f76f47","parent":{"ref":"EID6eecc94a-0175-1000-4c63-84ea0016f69f"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc9e8-0175-1000-939a-89fb89f932fd","parent":{"ref":"EID6eecc94a-0175-1000-4c63-84ea0016f69f"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc9e8-0175-1000-7efd-84ba69539b48","parent":{"ref":"EID6eecc94a-0175-1000-4c63-84ea0016f69f"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecc9e8-0175-1000-b5da-bb0efd13297f","parent":{"ref":"EID6eecc94a-0175-1000-4c63-84ea0016f69f"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbf9045fc-d46e-427c-a1ce-339cb41b1a00"},{"ref":"EID88edc4f4-e7a3-402c-bffa-1302fc143b51"},{"ref":"EIDc002e2c0-cb4a-498a-af7f-47bad8225621"}]},"parent":{"ref":"EID6eecc94a-0175-1000-522a-1c81c0c425fc"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:16:53Z","duration":84,"status":"PASSED"}]},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:16:53Z","duration":158,"status":"PASSED"},{"id":"EID6eecc9e8-0175-1000-e2cc-66182e11483a","testStepResults":{"TestStepResult":[{"id":"EID6eecc9e8-0175-1000-42b7-42cafc210d7b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecca68-0175-1000-006a-2371a31c7e00","parent":{"ref":"EID6eecc9e8-0175-1000-42b7-42cafc210d7b"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecca68-0175-1000-bcab-5595a9726465","parent":{"ref":"EID6eecc9e8-0175-1000-42b7-42cafc210d7b"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eecca68-0175-1000-897e-bdef1c96f305","parent":{"ref":"EID6eecc9e8-0175-1000-42b7-42cafc210d7b"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID56ac64bd-841d-4ac5-9886-5d9f3bda2051"},{"ref":"EID1a912a9c-3318-47d7-bad7-b04b6eb573da"},{"ref":"EID5a44a8d4-aad4-4bfe-8c02-ee610ff436e6"}]},"parent":{"ref":"EID6eecc9e8-0175-1000-e2cc-66182e11483a"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:16:53Z","duration":67,"status":"PASSED"},{"id":"EID6eecca69-0175-1000-81aa-7b0e94c4c5b5","attachments":{"attachment":{"ref":"EIDb2b0ae1c-5f81-40f0-a862-1bbf2e5788cb"}},"parent":{"ref":"EID6eecc9e8-0175-1000-e2cc-66182e11483a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:16:53Z","duration":12,"status":"PASSED"},{"id":"EID6eecca7f-0175-1000-f504-80e244d400c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeccb6d-0175-1000-e5c6-423f2ba84d0e","parent":{"ref":"EID6eecca7f-0175-1000-f504-80e244d400c9"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccb6d-0175-1000-09c8-f3183f80dc9b","parent":{"ref":"EID6eecca7f-0175-1000-f504-80e244d400c9"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccb6d-0175-1000-9afe-850dd0b68aa2","parent":{"ref":"EID6eecca7f-0175-1000-f504-80e244d400c9"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccb6d-0175-1000-70fb-0970ca1118a7","parent":{"ref":"EID6eecca7f-0175-1000-f504-80e244d400c9"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccb6d-0175-1000-630d-eef6969d95d4","parent":{"ref":"EID6eecca7f-0175-1000-f504-80e244d400c9"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa69e28c7-34e3-4508-947c-654d5a99f38a"},{"ref":"EIDa280396c-9c1c-4c70-9758-a989a48f05f6"},{"ref":"EID245ef0f2-0415-4c7e-a028-9db8302bb9fe"}]},"parent":{"ref":"EID6eecc9e8-0175-1000-e2cc-66182e11483a"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:16:53Z","duration":87,"status":"PASSED"}]},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:16:53Z","duration":389,"status":"PASSED"},{"id":"EID6eeccb6d-0175-1000-b3d1-6eb0af83b133","testStepResults":{"TestStepResult":[{"id":"EID6eeccb6d-0175-1000-96eb-baff37f7261e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeccbfb-0175-1000-acac-f4987c152a25","parent":{"ref":"EID6eeccb6d-0175-1000-96eb-baff37f7261e"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccbfb-0175-1000-5dd6-dce2a1fdd634","parent":{"ref":"EID6eeccb6d-0175-1000-96eb-baff37f7261e"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccbfb-0175-1000-8dc8-822ef3b780c8","parent":{"ref":"EID6eeccb6d-0175-1000-96eb-baff37f7261e"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccbfb-0175-1000-ba4e-098fb4b0f569","parent":{"ref":"EID6eeccb6d-0175-1000-96eb-baff37f7261e"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID720bc672-1558-4026-944a-17847243815d"},{"ref":"EIDff52db1b-00f6-44ae-8942-f2e293816c5f"},{"ref":"EID27172037-a666-4df1-8063-979cafb12ade"}]},"parent":{"ref":"EID6eeccb6d-0175-1000-b3d1-6eb0af83b133"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:16:53Z","duration":60,"status":"PASSED"},{"id":"EID6eeccbfb-0175-1000-9ec9-13641c70f5cf","attachments":{"attachment":{"ref":"EIDae474380-759d-44d7-808c-122daac315bd"}},"parent":{"ref":"EID6eeccb6d-0175-1000-b3d1-6eb0af83b133"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:16:53Z","duration":1,"status":"PASSED"},{"id":"EID6eeccc07-0175-1000-d19b-52d6c9198b52","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeccc6b-0175-1000-fc95-9dd8b04ef399","parent":{"ref":"EID6eeccc07-0175-1000-d19b-52d6c9198b52"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeccc6b-0175-1000-e9d1-4a60146971a8","parent":{"ref":"EID6eeccc07-0175-1000-d19b-52d6c9198b52"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:16:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID392977d8-9b34-4830-bec8-56af020ca3ba"},{"ref":"EID9892c7bf-d4fa-4f3a-a814-87a6c45ead7a"}]},"parent":{"ref":"EID6eeccb6d-0175-1000-b3d1-6eb0af83b133"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:16:53Z","duration":96,"status":"PASSED"},{"id":"EID6eeccc77-0175-1000-5507-eef801aa94b6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeccdc1-0175-1000-a582-dfdf36d7a872","parent":{"ref":"EID6eeccc77-0175-1000-5507-eef801aa94b6"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeccdc1-0175-1000-7784-d74a0c508ea9","parent":{"ref":"EID6eeccc77-0175-1000-5507-eef801aa94b6"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeccdc1-0175-1000-935e-6e85adab4863","parent":{"ref":"EID6eeccc77-0175-1000-5507-eef801aa94b6"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeccdc1-0175-1000-e59b-3708def684ef","parent":{"ref":"EID6eeccc77-0175-1000-5507-eef801aa94b6"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID304022bf-6a0c-4c8a-a430-3c071cab3e07"},{"ref":"EID46823a58-f9a8-4675-b039-8ca5ab753465"},{"ref":"EID5bf0b9c6-c3a2-40d3-9e8b-a9cde1d7194b"}]},"parent":{"ref":"EID6eeccb6d-0175-1000-b3d1-6eb0af83b133"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:16:54Z","duration":212,"status":"PASSED"}]},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:16:53Z","duration":596,"status":"PASSED"},{"id":"EID6eeccdc1-0175-1000-7d67-adb99b18b780","testStepResults":{"TestStepResult":{"id":"EID6eeccdc1-0175-1000-68ae-bff346840840","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecce49-0175-1000-3713-79086aab0405","parent":{"ref":"EID6eeccdc1-0175-1000-68ae-bff346840840"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eecce49-0175-1000-3cac-805fc055c614","parent":{"ref":"EID6eeccdc1-0175-1000-68ae-bff346840840"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eecce49-0175-1000-6643-a35a702d8989","parent":{"ref":"EID6eeccdc1-0175-1000-68ae-bff346840840"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7743101c-bbf0-42f8-bae7-61a8c4799712"},{"ref":"EID4085b37c-4c2b-4a00-98d3-0af856f37fc2"},{"ref":"EIDb487394c-2d57-4127-8b41-5f1d3d748a52"}]},"parent":{"ref":"EID6eeccdc1-0175-1000-7d67-adb99b18b780"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:16:54Z","duration":79,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:16:54Z","duration":136,"status":"PASSED"},{"id":"EID6eecce49-0175-1000-1914-8b960605ac68","testStepResults":{"TestStepResult":{"id":"EID6eecce49-0175-1000-c850-496547a84460","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeccf50-0175-1000-5a85-535bdcab05c1","parent":{"ref":"EID6eecce49-0175-1000-c850-496547a84460"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeccf50-0175-1000-552f-5764a9437740","parent":{"ref":"EID6eecce49-0175-1000-c850-496547a84460"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeccf50-0175-1000-acaa-86cc4f31d171","parent":{"ref":"EID6eecce49-0175-1000-c850-496547a84460"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1cc71fc0-a8a5-4d1a-a718-0bd76c24ec4e"},{"ref":"EID3d279737-8c89-434b-8e10-2513e0e85a26"},{"ref":"EID865e1549-4aab-4eb7-9fdc-a2b8945492d6"}]},"parent":{"ref":"EID6eecce49-0175-1000-1914-8b960605ac68"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:16:54Z","duration":207,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:16:54Z","duration":272,"status":"PASSED"},{"id":"EID6eeccf59-0175-1000-e6a2-360baa0d8726","testStepResults":{"TestStepResult":{"id":"EID6eeccf59-0175-1000-d03a-8a6cbf98dc18","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd00c-0175-1000-6b5c-d2b73ce8317a","parent":{"ref":"EID6eeccf59-0175-1000-d03a-8a6cbf98dc18"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eecd00c-0175-1000-bfca-dd7fa9da5c6d","parent":{"ref":"EID6eeccf59-0175-1000-d03a-8a6cbf98dc18"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eecd00c-0175-1000-5d98-76e1d3908071","parent":{"ref":"EID6eeccf59-0175-1000-d03a-8a6cbf98dc18"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eecd00c-0175-1000-69f5-0099f53b183e","parent":{"ref":"EID6eeccf59-0175-1000-d03a-8a6cbf98dc18"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"},{"id":"EID6eecd00c-0175-1000-14b8-22dd810721b2","parent":{"ref":"EID6eeccf59-0175-1000-d03a-8a6cbf98dc18"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:16:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1285a138-74f5-47cf-a847-a8b803a0a98f"},{"ref":"EIDe2ce2a42-e4f9-44b3-afa4-9b42fcd47e43"},{"ref":"EID9c7f4859-1abe-4c4d-b517-b03765541310"}]},"parent":{"ref":"EID6eeccf59-0175-1000-e6a2-360baa0d8726"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:16:54Z","duration":38,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:16:54Z","duration":179,"status":"PASSED"},{"id":"EID6eecd00c-0175-1000-2cca-b171f1f855b4","testStepResults":{"TestStepResult":{"id":"EID6eecd00c-0175-1000-71cb-5fc11ad5033c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd0b7-0175-1000-ff31-8ffbd20d1cdb","parent":{"ref":"EID6eecd00c-0175-1000-71cb-5fc11ad5033c"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd0b7-0175-1000-6217-bc9bd8025a86","parent":{"ref":"EID6eecd00c-0175-1000-71cb-5fc11ad5033c"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd0b7-0175-1000-ddab-80b5804b8d62","parent":{"ref":"EID6eecd00c-0175-1000-71cb-5fc11ad5033c"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd2bd24e-756e-4924-a3a7-1f8f61efdb86"},{"ref":"EID8c9dfe38-6235-412a-8f94-0a5708554049"},{"ref":"EIDf183877f-ea7a-47f1-899a-f3913f482e44"}]},"parent":{"ref":"EID6eecd00c-0175-1000-2cca-b171f1f855b4"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:16:54Z","duration":112,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:16:54Z","duration":181,"status":"PASSED"},{"id":"EID6eecd0c2-0175-1000-40a0-6af2815479e7","testStepResults":{"TestStepResult":{"id":"EID6eecd0c2-0175-1000-5292-6041298f4c9e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd17a-0175-1000-7326-ae68c0c91837","parent":{"ref":"EID6eecd0c2-0175-1000-5292-6041298f4c9e"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd17a-0175-1000-5322-dc31d49a4fd4","parent":{"ref":"EID6eecd0c2-0175-1000-5292-6041298f4c9e"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd17a-0175-1000-df95-13bab48beeb7","parent":{"ref":"EID6eecd0c2-0175-1000-5292-6041298f4c9e"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3fb5d5a8-a0f7-4bfc-88ea-6a1c4b96be17"},{"ref":"EID7145f7d0-6290-4a09-8433-0bcff314572f"},{"ref":"EID09c87728-c8c6-4527-b62d-2756616b0e25"}]},"parent":{"ref":"EID6eecd0c2-0175-1000-40a0-6af2815479e7"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:16:55Z","duration":53,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:16:55Z","duration":184,"status":"PASSED"},{"id":"EID6eecd17d-0175-1000-c41b-8529c67d86b7","testStepResults":{"TestStepResult":{"id":"EID6eecd17d-0175-1000-5f72-a2eef60dd12d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd220-0175-1000-b772-6e22af832a2f","parent":{"ref":"EID6eecd17d-0175-1000-5f72-a2eef60dd12d"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd220-0175-1000-f71a-80cb86b2a453","parent":{"ref":"EID6eecd17d-0175-1000-5f72-a2eef60dd12d"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd220-0175-1000-59f4-ed0d3fa8b35c","parent":{"ref":"EID6eecd17d-0175-1000-5f72-a2eef60dd12d"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"},{"id":"EID6eecd220-0175-1000-d147-b38beafdd671","parent":{"ref":"EID6eecd17d-0175-1000-5f72-a2eef60dd12d"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:16:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID449b13d5-0151-44fd-98b4-725e879b5865"},{"ref":"EID16290a24-8e08-45cf-931b-3e241b52ce51"},{"ref":"EID005f4fed-cee4-4c83-907a-12a867c96f84"}]},"parent":{"ref":"EID6eecd17d-0175-1000-c41b-8529c67d86b7"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:16:55Z","duration":94,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:16:55Z","duration":163,"status":"PASSED"},{"id":"EID6eecd229-0175-1000-e8ca-50979612bed9","testStepResults":{"TestStepResult":{"id":"EID6eecd229-0175-1000-4c4b-fed0717b3e48","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd478-0175-1000-4d0b-9f5354c56044","parent":{"ref":"EID6eecd229-0175-1000-4c4b-fed0717b3e48"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd478-0175-1000-7044-0ad29e1c8432","parent":{"ref":"EID6eecd229-0175-1000-4c4b-fed0717b3e48"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd478-0175-1000-e42f-b3f60d8fa9fe","parent":{"ref":"EID6eecd229-0175-1000-4c4b-fed0717b3e48"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd478-0175-1000-0c0a-4ae1c3a17986","parent":{"ref":"EID6eecd229-0175-1000-4c4b-fed0717b3e48"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92cefac2-4136-49b5-995f-7ac2d66c6530"},{"ref":"EIDdc47b342-c590-4916-8883-12ca594f6ba2"},{"ref":"EID926fd7da-021a-47cc-85e6-a922019c2545"}]},"parent":{"ref":"EID6eecd229-0175-1000-e8ca-50979612bed9"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:16:55Z","duration":522,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:16:55Z","duration":591,"status":"PASSED"},{"id":"EID6eecd478-0175-1000-d82c-4afb56c16d2f","testStepResults":{"TestStepResult":[{"id":"EID6eecd478-0175-1000-4ccd-570b6d240241","parent":{"ref":"EID6eecd478-0175-1000-d82c-4afb56c16d2f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd478-0175-1000-5f21-d5727a2e760c","parent":{"ref":"EID6eecd478-0175-1000-d82c-4afb56c16d2f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:16:56Z","duration":175,"status":"PASSED"},{"id":"EID6eecd478-0175-1000-b145-ad13b04674e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd702-0175-1000-8171-25153f72c85c","parent":{"ref":"EID6eecd478-0175-1000-b145-ad13b04674e2"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd702-0175-1000-b8d2-0cae4f0d9494","parent":{"ref":"EID6eecd478-0175-1000-b145-ad13b04674e2"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd702-0175-1000-2b77-459a6f9fa037","parent":{"ref":"EID6eecd478-0175-1000-b145-ad13b04674e2"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"},{"id":"EID6eecd702-0175-1000-0f80-e2e9955d8992","parent":{"ref":"EID6eecd478-0175-1000-b145-ad13b04674e2"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:16:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID65c89e05-c6f2-4a0e-85c6-e06ca492dad5"},{"ref":"EIDbe11d933-3e95-4139-813e-5363abcd3e75"},{"ref":"EID97d61db2-e4f2-465c-aedd-88279afafbfd"}]},"parent":{"ref":"EID6eecd478-0175-1000-d82c-4afb56c16d2f"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:16:56Z","duration":514,"status":"PASSED"},{"id":"EID6eecd702-0175-1000-771d-174804b13b10","attachments":{"attachment":{"ref":"EID2ed1e435-1852-47ca-aa64-426c6572bb98"}},"parent":{"ref":"EID6eecd478-0175-1000-d82c-4afb56c16d2f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:16:56Z","duration":1,"status":"PASSED"},{"id":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecd9cb-0175-1000-362d-7ecd6ea9acf6","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-61d6-d9dd74abb3b4","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-e23e-3e4e632d4616","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-e8dd-a426523e6595","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-8f24-cbbe7f414c84","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-3e0d-39d9c91b8ac7","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-42b1-b871d5960e3a","parent":{"ref":"EID6eecd71a-0175-1000-5d80-78eb9ba37bc6"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID35c0e803-b98d-4d6b-8fbf-071af1c62acb"},{"ref":"EID4ecd9388-88b7-4353-bb4e-a2b378eb4f14"},{"ref":"EID34045dae-fb7d-46a5-87de-f2eb9cbb82af"}]},"parent":{"ref":"EID6eecd478-0175-1000-d82c-4afb56c16d2f"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:16:56Z","duration":588,"status":"PASSED"}]},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:16:56Z","duration":1363,"status":"PASSED"},{"id":"EID6eecd9cb-0175-1000-6166-0472a3906d63","testStepResults":{"TestStepResult":[{"id":"EID6eecd9cb-0175-1000-ed02-7df4d2d18f60","parent":{"ref":"EID6eecd9cb-0175-1000-6166-0472a3906d63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:16:57Z","duration":1,"status":"PASSED"},{"id":"EID6eecd9cc-0175-1000-f27d-bfbf9867ca2f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecdaeb-0175-1000-0162-c417ace058cd","parent":{"ref":"EID6eecd9cc-0175-1000-f27d-bfbf9867ca2f"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecdaeb-0175-1000-0922-001e5c9facb7","parent":{"ref":"EID6eecd9cc-0175-1000-f27d-bfbf9867ca2f"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecdaeb-0175-1000-8db3-744d9ea62acd","parent":{"ref":"EID6eecd9cc-0175-1000-f27d-bfbf9867ca2f"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"},{"id":"EID6eecdaeb-0175-1000-24e0-67e5df5e69b5","parent":{"ref":"EID6eecd9cc-0175-1000-f27d-bfbf9867ca2f"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:16:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID30d06d29-1af5-4e3b-bded-32c452557eba"},{"ref":"EID8386be2f-43ff-4d6a-b92a-267a74cb3f00"},{"ref":"EID5d5c45f6-af56-48c2-9428-9fb741cc5e86"}]},"parent":{"ref":"EID6eecd9cb-0175-1000-6166-0472a3906d63"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:16:57Z","duration":157,"status":"PASSED"},{"id":"EID6eecdaf4-0175-1000-66df-2e3646c09824","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eecdb10-0175-1000-303e-bcaefac0903a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecdc2e-0175-1000-ab93-96ef1aa2cf53","parent":{"ref":"EID6eecdb10-0175-1000-303e-bcaefac0903a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdc2e-0175-1000-3d46-205cb54f1990","parent":{"ref":"EID6eecdb10-0175-1000-303e-bcaefac0903a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdc2e-0175-1000-1bdd-2660629b8473","parent":{"ref":"EID6eecdb10-0175-1000-303e-bcaefac0903a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbed02850-3b31-4f4f-b0e8-c50a9e560117"},{"ref":"EID19e5992d-0bca-4219-9304-de96621b32cc"},{"ref":"EIDcaf93f86-663f-466f-9672-d80e0efc7afb"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:57Z","duration":151,"status":"PASSED"},{"id":"EID6eecdc30-0175-1000-5af6-2cedf3e8c840","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecdd3e-0175-1000-1b22-68aa1080b8bd","parent":{"ref":"EID6eecdc30-0175-1000-5af6-2cedf3e8c840"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdd3e-0175-1000-f169-628bfcc78ba1","parent":{"ref":"EID6eecdc30-0175-1000-5af6-2cedf3e8c840"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdd3e-0175-1000-eac7-70b1023587bf","parent":{"ref":"EID6eecdc30-0175-1000-5af6-2cedf3e8c840"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4aacd3a0-2e8b-4774-8acc-db7651cc611f"},{"ref":"EID21a418e6-976a-4458-8fab-739aec474fee"},{"ref":"EID04a560b1-b676-4a43-8b96-e08f2b6dc3d7"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:58Z","duration":176,"status":"PASSED"},{"id":"EID6eecdd40-0175-1000-ec52-1d8a6a478edd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecde09-0175-1000-0cb4-fd283e3f4337","parent":{"ref":"EID6eecdd40-0175-1000-ec52-1d8a6a478edd"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecde09-0175-1000-b820-e60443711f1b","parent":{"ref":"EID6eecdd40-0175-1000-ec52-1d8a6a478edd"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecde09-0175-1000-1eb4-461f3e34f636","parent":{"ref":"EID6eecdd40-0175-1000-ec52-1d8a6a478edd"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6517a30e-0fee-4f39-a8dc-619a1b353200"},{"ref":"EIDa7cd5854-4bb7-4e28-80b8-4e2327a7c465"},{"ref":"EID4ee9dfcb-538f-4510-afba-0b6f0e645d08"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:58Z","duration":153,"status":"PASSED"}]},"parent":{"ref":"EID6eecd9cb-0175-1000-6166-0472a3906d63"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:16:57Z","duration":790,"status":"PASSED"},{"id":"EID6eecde0a-0175-1000-bcd8-4024b3525bb9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecde9f-0175-1000-2948-f176aaa9cd53","parent":{"ref":"EID6eecde0a-0175-1000-bcd8-4024b3525bb9"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecde9f-0175-1000-7f40-68923d3e4605","parent":{"ref":"EID6eecde0a-0175-1000-bcd8-4024b3525bb9"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecde9f-0175-1000-0d9b-10d32faa0819","parent":{"ref":"EID6eecde0a-0175-1000-bcd8-4024b3525bb9"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecde9f-0175-1000-e747-d2bbdf2e81b9","parent":{"ref":"EID6eecde0a-0175-1000-bcd8-4024b3525bb9"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe2176ecf-53e7-4ff3-8d5f-7f4644d238d3"},{"ref":"EID243d363e-53d5-4cd8-af5a-40aa00ffe42d"},{"ref":"EID5d91bdfa-4274-4dcc-ab1e-c7993118e584"}]},"parent":{"ref":"EID6eecd9cb-0175-1000-6166-0472a3906d63"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:16:58Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:16:57Z","duration":1266,"status":"PASSED"},{"id":"EID6eecdebd-0175-1000-ea29-c275a4ea833c","testStepResults":{"TestStepResult":{"id":"EID6eecdebd-0175-1000-d7a5-fc8210f1592f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecdf39-0175-1000-b87d-e18e95e4da88","parent":{"ref":"EID6eecdebd-0175-1000-d7a5-fc8210f1592f"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdf39-0175-1000-7394-1dc7db2f35a8","parent":{"ref":"EID6eecdebd-0175-1000-d7a5-fc8210f1592f"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdf39-0175-1000-02d1-b52226962b18","parent":{"ref":"EID6eecdebd-0175-1000-d7a5-fc8210f1592f"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdf39-0175-1000-863e-fd6711258327","parent":{"ref":"EID6eecdebd-0175-1000-d7a5-fc8210f1592f"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID08898b82-bfde-4a05-924d-75300dd78782"},{"ref":"EID8b3153c5-00b9-4dc0-8523-7174b39572b2"},{"ref":"EID5cedf569-7f16-4ea1-803b-f3b125e773f7"}]},"parent":{"ref":"EID6eecdebd-0175-1000-ea29-c275a4ea833c"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:16:58Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6eecc892-0175-1000-6668-dce03519efb3"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:16:58Z","duration":124,"status":"PASSED"}]},"parent":{"ref":"EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:16:53Z","duration":5807,"status":"PASSED"},{"id":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3","testCaseResults":{"TestCaseResult":[{"id":"EID6eecdf42-0175-1000-a54c-a164a7d16e9d","testStepResults":{"TestStepResult":[{"id":"EID6eecdf42-0175-1000-8699-5ea57b60fa39","parent":{"ref":"EID6eecdf42-0175-1000-a54c-a164a7d16e9d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:16:58Z","duration":943,"status":"PASSED"},{"id":"EID6eecdf42-0175-1000-8d10-4e65c685e245","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecdfb3-0175-1000-65f6-74bbfd8eb75f","parent":{"ref":"EID6eecdf42-0175-1000-8d10-4e65c685e245"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdfb3-0175-1000-5fba-8a6166ba6451","parent":{"ref":"EID6eecdf42-0175-1000-8d10-4e65c685e245"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"},{"id":"EID6eecdfb3-0175-1000-a040-31ffa8881138","parent":{"ref":"EID6eecdf42-0175-1000-8d10-4e65c685e245"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2ac815b8-fba6-400e-9c13-f99bfaa08270"},{"ref":"EIDf55baa92-2080-4f76-b498-3b3cde6d9c22"},{"ref":"EID90adb0f4-a2b1-4f46-8f0c-19086963edca"}]},"parent":{"ref":"EID6eecdf42-0175-1000-a54c-a164a7d16e9d"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:16:58Z","duration":40,"status":"PASSED"},{"id":"EID6eecdfb4-0175-1000-cb7a-16953596bbc6","attachments":{"attachment":{"ref":"EID62a3eea2-93a8-4aa7-8399-1f72bdd50826"}},"parent":{"ref":"EID6eecdf42-0175-1000-a54c-a164a7d16e9d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:16:58Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:16:58Z","duration":139,"status":"PASSED"},{"id":"EID6eecdfcd-0175-1000-b55b-cecc55e96415","testStepResults":{"TestStepResult":[{"id":"EID6eecdfce-0175-1000-315e-14bdb3997fa3","parent":{"ref":"EID6eecdfcd-0175-1000-b55b-cecc55e96415"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:16:58Z","duration":943,"status":"PASSED"},{"id":"EID6eecdfcf-0175-1000-1e32-e686e4e2206e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eece0ca-0175-1000-b718-cb8473f5f449","parent":{"ref":"EID6eecdfcf-0175-1000-1e32-e686e4e2206e"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece0ca-0175-1000-6cc2-933937da80e2","parent":{"ref":"EID6eecdfcf-0175-1000-1e32-e686e4e2206e"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece0ca-0175-1000-6bc5-be33b027db16","parent":{"ref":"EID6eecdfcf-0175-1000-1e32-e686e4e2206e"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece0ca-0175-1000-91c8-2e60afb01c7c","parent":{"ref":"EID6eecdfcf-0175-1000-1e32-e686e4e2206e"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1669a6f-a8ae-495c-8482-8773b6e0779e"},{"ref":"EID451a1f53-3184-4eaf-8086-08d22dbfab8d"},{"ref":"EID098f9e5e-190a-4669-a302-5b9ce68e97f7"}]},"parent":{"ref":"EID6eecdfcd-0175-1000-b55b-cecc55e96415"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:16:58Z","duration":133,"status":"PASSED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:16:58Z","duration":265,"status":"PASSED"},{"id":"EID6eece0d7-0175-1000-facd-0bb0db021852","testStepResults":{"TestStepResult":[{"id":"EID6eece0d7-0175-1000-4938-cb0494b2d937","parent":{"ref":"EID6eece0d7-0175-1000-facd-0bb0db021852"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:16:59Z","duration":943,"status":"PASSED"},{"id":"EID6eece0d7-0175-1000-ab29-48ac5367534e","parent":{"ref":"EID6eece0d7-0175-1000-facd-0bb0db021852"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece0d7-0175-1000-ebed-bd08f82002c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eece1a8-0175-1000-ebf4-49120829f4ca","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece1a8-0175-1000-b0c1-c1c460718989","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece1a8-0175-1000-7472-8cc5ae832797","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece1a8-0175-1000-96ff-9dd053b3aded","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece1a8-0175-1000-fd1c-438fe166bf7d","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece1a8-0175-1000-b0bc-44215d739bd2","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"},{"id":"EID6eece1a8-0175-1000-fb9e-1c5403f42a5e","parent":{"ref":"EID6eece0d7-0175-1000-ebed-bd08f82002c3"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:16:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID34d61036-244a-4639-ba84-2e9843eba3a7"},{"ref":"EIDab61a611-e083-4425-9b85-b1a8e625555a"},{"ref":"EID9a20d74d-d81f-448b-9b52-cfddce216669"}]},"parent":{"ref":"EID6eece0d7-0175-1000-facd-0bb0db021852"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:16:59Z","duration":99,"status":"PASSED"},{"id":"EID6eece1b2-0175-1000-8ac3-da5815fdba62","invokedTests":{"":null,"TestStepResult":{"id":"EID6eece1e8-0175-1000-feb3-86f61613a54a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eece4cf-0175-1000-ab4a-93af9b3fbd1a","parent":{"ref":"EID6eece1e8-0175-1000-feb3-86f61613a54a"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece4cf-0175-1000-4a68-fab3d0a556cd","parent":{"ref":"EID6eece1e8-0175-1000-feb3-86f61613a54a"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece4cf-0175-1000-774c-6f7255b38143","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"parent":{"ref":"EID6eece1e8-0175-1000-feb3-86f61613a54a"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID874294dc-3ec3-4d7b-840e-796c5bb42cfa"},{"ref":"EID64da6c6c-cafa-4bcb-a10f-3b885e65c805"},{"ref":"EIDfa4365e4-7379-464d-a785-2e84ffa26802"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-28T11:16:59Z","duration":541,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EIDe00f6e6c-8de5-4b11-877d-ee343bcc1996"},{"ref":"EIDed477390-636b-43c4-a9b2-1821729de7be"}]},"parent":{"ref":"EID6eece0d7-0175-1000-facd-0bb0db021852"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-28T11:16:59Z","duration":823,"status":"FAILED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:16:59Z","duration":1074,"status":"FAILED"},{"id":"EID6eece509-0175-1000-34bb-538662a2cf9a","testStepResults":{"TestStepResult":[{"id":"EID6eece509-0175-1000-d262-2e588ecab40e","parent":{"ref":"EID6eece509-0175-1000-34bb-538662a2cf9a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:17:00Z","duration":944,"status":"PASSED"},{"id":"EID6eece50a-0175-1000-b79d-b4dcbfca81b5","parent":{"ref":"EID6eece509-0175-1000-34bb-538662a2cf9a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece50a-0175-1000-bcc4-711a38667ad4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eece63e-0175-1000-35b7-84460f0ee637","parent":{"ref":"EID6eece50a-0175-1000-bcc4-711a38667ad4"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece63e-0175-1000-d13b-4abe390cccbf","parent":{"ref":"EID6eece50a-0175-1000-bcc4-711a38667ad4"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece63e-0175-1000-2426-821a9a3ef7d3","parent":{"ref":"EID6eece50a-0175-1000-bcc4-711a38667ad4"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece63e-0175-1000-9c81-9be164eafcb4","parent":{"ref":"EID6eece50a-0175-1000-bcc4-711a38667ad4"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece63e-0175-1000-96c6-7e947fa806cb","parent":{"ref":"EID6eece50a-0175-1000-bcc4-711a38667ad4"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"},{"id":"EID6eece63e-0175-1000-209d-8034c1af036a","parent":{"ref":"EID6eece50a-0175-1000-bcc4-711a38667ad4"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:17:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2b942eb8-0103-4259-8822-2771dba67ac5"},{"ref":"EID43e38242-c71a-4eb9-9dc8-58117f27ac84"},{"ref":"EIDabf0c3d4-1cf3-4479-b8a5-f07911bf0e70"}]},"parent":{"ref":"EID6eece509-0175-1000-34bb-538662a2cf9a"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:17:00Z","duration":89,"status":"PASSED"},{"id":"EID6eece63e-0175-1000-f515-307d6feddb92","parent":{"ref":"EID6eece509-0175-1000-34bb-538662a2cf9a"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-28T11:17:00Z","duration":51,"status":"PASSED"},{"id":"EID6eece672-0175-1000-0036-664d23081cba","parent":{"ref":"EID6eece509-0175-1000-34bb-538662a2cf9a"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-28T11:17:00Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:17:00Z","duration":362,"status":"UNDEFINED"},{"id":"EID6eece673-0175-1000-1cf0-4328ae6fdfb2","testStepResults":{"TestStepResult":[{"id":"EID6eece673-0175-1000-f694-50b7ed3d7518","parent":{"ref":"EID6eece673-0175-1000-1cf0-4328ae6fdfb2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:17:00Z","duration":943,"status":"PASSED"},{"id":"EID6eece673-0175-1000-0a51-cfa5a55d70f0","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"attachments":{"attachment":[{"ref":"EID9293dfe8-be0f-49b0-a571-298dca824011"},{"ref":"EIDab2c7bbc-34f3-46c0-bd9f-ce38172f87b4"},{"ref":"EID32909120-d172-4e22-ad11-9829d01d7987"},{"ref":"EIDb014a9a7-f35d-4c9e-bb3b-e5c0ea6ea36e"},{"ref":"EID3f748dca-f9ea-42bd-b3db-5d6e04c199bc"},{"ref":"EIDf100528b-3ed3-4469-a585-2d597227b4c6"},{"ref":"EID74bc7350-2bae-437b-8440-f9596d861835"},{"ref":"EID01b85349-e144-4fbf-9d45-5ace00c4c2a7"},{"ref":"EIDcf65d2f7-1460-4c82-8125-87fbd9baf47e"},{"ref":"EID8fe86b9b-6b03-44d6-939d-4c9ffc53a561"},{"ref":"EID6e764b42-4772-485a-a878-5cc1ffd7d049"},{"ref":"EIDb4db100f-0aa1-45be-9424-ed12a8a55ed3"},{"ref":"EID614e9f71-31d7-45c2-8da3-5f3b69c798fb"},{"ref":"EIDe16d8fae-a62b-4840-99b1-266845a89f6d"},{"ref":"EID3314f9d5-5682-4f37-b0f9-f53c13a012e2"},{"ref":"EID9e3b5bf9-ba71-4526-985a-e978d15ea5e4"},{"ref":"EID1888e2e2-eb3c-4ffa-ae34-1853ea9a4647"},{"ref":"EID7a2c8be2-6697-4682-9622-7cf362583c8c"},{"ref":"EIDdb77879e-fd5f-43cd-b884-27c12f302553"}]},"parent":{"ref":"EID6eece673-0175-1000-1cf0-4328ae6fdfb2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:17:00Z","duration":1188,"status":"SKIPPED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:17:00Z","duration":1604,"status":"SKIPPED"},{"id":"EID6eececb8-0175-1000-0429-94521a43ab60","testStepResults":{"TestStepResult":[{"id":"EID6eececb8-0175-1000-ecbe-b5314c19c2ad","parent":{"ref":"EID6eececb8-0175-1000-0429-94521a43ab60"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:17:02Z","duration":943,"status":"PASSED"},{"id":"EID6eececb8-0175-1000-43c9-a7d5f5022ad6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecef64-0175-1000-a65d-84ec3db1f18e","parent":{"ref":"EID6eececb8-0175-1000-43c9-a7d5f5022ad6"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecef64-0175-1000-e3c4-d8b59a05a168","parent":{"ref":"EID6eececb8-0175-1000-43c9-a7d5f5022ad6"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecef64-0175-1000-ece3-f4cca42e2d5f","parent":{"ref":"EID6eececb8-0175-1000-43c9-a7d5f5022ad6"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecef64-0175-1000-9949-f92daced1635","parent":{"ref":"EID6eececb8-0175-1000-43c9-a7d5f5022ad6"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID477ac333-f7c0-4f26-8275-648715a0d19a"},{"ref":"EID4ee82720-b9c4-4e1b-b850-1feb1bbeb531"},{"ref":"EID8e89d82d-cbbc-45fd-94f0-5a2ef962acfd"}]},"parent":{"ref":"EID6eececb8-0175-1000-0429-94521a43ab60"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:17:02Z","duration":542,"status":"PASSED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:17:02Z","duration":692,"status":"PASSED"},{"id":"EID6eecef75-0175-1000-c4f4-0dda26b11d34","testStepResults":{"TestStepResult":[{"id":"EID6eecef78-0175-1000-c0ec-5b961ab36452","parent":{"ref":"EID6eecef75-0175-1000-c4f4-0dda26b11d34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:17:02Z","duration":943,"status":"PASSED"},{"id":"EID6eecef78-0175-1000-6461-899251e6e1d1","parent":{"ref":"EID6eecef75-0175-1000-c4f4-0dda26b11d34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6eecef78-0175-1000-7e3d-aef77acf1dca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf033-0175-1000-f26b-12ad9e775a4b","parent":{"ref":"EID6eecef78-0175-1000-7e3d-aef77acf1dca"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf033-0175-1000-a350-90e1383f1ae7","parent":{"ref":"EID6eecef78-0175-1000-7e3d-aef77acf1dca"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf033-0175-1000-557a-5d094e458eee","parent":{"ref":"EID6eecef78-0175-1000-7e3d-aef77acf1dca"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf033-0175-1000-20f1-e87b303a39af","parent":{"ref":"EID6eecef78-0175-1000-7e3d-aef77acf1dca"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd95988f3-6b72-49d4-8524-95d4f12cbfa5"},{"ref":"EID33db86e5-e9b7-48d9-ae07-ef892a9acd3f"},{"ref":"EIDd9351f00-69c2-45ee-b531-3244b8207687"}]},"parent":{"ref":"EID6eecef75-0175-1000-c4f4-0dda26b11d34"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:17:02Z","duration":105,"status":"PASSED"},{"id":"EID6eecf033-0175-1000-afb9-48db01806661","attachments":{"attachment":{"ref":"EID094ed6a1-a2ad-4fc9-bb09-96301ab958c5"}},"parent":{"ref":"EID6eecef75-0175-1000-c4f4-0dda26b11d34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:17:03Z","duration":1,"status":"PASSED"},{"id":"EID6eecf042-0175-1000-b6b4-5edaba9d11b1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eecf052-0175-1000-35f9-852cae270908","parent":{"ref":"EID6eecf042-0175-1000-b6b4-5edaba9d11b1"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf052-0175-1000-9fca-8897f098a001","parent":{"ref":"EID6eecf042-0175-1000-b6b4-5edaba9d11b1"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6eecf052-0175-1000-424f-6587c1e596a9","parent":{"ref":"EID6eecf042-0175-1000-b6b4-5edaba9d11b1"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID198288c9-c370-4c00-ae53-fce1adc84128"},{"ref":"EID6f0b2349-c191-4d5b-8a12-5ff1db9de762"}]},"parent":{"ref":"EID6eecef75-0175-1000-c4f4-0dda26b11d34"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:17:03Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eecdf41-0175-1000-2f92-d01ad38d73d3"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:17:02Z","duration":221,"status":"PASSED"}]},"parent":{"ref":"EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:16:58Z","duration":4369,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EID0f567600-4ac6-4aa2-98e0-81b3ca2b87a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa7cd5854-4bb7-4e28-80b8-4e2327a7c465","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDa7cd5854-4bb7-4e28-80b8-4e2327a7c465"}},{"type":"Message","id":"EIDed477390-636b-43c4-a9b2-1821729de7be","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDed477390-636b-43c4-a9b2-1821729de7be"}},{"type":"ServiceResponse","id":"EID8b3153c5-00b9-4dc0-8523-7174b39572b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID8b3153c5-00b9-4dc0-8523-7174b39572b2"}},{"type":"ServiceEndpoint","id":"EID03a4b02b-00df-4d37-8161-90cf03175ec9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc002e2c0-cb4a-498a-af7f-47bad8225621","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID7f1d2290-976d-4bd9-8ead-bccf366781e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDfce6119e-4a4d-4c47-b785-7a4a49fe4b71","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDfce6119e-4a4d-4c47-b785-7a4a49fe4b71"}},{"type":"ServiceResponse","id":"EID3d279737-8c89-434b-8e10-2513e0e85a26","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID3d279737-8c89-434b-8e10-2513e0e85a26"}},{"type":"GetParameter","id":"EID5a44a8d4-aad4-4bfe-8c02-ee610ff436e6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID2ed1e435-1852-47ca-aa64-426c6572bb98","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID2ed1e435-1852-47ca-aa64-426c6572bb98"}},{"type":"ServiceResponse","id":"EID4ee82720-b9c4-4e1b-b850-1feb1bbeb531","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4ee82720-b9c4-4e1b-b850-1feb1bbeb531"}},{"type":"ServiceResponse","id":"EID451a1f53-3184-4eaf-8086-08d22dbfab8d","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID451a1f53-3184-4eaf-8086-08d22dbfab8d"}},{"type":"Message","id":"EIDafb0a01b-02f0-4a7f-a295-27d125db44e2","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDafb0a01b-02f0-4a7f-a295-27d125db44e2"}},{"type":"Message","id":"EIDb4db100f-0aa1-45be-9424-ed12a8a55ed3","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDb4db100f-0aa1-45be-9424-ed12a8a55ed3"}},{"type":"Message","id":"EIDf4a626ee-09be-4f1d-9cb6-2e670bf02554","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDf4a626ee-09be-4f1d-9cb6-2e670bf02554"}},{"type":"Message","id":"EID71188997-0c9e-4ca2-82f6-aaae5c3f8cf5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID71188997-0c9e-4ca2-82f6-aaae5c3f8cf5"}},{"type":"Message","id":"EIDc6b63487-a521-4151-926d-ec0898ee1837","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDc6b63487-a521-4151-926d-ec0898ee1837"}},{"type":"Message","id":"EID7a2c8be2-6697-4682-9622-7cf362583c8c","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID7a2c8be2-6697-4682-9622-7cf362583c8c"}},{"type":"ServiceEndpoint","id":"EID08898b82-bfde-4a05-924d-75300dd78782","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID926fd7da-021a-47cc-85e6-a922019c2545","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID98854801-1c72-4123-add6-ea7cc0592214","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID98854801-1c72-4123-add6-ea7cc0592214"}},{"type":"GetParameter","id":"EIDf71222aa-9cf9-4ee8-b47d-95e9d48617e2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1a912a9c-3318-47d7-bad7-b04b6eb573da","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID1a912a9c-3318-47d7-bad7-b04b6eb573da"}},{"type":"Message","id":"EIDf100528b-3ed3-4469-a585-2d597227b4c6","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDf100528b-3ed3-4469-a585-2d597227b4c6"}},{"type":"ServiceEndpoint","id":"EIDbed02850-3b31-4f4f-b0e8-c50a9e560117","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDc531f561-9229-414b-9f9a-decd2522a125","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDc531f561-9229-414b-9f9a-decd2522a125"}},{"type":"Message","id":"EID9a47608d-fced-4180-8844-2c91f68393d9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID9a47608d-fced-4180-8844-2c91f68393d9"}},{"type":"ServiceEndpoint","id":"EID3792d798-2f60-41eb-b789-75706ba2e871","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5cedf569-7f16-4ea1-803b-f3b125e773f7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDdd2a69ed-1402-4b6c-ab27-f4d42ed7bf49","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID42e6c9ba-6d5f-4d7a-b299-a34a2cfd8fae","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID42e6c9ba-6d5f-4d7a-b299-a34a2cfd8fae"}},{"type":"ServiceResponse","id":"EIDe3cfd4e9-4a52-4057-b337-30d47d3530d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDe3cfd4e9-4a52-4057-b337-30d47d3530d5"}},{"type":"GetParameter","id":"EID90adb0f4-a2b1-4f46-8f0c-19086963edca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID5414f3fa-6bf5-4061-9059-3f51a9e5b99d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID5414f3fa-6bf5-4061-9059-3f51a9e5b99d"}},{"type":"ServiceEndpoint","id":"EIDa114ef68-3469-4d54-b979-5ee3994915d0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID58cbd8d7-55f9-4573-8a1e-d452b8909330","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID632dc433-c8b4-4771-990c-5b90fb09a9c6","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID632dc433-c8b4-4771-990c-5b90fb09a9c6"}},{"type":"ServiceEndpoint","id":"EID2ac815b8-fba6-400e-9c13-f99bfaa08270","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2a5621d4-10c5-40db-868c-f27a02e77ed2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID2a5621d4-10c5-40db-868c-f27a02e77ed2"}},{"type":"Message","id":"EID4893f880-ae90-4e8c-93de-924c9d224760","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4893f880-ae90-4e8c-93de-924c9d224760"}},{"type":"ServiceEndpoint","id":"EID449b13d5-0151-44fd-98b4-725e879b5865","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID7daea2e7-9d5b-4bc5-a9cc-4ef42fa440fc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDab2c7bbc-34f3-46c0-bd9f-ce38172f87b4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDab2c7bbc-34f3-46c0-bd9f-ce38172f87b4"}},{"type":"ServiceEndpoint","id":"EIDa69e28c7-34e3-4508-947c-654d5a99f38a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID16290a24-8e08-45cf-931b-3e241b52ce51","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID16290a24-8e08-45cf-931b-3e241b52ce51"}},{"type":"ServiceEndpoint","id":"EID02c989f8-6aba-4144-9ca0-f926b299372d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID098f9e5e-190a-4669-a302-5b9ce68e97f7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID1444a3fc-cd1e-4808-b92d-f62748dd2774","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID1444a3fc-cd1e-4808-b92d-f62748dd2774"}},{"type":"ServiceResponse","id":"EID8c9dfe38-6235-412a-8f94-0a5708554049","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID8c9dfe38-6235-412a-8f94-0a5708554049"}},{"type":"ServiceResponse","id":"EIDc80e9955-7b64-4865-b2e2-8a5878cf3375","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDc80e9955-7b64-4865-b2e2-8a5878cf3375"}},{"type":"ServiceEndpoint","id":"EID9cb15dc0-e8ec-4e17-8552-e380ef39ee7e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa280396c-9c1c-4c70-9758-a989a48f05f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDa280396c-9c1c-4c70-9758-a989a48f05f6"}},{"type":"ServiceEndpoint","id":"EID89d8aea0-9f4f-4cd5-86fb-ee63ad230569","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID92cefac2-4136-49b5-995f-7ac2d66c6530","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID646c8691-14ce-416e-9ef9-3913c4b69fdd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID091e8590-5eca-4223-9a7f-7e35d4d854f0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID091e8590-5eca-4223-9a7f-7e35d4d854f0"}},{"type":"ServiceEndpoint","id":"EID7743101c-bbf0-42f8-bae7-61a8c4799712","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDb4d4ea2d-1f82-425f-9747-ace0ffcd3dfb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDb4d4ea2d-1f82-425f-9747-ace0ffcd3dfb"}},{"type":"Message","id":"EIDbaea6461-00f7-4f2d-8fea-823ac272efef","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDbaea6461-00f7-4f2d-8fea-823ac272efef"}},{"type":"GetParameter","id":"EID43e8bcf9-1461-4f7d-abf0-13b3206a543d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID30d06d29-1af5-4e3b-bded-32c452557eba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EIDcb33ea8b-529b-4b3e-8b5c-6b5e413962ea","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDcb33ea8b-529b-4b3e-8b5c-6b5e413962ea"}},{"type":"GetParameter","id":"EID27172037-a666-4df1-8063-979cafb12ade","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID874294dc-3ec3-4d7b-840e-796c5bb42cfa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"GetParameter","id":"EID3b282513-fbf3-425d-b77d-5c59f07d752d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID55b6024e-d4e4-4dc2-bd72-9f1608d1b087","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9f6b46f6-8a61-4859-8b49-c54c3b96c8af","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID9f6b46f6-8a61-4859-8b49-c54c3b96c8af"}},{"type":"GetParameter","id":"EID4ee9dfcb-538f-4510-afba-0b6f0e645d08","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDb487394c-2d57-4127-8b41-5f1d3d748a52","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID2b942eb8-0103-4259-8822-2771dba67ac5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDae474380-759d-44d7-808c-122daac315bd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDae474380-759d-44d7-808c-122daac315bd"}},{"type":"LogFile","id":"EID817de8fb-839b-4cfb-8b65-e4759a5a0d54","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID817de8fb-839b-4cfb-8b65-e4759a5a0d54"}},{"type":"GetParameter","id":"EID245ef0f2-0415-4c7e-a028-9db8302bb9fe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID720bc672-1558-4026-944a-17847243815d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID5ff42549-ca05-4730-a026-a65dd123901b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9c7f4859-1abe-4c4d-b517-b03765541310","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID8e89d82d-cbbc-45fd-94f0-5a2ef962acfd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID2e9c56f3-132b-4e31-9ac9-93df5b0cee1c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID2e9c56f3-132b-4e31-9ac9-93df5b0cee1c"}},{"type":"ServiceEndpoint","id":"EID304022bf-6a0c-4c8a-a430-3c071cab3e07","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID8386be2f-43ff-4d6a-b92a-267a74cb3f00","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID8386be2f-43ff-4d6a-b92a-267a74cb3f00"}},{"type":"GetParameter","id":"EIDa804ba65-e8af-4d8f-8b79-1b3bacdbee9e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDff52db1b-00f6-44ae-8942-f2e293816c5f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDff52db1b-00f6-44ae-8942-f2e293816c5f"}},{"type":"ServiceResponse","id":"EID60b277e3-2357-43aa-94a8-52443eb6899e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID60b277e3-2357-43aa-94a8-52443eb6899e"}},{"type":"ServiceResponse","id":"EIDbe11d933-3e95-4139-813e-5363abcd3e75","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDbe11d933-3e95-4139-813e-5363abcd3e75"}},{"type":"ServiceEndpoint","id":"EID1cc71fc0-a8a5-4d1a-a718-0bd76c24ec4e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDafb8653f-5115-4f9a-b4d6-dbf0d9dec5ff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDafb8653f-5115-4f9a-b4d6-dbf0d9dec5ff"}},{"type":"ServiceResponse","id":"EID901d2925-6765-483a-9d8b-238fca5496b8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID901d2925-6765-483a-9d8b-238fca5496b8"}},{"type":"ServiceEndpoint","id":"EID502ae46b-b713-40f5-93fb-2e183f58c21c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID47c55d8b-1e55-4cd4-98b5-f2c09e22c243","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID47c55d8b-1e55-4cd4-98b5-f2c09e22c243"}},{"type":"ServiceEndpoint","id":"EID3fb5d5a8-a0f7-4bfc-88ea-6a1c4b96be17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID09c87728-c8c6-4527-b62d-2756616b0e25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID4085b37c-4c2b-4a00-98d3-0af856f37fc2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4085b37c-4c2b-4a00-98d3-0af856f37fc2"}},{"type":"ServiceResponse","id":"EID46823a58-f9a8-4675-b039-8ca5ab753465","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID46823a58-f9a8-4675-b039-8ca5ab753465"}},{"type":"GetParameter","id":"EID6b9a60cc-001b-49bc-8bb3-3071aa2d6885","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID74bc7350-2bae-437b-8440-f9596d861835","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID74bc7350-2bae-437b-8440-f9596d861835"}},{"type":"Message","id":"EID0b55670d-2e08-4e92-a5a8-260ad063f830","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID0b55670d-2e08-4e92-a5a8-260ad063f830"}},{"type":"ServiceEndpoint","id":"EIDd30d0301-0040-4f2c-8451-59e5370aa6d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDaa492b95-9f25-4a63-98f0-15decfc01d31","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDaa492b95-9f25-4a63-98f0-15decfc01d31"}},{"type":"Message","id":"EID4fdbfa96-040a-4723-97c3-e36b81de63da","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4fdbfa96-040a-4723-97c3-e36b81de63da"}},{"type":"Message","id":"EID62a3eea2-93a8-4aa7-8399-1f72bdd50826","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID62a3eea2-93a8-4aa7-8399-1f72bdd50826"}},{"type":"ServiceEndpoint","id":"EID392977d8-9b34-4830-bec8-56af020ca3ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV92X2dwa2cuemlw"},{"type":"Message","id":"EIDe16d8fae-a62b-4840-99b1-266845a89f6d","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDe16d8fae-a62b-4840-99b1-266845a89f6d"}},{"type":"ServiceResponse","id":"EID6fa67810-c24a-44cc-8518-eff3a39cf00c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID6fa67810-c24a-44cc-8518-eff3a39cf00c"}},{"type":"ServiceEndpoint","id":"EIDbd2bd24e-756e-4924-a3a7-1f8f61efdb86","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID919e5a43-83fd-4ab3-a10a-79bc51d9ac8c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID919e5a43-83fd-4ab3-a10a-79bc51d9ac8c"}},{"type":"GetParameter","id":"EID5ffa2fdd-132e-4ac4-857e-f4fdaf168abc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb2b0ae1c-5f81-40f0-a862-1bbf2e5788cb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDb2b0ae1c-5f81-40f0-a862-1bbf2e5788cb"}},{"type":"ServiceResponse","id":"EIDf777ad0d-5df5-406f-9b0e-caab97be222b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDf777ad0d-5df5-406f-9b0e-caab97be222b"}},{"type":"ServiceEndpoint","id":"EID137b68e3-ea96-4377-992c-2104e735a40b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID601d5d0a-9c4a-4b3a-9054-36b9daa292d7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID91aa5ebe-42f2-4d45-86ec-6f8f4ea09884","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID1d0874df-ce32-4ed4-b775-9896bf1c2e55","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID1d0874df-ce32-4ed4-b775-9896bf1c2e55"}},{"type":"Message","id":"EID4f7ae49a-8537-4d08-915d-0d4213197de9","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4f7ae49a-8537-4d08-915d-0d4213197de9"}},{"type":"GetParameter","id":"EIDabf0c3d4-1cf3-4479-b8a5-f07911bf0e70","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID614e9f71-31d7-45c2-8da3-5f3b69c798fb","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID614e9f71-31d7-45c2-8da3-5f3b69c798fb"}},{"type":"ServiceResponse","id":"EID92d0335d-82b0-4fdf-a3a9-a4dfab87eac2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID92d0335d-82b0-4fdf-a3a9-a4dfab87eac2"}},{"type":"Message","id":"EID3f748dca-f9ea-42bd-b3db-5d6e04c199bc","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID3f748dca-f9ea-42bd-b3db-5d6e04c199bc"}},{"type":"ServiceResponse","id":"EID64da6c6c-cafa-4bcb-a10f-3b885e65c805","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID64da6c6c-cafa-4bcb-a10f-3b885e65c805"}},{"type":"Message","id":"EIDb014a9a7-f35d-4c9e-bb3b-e5c0ea6ea36e","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDb014a9a7-f35d-4c9e-bb3b-e5c0ea6ea36e"}},{"type":"ServiceResponse","id":"EIDf55baa92-2080-4f76-b498-3b3cde6d9c22","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDf55baa92-2080-4f76-b498-3b3cde6d9c22"}},{"type":"ServiceResponse","id":"EIDe2ce2a42-e4f9-44b3-afa4-9b42fcd47e43","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDe2ce2a42-e4f9-44b3-afa4-9b42fcd47e43"}},{"type":"ServiceResponse","id":"EID43e38242-c71a-4eb9-9dc8-58117f27ac84","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID43e38242-c71a-4eb9-9dc8-58117f27ac84"}},{"type":"Message","id":"EID9e3b5bf9-ba71-4526-985a-e978d15ea5e4","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID9e3b5bf9-ba71-4526-985a-e978d15ea5e4"}},{"type":"GetParameter","id":"EID093d19f3-38a0-4d01-a217-f1fd0f92a164","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID68a17673-ae9e-40f3-b3f9-1cc6e6e21712","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID112bebb7-6327-4a75-8009-e711b32d965c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID112bebb7-6327-4a75-8009-e711b32d965c"}},{"type":"ServiceEndpoint","id":"EID4aacd3a0-2e8b-4774-8acc-db7651cc611f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID8fe86b9b-6b03-44d6-939d-4c9ffc53a561","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID8fe86b9b-6b03-44d6-939d-4c9ffc53a561"}},{"type":"Message","id":"EIDdb77879e-fd5f-43cd-b884-27c12f302553","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDdb77879e-fd5f-43cd-b884-27c12f302553"}},{"type":"GetParameter","id":"EIDef087dde-e1a1-4748-8d30-de7196912613","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9a81b34e-1b7c-4044-bd3d-f8b3c675a57d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDdce0ea97-0678-407e-909a-270d59dd10e6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDdce0ea97-0678-407e-909a-270d59dd10e6"}},{"type":"ServiceEndpoint","id":"EID6517a30e-0fee-4f39-a8dc-619a1b353200","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID48f84cbb-d596-4fa3-a153-0a7de1e57e82","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID48f84cbb-d596-4fa3-a153-0a7de1e57e82"}},{"type":"Message","id":"EID01b85349-e144-4fbf-9d45-5ace00c4c2a7","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID01b85349-e144-4fbf-9d45-5ace00c4c2a7"}},{"type":"GetParameter","id":"EIDa10cbd32-d90e-4dce-8f11-398f5532a680","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID243d363e-53d5-4cd8-af5a-40aa00ffe42d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID243d363e-53d5-4cd8-af5a-40aa00ffe42d"}},{"type":"Message","id":"EID9293dfe8-be0f-49b0-a571-298dca824011","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID9293dfe8-be0f-49b0-a571-298dca824011"}},{"type":"ServiceResponse","id":"EID33db86e5-e9b7-48d9-ae07-ef892a9acd3f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID33db86e5-e9b7-48d9-ae07-ef892a9acd3f"}},{"type":"GetParameter","id":"EIDfa4365e4-7379-464d-a785-2e84ffa26802","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV9sX2dwa2cuemlw"},{"type":"Message","id":"EIDcf65d2f7-1460-4c82-8125-87fbd9baf47e","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDcf65d2f7-1460-4c82-8125-87fbd9baf47e"}},{"type":"Message","id":"EIDa0d645c4-e693-43e5-9613-e0d630cc8de7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDa0d645c4-e693-43e5-9613-e0d630cc8de7"}},{"type":"ServiceResponse","id":"EID88edc4f4-e7a3-402c-bffa-1302fc143b51","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID88edc4f4-e7a3-402c-bffa-1302fc143b51"}},{"type":"ServiceResponse","id":"EID23ed9cd3-0de2-49e5-8022-85309e5f33e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID23ed9cd3-0de2-49e5-8022-85309e5f33e9"}},{"type":"ServiceResponse","id":"EID22e69c4b-acc2-44cf-9d56-a0e1f7a3a78d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID22e69c4b-acc2-44cf-9d56-a0e1f7a3a78d"}},{"type":"GetParameter","id":"EID5f2cb4b0-c800-4080-9dea-4a37952781a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID2611c062-b232-4141-a0ce-9e21e1f63ef7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID21a418e6-976a-4458-8fab-739aec474fee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID21a418e6-976a-4458-8fab-739aec474fee"}},{"type":"ServiceEndpoint","id":"EID34d61036-244a-4639-ba84-2e9843eba3a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID5d5c45f6-af56-48c2-9428-9fb741cc5e86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID7145f7d0-6290-4a09-8433-0bcff314572f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID7145f7d0-6290-4a09-8433-0bcff314572f"}},{"type":"Message","id":"EID32909120-d172-4e22-ad11-9829d01d7987","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID32909120-d172-4e22-ad11-9829d01d7987"}},{"type":"GetParameter","id":"EIDcaf93f86-663f-466f-9672-d80e0efc7afb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID0709dc92-79fa-4e65-9242-2feec5370f62","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID813ced29-4ea9-48da-a60b-6beda427b8ad","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID813ced29-4ea9-48da-a60b-6beda427b8ad"}},{"type":"GetParameter","id":"EIDc1bb70d0-74a9-4d02-90d4-3b16e637e54d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID04856c5b-cc54-46b3-a9d6-3123bbc573a3","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID04856c5b-cc54-46b3-a9d6-3123bbc573a3"}},{"type":"GetParameter","id":"EID865e1549-4aab-4eb7-9fdc-a2b8945492d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDa5d23045-e0f1-4f1d-89d9-7dc8cc56bbb3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd3da24fb-c559-465a-99f8-097a8a5acaa1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf003f494-a0a2-4ab4-b7a4-7510c78b341a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDf003f494-a0a2-4ab4-b7a4-7510c78b341a"}},{"type":"GetParameter","id":"EIDab358153-b426-4a44-8fca-08d1a8b06bbc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf41ba235-74e3-44a0-adac-ad92f9f0f6ac","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDf41ba235-74e3-44a0-adac-ad92f9f0f6ac"}},{"type":"ServiceEndpoint","id":"EID56ac64bd-841d-4ac5-9886-5d9f3bda2051","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID1888e2e2-eb3c-4ffa-ae34-1853ea9a4647","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID1888e2e2-eb3c-4ffa-ae34-1853ea9a4647"}},{"type":"GetParameter","id":"EID97d61db2-e4f2-465c-aedd-88279afafbfd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID3314f9d5-5682-4f37-b0f9-f53c13a012e2","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID3314f9d5-5682-4f37-b0f9-f53c13a012e2"}},{"type":"GetParameter","id":"EID34045dae-fb7d-46a5-87de-f2eb9cbb82af","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID198288c9-c370-4c00-ae53-fce1adc84128","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EID14b40385-8648-4b9a-8113-0dc59834653f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID14b40385-8648-4b9a-8113-0dc59834653f"}},{"type":"ServiceEndpoint","id":"EIDd95988f3-6b72-49d4-8524-95d4f12cbfa5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID5bf0b9c6-c3a2-40d3-9e8b-a9cde1d7194b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDe6788715-6b36-420e-8de1-235a4a00bc07","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDe6788715-6b36-420e-8de1-235a4a00bc07"}},{"type":"ServiceEndpoint","id":"EID7ab33628-58d1-4157-b0d6-8356a88b19a3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDfae7e492-6098-4f26-8ffb-088e3a6cc7a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDfae7e492-6098-4f26-8ffb-088e3a6cc7a2"}},{"type":"Message","id":"EID4e4fd03d-4bd6-4c6a-917f-9665076a4d93","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4e4fd03d-4bd6-4c6a-917f-9665076a4d93"}},{"type":"GetParameter","id":"EID005f4fed-cee4-4c83-907a-12a867c96f84","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID477ac333-f7c0-4f26-8275-648715a0d19a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID04a560b1-b676-4a43-8b96-e08f2b6dc3d7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDa1c5c0ad-635e-4739-9424-69a51e8ab155","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf183877f-ea7a-47f1-899a-f3913f482e44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDdc47b342-c590-4916-8883-12ca594f6ba2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDdc47b342-c590-4916-8883-12ca594f6ba2"}},{"type":"Message","id":"EID094ed6a1-a2ad-4fc9-bb09-96301ab958c5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID094ed6a1-a2ad-4fc9-bb09-96301ab958c5"}},{"type":"ServiceResponse","id":"EID4ecd9388-88b7-4353-bb4e-a2b378eb4f14","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID4ecd9388-88b7-4353-bb4e-a2b378eb4f14"}},{"type":"GetParameter","id":"EID5d91bdfa-4274-4dcc-ab1e-c7993118e584","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDe2176ecf-53e7-4ff3-8d5f-7f4644d238d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID1285a138-74f5-47cf-a847-a8b803a0a98f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDe00f6e6c-8de5-4b11-877d-ee343bcc1996","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDe00f6e6c-8de5-4b11-877d-ee343bcc1996"}},{"type":"GetParameter","id":"EID99f03d28-cbc3-488e-9b9e-c57d13d1c40e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDab61a611-e083-4425-9b85-b1a8e625555a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDab61a611-e083-4425-9b85-b1a8e625555a"}},{"type":"GetParameter","id":"EIDe5855c6a-92e9-460f-9881-0648a22dc0df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd9351f00-69c2-45ee-b531-3244b8207687","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID649fb28a-33c0-4ab1-8cd8-920672407d0e","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID649fb28a-33c0-4ab1-8cd8-920672407d0e"}},{"type":"ServiceEndpoint","id":"EIDf1669a6f-a8ae-495c-8482-8773b6e0779e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID19e5992d-0bca-4219-9304-de96621b32cc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID19e5992d-0bca-4219-9304-de96621b32cc"}},{"type":"GetParameter","id":"EID6f0b2349-c191-4d5b-8a12-5ff1db9de762","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID9892c7bf-d4fa-4f3a-a814-87a6c45ead7a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV92X2dwa2cuemlw"},{"type":"Message","id":"EID6e764b42-4772-485a-a878-5cc1ffd7d049","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID6e764b42-4772-485a-a878-5cc1ffd7d049"}},{"type":"Message","id":"EIDed2a420e-d656-411f-a651-8c5f57acf047","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EIDed2a420e-d656-411f-a651-8c5f57acf047"}},{"type":"Message","id":"EID802e06d6-4c5c-43a2-a7cf-94dc387e96d0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID802e06d6-4c5c-43a2-a7cf-94dc387e96d0"}},{"type":"GetParameter","id":"EID26d15417-036b-42b0-9845-adbe9e837bfa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9269fcc9-2bc9-4f8b-b583-02ef84364beb","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID9269fcc9-2bc9-4f8b-b583-02ef84364beb"}},{"type":"Message","id":"EID6398b249-43fd-443b-bde9-a4b344f59b2a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID6398b249-43fd-443b-bde9-a4b344f59b2a"}},{"type":"Message","id":"EID9dc311a7-cd60-4b1c-9b0d-d652c37d7808","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID7e3ef858-31b3-4bba-b3f0-d02dd7f48bfe/Attachments/EID9dc311a7-cd60-4b1c-9b0d-d652c37d7808"}},{"type":"GetParameter","id":"EID9a20d74d-d81f-448b-9b52-cfddce216669","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa9b23f74-86cb-4e38-b4aa-b4b35d585a93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbf9045fc-d46e-427c-a1ce-339cb41b1a00","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID35c0e803-b98d-4d6b-8fbf-071af1c62acb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID65c89e05-c6f2-4a0e-85c6-e06ca492dad5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb4b3636b-7d2d-4307-856a-cbca46b727c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:16:44Z","duration":18261,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:17:15.225 [print] EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:17:15.225 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:17:15.225 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:17:15.225 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:17:15.225 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:17:15.225 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:17:15.225 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID51543eec-6f5a-4bc1-ad2c-8a5bf690e7e5/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:17:15.232 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
11:17:15.232 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
2.633
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:40.827 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.633
11:10:40.828 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 257
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?"}}}

11:10:43.459 response time in milliseconds: 2526.42
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883443273","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:43.461 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.209
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:16.073 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.208
11:10:16.074 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

11:10:17.282 response time in milliseconds: 1206.63
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:17 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883417218","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:17.283 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.417
* print "testing url:" + metadata.url 0.000
11:15:13.940 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.416
11:15:13.941 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:14.357 response time in milliseconds: 415.97
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:14 GMT
1 < ETag: "18765-5af58a64cc00f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.402
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.402
11:15:14.364 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:14.765 response time in milliseconds: 401.34
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:14 GMT
1 < ETag: "18765-5af58a64cc00f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:14.766 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.407
* print "testing url:" + metadata.url 0.000
11:06:05.113 [print] testing url:https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.407
11:06:05.114 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:05.521 response time in milliseconds: 406.72
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:05 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.477
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.477
11:06:05.526 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:06.002 response time in milliseconds: 476.21
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:05 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:06.003 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.368
* print "testing url:" + metadata.url 0.000
11:15:59.775 [print] testing url:https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.368
11:15:59.775 request:
1 > HEAD https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:00.143 response time in milliseconds: 367.72
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3316
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:16:00 GMT
1 < Etag: "3947748438"
1 < Last-Modified: Tue, 27 Oct 2020 19:15:16 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
0.364
Given url metadata.url 0.000
When method HEAD 0.364
11:16:00.148 request:
1 > HEAD https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: service.pdok.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:00.510 response time in milliseconds: 362.25
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: Content-Type
1 < Access-Control-Allow-Method: GET,OPTIONS,HEAD
1 < Access-Control-Allow-Origin: *
1 < Content-Length: 3316
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:16:00 GMT
1 < Etag: "3947748438"
1 < Last-Modified: Tue, 27 Oct 2020 19:15:16 GMT
1 < Server: PDOK ATOM SERVER
1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.400
* print "testing url:" + metadata.url 0.003
11:13:24.740 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.397
11:13:24.744 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:25.140 response time in milliseconds: 396.44
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:13:24 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.409
Given url metadata.url 0.000
When method HEAD 0.408
11:13:25.145 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:25.554 response time in milliseconds: 408.12
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:13:25 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:53.487
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.002
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.004
* print testRunRequest 0.000
11:04:44.242 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.625
11:04:44.245 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:04:49.864 response time in milliseconds: 4842.85
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:49 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:04:47 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ccccbbb9-d6ca-4f82-b144-0cafe77ceb89.json","testRuns":{"TestRun":{"id":"EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:46.958Z","testTasks":{"TestTask":{"id":"EIDc15fdccb-250c-4144-be65-a85fba8c9483","parent":{"ref":"EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID99845b30-ee48-4029-be20-168de906f849"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID99845b30-ee48-4029-be20-168de906f849","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:44.697Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:46.499Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.001
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:04:49.872 [print] EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:04:49.873 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
11:04:49.874 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:04:49.875 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ccccbbb9-d6ca-4f82-b144-0cafe77ceb89.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.001
11:04:49.876 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:04:49.877 [print] statuspath TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89
* print 'progresspath ', progresspath 0.002
11:04:49.880 [print] progresspath  TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
Given path progresspath 0.000
When method GET 0.518
11:04:49.881 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:50.399 response time in milliseconds: 516.30
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:04:50 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:04:50.399 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)",
    "28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:04:46 - Preparing 1 Test Task:",
    "28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)",
    "28.10.2020 11:04:46 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:04:46 -  with parameters: ",
    "28.10.2020 11:04:46 - etf.testcases = *",
    "28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:04:47 - Setting state to CREATED",
    "28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z",
    "28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:04:49 - Project Properties: ",
    "28.10.2020 11:04:49 - etf.testcases - * ",
    "28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:04:49 - username -  ",
    "28.10.2020 11:04:49 - authUser -  ",
    "28.10.2020 11:04:49 - authMethod - basic ",
    "28.10.2020 11:04:49 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:47.325
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
11:04:50.401 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:50.920 response time in milliseconds: 518.21
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:04:50 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized"]}

11:04:50.921 retry condition not satisfied: response.val == response.max
11:04:50.921 sleeping before retry #1
11:04:55.922 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:04:56.435 response time in milliseconds: 511.70
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:04:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized"]}

11:04:56.436 retry condition not satisfied: response.val == response.max
11:04:56.436 sleeping before retry #2
11:05:01.437 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:01.965 response time in milliseconds: 524.00
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:05:01 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:05:01.965 retry condition not satisfied: response.val == response.max
11:05:01.965 sleeping before retry #3
11:05:06.967 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:07.490 response time in milliseconds: 522.61
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:05:07 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:05:07.491 retry condition not satisfied: response.val == response.max
11:05:07.491 sleeping before retry #4
11:05:12.492 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:13.021 response time in milliseconds: 527.15
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:05:12 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"160","max":"161","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:13.021 retry condition not satisfied: response.val == response.max
11:05:13.021 sleeping before retry #5
11:05:18.023 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:18.536 response time in milliseconds: 512.61
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:05:18 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:18.537 retry condition not satisfied: response.val == response.max
11:05:18.537 sleeping before retry #6
11:05:23.538 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:24.079 response time in milliseconds: 534.27
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:05:24 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:24.079 retry condition not satisfied: response.val == response.max
11:05:24.080 sleeping before retry #7
11:05:29.081 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:29.595 response time in milliseconds: 513.55
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:05:29 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:29.596 retry condition not satisfied: response.val == response.max
11:05:29.596 sleeping before retry #8
11:05:34.597 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:35.110 response time in milliseconds: 511.62
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:05:35 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:35.111 retry condition not satisfied: response.val == response.max
11:05:35.111 sleeping before retry #9
11:05:40.113 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:40.635 response time in milliseconds: 521.72
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:05:40 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:40.636 retry condition not satisfied: response.val == response.max
11:05:40.636 sleeping before retry #10
11:05:45.637 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:46.375 response time in milliseconds: 736.45
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:05:46 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:46.375 retry condition not satisfied: response.val == response.max
11:05:46.375 sleeping before retry #11
11:05:51.377 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:51.929 response time in milliseconds: 549.60
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:05:51 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:05:51.929 retry condition not satisfied: response.val == response.max
11:05:51.929 sleeping before retry #12
11:05:56.931 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:57.481 response time in milliseconds: 545.87
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:05:57 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:05:57.481 retry condition not satisfied: response.val == response.max
11:05:57.481 sleeping before retry #13
11:06:02.483 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:03.011 response time in milliseconds: 527.23
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:06:02 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:06:03.019 retry condition not satisfied: response.val == response.max
11:06:03.019 sleeping before retry #14
11:06:08.021 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:08.525 response time in milliseconds: 503.72
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:06:08 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:06:08.526 retry condition not satisfied: response.val == response.max
11:06:08.526 sleeping before retry #15
11:06:13.526 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:14.040 response time in milliseconds: 513.19
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:06:13 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:06:14.041 retry condition not satisfied: response.val == response.max
11:06:14.041 sleeping before retry #16
11:06:19.042 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:19.556 response time in milliseconds: 512.89
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:06:19 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:06:19.557 retry condition not satisfied: response.val == response.max
11:06:19.557 sleeping before retry #17
11:06:24.558 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:25.088 response time in milliseconds: 526.84
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:06:25 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:06:25.090 retry condition not satisfied: response.val == response.max
11:06:25.090 sleeping before retry #18
11:06:30.092 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:32.101 response time in milliseconds: 2007.29
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:06:32 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:06:32.106 retry condition not satisfied: response.val == response.max
11:06:32.106 sleeping before retry #19
11:06:37.107 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:37.725 response time in milliseconds: 614.12
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:06:37 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 -  TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 -  with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username -  ","28.10.2020 11:04:49 - authUser -  ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:06:36 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:06:37.725 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
2.680
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:32.327 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.679
11:16:32.331 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities"}}}

11:16:35.006 response time in milliseconds: 2571.47
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:34 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883794843","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:16:35.007 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
4.154
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:09.245 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.154
11:12:09.246 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities"}}}

11:12:13.399 response time in milliseconds: 4047.79
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883533230","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:12:13.399 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.406
* print "testing url:" + metadata.url 0.000
11:06:41.809 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.406
11:06:41.810 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:42.215 response time in milliseconds: 403.96
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:42 GMT
1 < ETag: "25c56-5af58ad50ef9f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.394
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.394
11:06:42.221 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:42.614 response time in milliseconds: 392.77
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:42 GMT
1 < ETag: "25c56-5af58ad50ef9f-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:06:42.615 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.450
* print "testing url:" + metadata.url 0.000
11:14:06.934 [print] testing url:https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.450
11:14:06.934 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:07.384 response time in milliseconds: 449.40
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:06 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.406
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.406
11:14:07.389 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:07.795 response time in milliseconds: 405.64
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:14:07 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:14:07.795 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.391
* print "testing url:" + metadata.url 0.000
11:14:27.977 [print] testing url:https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.391
11:14:27.978 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:28.367 response time in milliseconds: 388.78
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:28 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.385
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.384
11:14:28.373 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:28.757 response time in milliseconds: 384.00
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:28 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:28.759 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
45.028
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:39.160 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 22.193
11:13:39.160 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 258
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}}}

11:14:01.345 response time in milliseconds: 21434.18
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:00 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:13:58 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4bd38577-95aa-4e2d-989c-a3abaea72003.json","testRuns":{"TestRun":{"id":"EID4bd38577-95aa-4e2d-989c-a3abaea72003","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:13:55.279Z","testTasks":{"TestTask":{"id":"EIDc32f1d21-cc73-4535-8e05-74c6f287accf","parent":{"ref":"EID4bd38577-95aa-4e2d-989c-a3abaea72003"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID65debf6d-9cc5-43e6-ad78-30d7a5259fda"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID65debf6d-9cc5-43e6-ad78-30d7a5259fda","remoteResource":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:13:39.602Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:13:51.346Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:01.354 [print] EID4bd38577-95aa-4e2d-989c-a3abaea72003
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:01.354 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:01.354 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:01.354 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4bd38577-95aa-4e2d-989c-a3abaea72003.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:01.354 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:01.355 [print] statuspath TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003
* print 'progresspath ', progresspath 0.000
11:14:01.355 [print] progresspath  TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/progress
Given path progresspath 0.000
When method GET 0.512
11:14:01.355 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:01.867 response time in milliseconds: 511.30
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:01 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["28.10.2020 11:13:55 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:55 UTC 2020)","28.10.2020 11:13:55 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:55 - Preparing 1 Test Task:","28.10.2020 11:13:55 -  TestTask 1 (c32f1d21-cc73-4535-8e05-74c6f287accf)","28.10.2020 11:13:55 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:55 -  with parameters: ","28.10.2020 11:13:55 - etf.testcases = *","28.10.2020 11:13:55 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:55 - Setting state to CREATED","28.10.2020 11:13:55 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:00 - Starting TestRun.4bd38577-95aa-4e2d-989c-a3abaea72003 at 2020-10-28T11:14:01Z","28.10.2020 11:14:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:01 - Project Properties: ","28.10.2020 11:14:01 - etf.testcases - * ","28.10.2020 11:14:01 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","28.10.2020 11:14:01 - username -  ","28.10.2020 11:14:01 - authUser -  ","28.10.2020 11:14:01 - authMethod - basic ","28.10.2020 11:14:01 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:14:01.867 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "28.10.2020 11:13:55 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:55 UTC 2020)",
    "28.10.2020 11:13:55 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:13:55 - Preparing 1 Test Task:",
    "28.10.2020 11:13:55 -  TestTask 1 (c32f1d21-cc73-4535-8e05-74c6f287accf)",
    "28.10.2020 11:13:55 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:13:55 -  with parameters: ",
    "28.10.2020 11:13:55 - etf.testcases = *",
    "28.10.2020 11:13:55 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:13:55 - Setting state to CREATED",
    "28.10.2020 11:13:55 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:00 - Starting TestRun.4bd38577-95aa-4e2d-989c-a3abaea72003 at 2020-10-28T11:14:01Z",
    "28.10.2020 11:14:01 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:01 - Project Properties: ",
    "28.10.2020 11:14:01 - etf.testcases - * ",
    "28.10.2020 11:14:01 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ",
    "28.10.2020 11:14:01 - username -  ",
    "28.10.2020 11:14:01 - authUser -  ",
    "28.10.2020 11:14:01 - authMethod - basic ",
    "28.10.2020 11:14:01 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.565
11:14:01.868 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:02.386 response time in milliseconds: 517.92
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:02 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:13:55 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:55 UTC 2020)","28.10.2020 11:13:55 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:55 - Preparing 1 Test Task:","28.10.2020 11:13:55 -  TestTask 1 (c32f1d21-cc73-4535-8e05-74c6f287accf)","28.10.2020 11:13:55 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:55 -  with parameters: ","28.10.2020 11:13:55 - etf.testcases = *","28.10.2020 11:13:55 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:55 - Setting state to CREATED","28.10.2020 11:13:55 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:00 - Starting TestRun.4bd38577-95aa-4e2d-989c-a3abaea72003 at 2020-10-28T11:14:01Z","28.10.2020 11:14:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:01 - Project Properties: ","28.10.2020 11:14:01 - etf.testcases - * ","28.10.2020 11:14:01 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","28.10.2020 11:14:01 - username -  ","28.10.2020 11:14:01 - authUser -  ","28.10.2020 11:14:01 - authMethod - basic ","28.10.2020 11:14:01 - TestRunTask initialized"]}

11:14:02.387 retry condition not satisfied: response.val == response.max
11:14:02.387 sleeping before retry #1
11:14:07.387 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:07.914 response time in milliseconds: 526.08
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:07 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"127","max":"128","log":["28.10.2020 11:13:55 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:55 UTC 2020)","28.10.2020 11:13:55 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:55 - Preparing 1 Test Task:","28.10.2020 11:13:55 -  TestTask 1 (c32f1d21-cc73-4535-8e05-74c6f287accf)","28.10.2020 11:13:55 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:55 -  with parameters: ","28.10.2020 11:13:55 - etf.testcases = *","28.10.2020 11:13:55 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:55 - Setting state to CREATED","28.10.2020 11:13:55 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:00 - Starting TestRun.4bd38577-95aa-4e2d-989c-a3abaea72003 at 2020-10-28T11:14:01Z","28.10.2020 11:14:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:01 - Project Properties: ","28.10.2020 11:14:01 - etf.testcases - * ","28.10.2020 11:14:01 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","28.10.2020 11:14:01 - username -  ","28.10.2020 11:14:01 - authUser -  ","28.10.2020 11:14:01 - authMethod - basic ","28.10.2020 11:14:01 - TestRunTask initialized"]}

11:14:07.914 retry condition not satisfied: response.val == response.max
11:14:07.914 sleeping before retry #2
11:14:12.915 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:13.424 response time in milliseconds: 508.28
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:14:13 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["28.10.2020 11:13:55 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:13:55 UTC 2020)","28.10.2020 11:13:55 - Resolving Executable Test Suite dependencies","28.10.2020 11:13:55 - Preparing 1 Test Task:","28.10.2020 11:13:55 -  TestTask 1 (c32f1d21-cc73-4535-8e05-74c6f287accf)","28.10.2020 11:13:55 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:13:55 -  with parameters: ","28.10.2020 11:13:55 - etf.testcases = *","28.10.2020 11:13:55 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:13:55 - Setting state to CREATED","28.10.2020 11:13:55 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:00 - Starting TestRun.4bd38577-95aa-4e2d-989c-a3abaea72003 at 2020-10-28T11:14:01Z","28.10.2020 11:14:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:01 - Project Properties: ","28.10.2020 11:14:01 - etf.testcases - * ","28.10.2020 11:14:01 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","28.10.2020 11:14:01 - username -  ","28.10.2020 11:14:01 - authUser -  ","28.10.2020 11:14:01 - authMethod - basic ","28.10.2020 11:14:01 - TestRunTask initialized","28.10.2020 11:14:08 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:14:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:14:13.424 retry condition not satisfied: response.val == response.max
11:14:13.424 sleeping before retry #3
11:14:18.425 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:20.431 response time in milliseconds: 2005.02
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:14:20 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:14:20.433 retry condition satisfied
* print response 0.000
11:14:20.433 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.718
11:14:20.434 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:24.148 response time in milliseconds: 2644.67
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:14:23 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:14:19 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4bd38577-95aa-4e2d-989c-a3abaea72003.json","testRuns":{"TestRun":{"id":"EID4bd38577-95aa-4e2d-989c-a3abaea72003","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:13:55.279Z","testTasks":{"TestTask":{"id":"EIDc32f1d21-cc73-4535-8e05-74c6f287accf","parent":{"ref":"EID4bd38577-95aa-4e2d-989c-a3abaea72003"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID65debf6d-9cc5-43e6-ad78-30d7a5259fda"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID5fb7ed66-f444-459a-a06d-85cbe51eafd7"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID65debf6d-9cc5-43e6-ad78-30d7a5259fda","remoteResource":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:13:39.602Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:13:51.346Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID5fb7ed66-f444-459a-a06d-85cbe51eafd7","testObject":{"ref":"EID65debf6d-9cc5-43e6-ad78-30d7a5259fda"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eea2b40-0175-1000-1da3-3690af33258f","testCaseResults":{"TestCaseResult":[{"id":"EID6eea2b40-0175-1000-1235-c29262ab6168","testStepResults":{"TestStepResult":[{"id":"EID6eea2b41-0175-1000-8552-905c0b236d6d","parent":{"ref":"EID6eea2b40-0175-1000-1235-c29262ab6168"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:14:01Z","duration":18,"status":"PASSED"},{"id":"EID6eea2b54-0175-1000-4b23-6334fd7a1d46","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea2bd4-0175-1000-c290-c1f027f1d13a","parent":{"ref":"EID6eea2b54-0175-1000-4b23-6334fd7a1d46"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2bd4-0175-1000-f8fc-609a8da132e8","parent":{"ref":"EID6eea2b54-0175-1000-4b23-6334fd7a1d46"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2bd4-0175-1000-1263-5aff6aac0752","parent":{"ref":"EID6eea2b54-0175-1000-4b23-6334fd7a1d46"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2bd4-0175-1000-3f1d-152db2c195d1","parent":{"ref":"EID6eea2b54-0175-1000-4b23-6334fd7a1d46"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff8fda02-2d27-46a7-a02c-ec28a27222ab"},{"ref":"EIDab9e16f7-1bde-4b2e-9afc-dfd409f053f0"},{"ref":"EID09d95701-367b-4786-831c-c8ed3564295a"}]},"parent":{"ref":"EID6eea2b40-0175-1000-1235-c29262ab6168"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:14:01Z","duration":60,"status":"PASSED"}]},"parent":{"ref":"EID6eea2b40-0175-1000-1da3-3690af33258f"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:14:01Z","duration":148,"status":"PASSED"},{"id":"EID6eea2bd4-0175-1000-f137-0cb69c568fe7","testStepResults":{"TestStepResult":{"id":"EID6eea2bd4-0175-1000-e975-7c359d2f4c12","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea2c23-0175-1000-1106-3c57d87a1604","parent":{"ref":"EID6eea2bd4-0175-1000-e975-7c359d2f4c12"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2c23-0175-1000-eb95-188e9d3860f0","parent":{"ref":"EID6eea2bd4-0175-1000-e975-7c359d2f4c12"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2c23-0175-1000-ffbd-ab0764375ccf","parent":{"ref":"EID6eea2bd4-0175-1000-e975-7c359d2f4c12"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID86148f55-09da-48c5-8cf6-802a364b8ab2"},{"ref":"EID7dd80eaf-aaa7-4ed4-8c21-8bf5a34abb32"},{"ref":"EIDbd9dddb5-c8b0-456a-ae0d-818529ee2163"}]},"parent":{"ref":"EID6eea2bd4-0175-1000-f137-0cb69c568fe7"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:14:01Z","duration":26,"status":"PASSED"}},"parent":{"ref":"EID6eea2b40-0175-1000-1da3-3690af33258f"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:14:01Z","duration":80,"status":"PASSED"}]},"parent":{"ref":"EID5fb7ed66-f444-459a-a06d-85cbe51eafd7"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:14:01Z","duration":229,"status":"PASSED"},{"id":"EID6eea2c26-0175-1000-8e02-129beb15ddc4","testCaseResults":{"TestCaseResult":[{"id":"EID6eea2c26-0175-1000-f2a3-46e1bf563d0e","testStepResults":{"TestStepResult":[{"id":"EID6eea2c26-0175-1000-570f-c17b1d78ed22","parent":{"ref":"EID6eea2c26-0175-1000-f2a3-46e1bf563d0e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:14:01Z","duration":26,"status":"PASSED"},{"id":"EID6eea2c26-0175-1000-ab30-7953450876eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea2c8c-0175-1000-def8-13792f248c3d","parent":{"ref":"EID6eea2c26-0175-1000-ab30-7953450876eb"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2c8c-0175-1000-2f12-86a94e615bfb","parent":{"ref":"EID6eea2c26-0175-1000-ab30-7953450876eb"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2c8c-0175-1000-333e-89c7e0266e8a","parent":{"ref":"EID6eea2c26-0175-1000-ab30-7953450876eb"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2c8c-0175-1000-5d18-d2e3f90f957c","parent":{"ref":"EID6eea2c26-0175-1000-ab30-7953450876eb"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6eea2c8c-0175-1000-1a9a-bb6ea347f7a2","parent":{"ref":"EID6eea2c26-0175-1000-ab30-7953450876eb"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:14:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDccfc3a00-a99e-4ffe-a2db-9601290cc44a"},{"ref":"EIDa4fc3297-f459-4204-a15b-5753e70282c7"},{"ref":"EID69abd9c3-6111-485b-ad78-23453fb9e9c8"}]},"parent":{"ref":"EID6eea2c26-0175-1000-f2a3-46e1bf563d0e"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:14:01Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:14:01Z","duration":103,"status":"PASSED"},{"id":"EID6eea2c8d-0175-1000-9d02-1fcef9f68ade","testStepResults":{"TestStepResult":[{"id":"EID6eea2c8d-0175-1000-8c13-93813e7a6f6c","attachments":{"attachment":[{"ref":"EIDc87c50df-fb57-476e-9542-9956cd24c6eb"},{"ref":"EID14c4fb38-68bb-47d6-a3af-fccb693bae5b"}]},"parent":{"ref":"EID6eea2c8d-0175-1000-9d02-1fcef9f68ade"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:14:01Z","duration":87,"status":"PASSED"},{"id":"EID6eea2d13-0175-1000-ad97-185381192c84","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea2da4-0175-1000-90d3-be914b8fd47b","parent":{"ref":"EID6eea2d13-0175-1000-ad97-185381192c84"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2da4-0175-1000-2c91-bd0b732026cb","parent":{"ref":"EID6eea2d13-0175-1000-ad97-185381192c84"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2da4-0175-1000-d3d2-fb63ffc3f0b4","parent":{"ref":"EID6eea2d13-0175-1000-ad97-185381192c84"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2da4-0175-1000-f3b6-8612a8e1c14a","parent":{"ref":"EID6eea2d13-0175-1000-ad97-185381192c84"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID89ce5c1e-96ba-4095-8c31-459d06d49fc6"},{"ref":"EIDbece2d7b-2681-450a-8c11-e6d799478f71"},{"ref":"EID1b969492-771f-4e19-8ec8-2bb0f371abcc"}]},"parent":{"ref":"EID6eea2c8d-0175-1000-9d02-1fcef9f68ade"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:14:02Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:14:01Z","duration":288,"status":"PASSED"},{"id":"EID6eea2dad-0175-1000-8bf7-42e812af9433","testStepResults":{"TestStepResult":[{"id":"EID6eea2dad-0175-1000-f77d-4e248ef1ee5b","attachments":{"attachment":[{"ref":"EID9dcb58e4-2735-4b63-9631-dbd467c93a71"},{"ref":"EID5bd322f5-9441-44d0-9268-5ec3c5c56e3f"}]},"parent":{"ref":"EID6eea2dad-0175-1000-8bf7-42e812af9433"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:14:02Z","duration":175,"status":"PASSED"},{"id":"EID6eea2e9c-0175-1000-a00b-fb65727a1a6e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea2f04-0175-1000-72f5-5ae63aa54eda","parent":{"ref":"EID6eea2e9c-0175-1000-a00b-fb65727a1a6e"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2f04-0175-1000-bf1c-aaf239bb9d9b","parent":{"ref":"EID6eea2e9c-0175-1000-a00b-fb65727a1a6e"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2f04-0175-1000-eb71-167aaf5a2e2c","parent":{"ref":"EID6eea2e9c-0175-1000-a00b-fb65727a1a6e"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2f04-0175-1000-3ea3-dd2945c47c4f","parent":{"ref":"EID6eea2e9c-0175-1000-a00b-fb65727a1a6e"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2f04-0175-1000-da3b-4e61ba86ba83","parent":{"ref":"EID6eea2e9c-0175-1000-a00b-fb65727a1a6e"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6a968ff0-78c6-4fd3-9d86-0b104183ad9f"},{"ref":"EIDfb914a2c-0185-4740-8b8d-1278ca3d0b5a"},{"ref":"EID553c13bf-3c9d-4358-bb97-9a1c27c231b7"}]},"parent":{"ref":"EID6eea2dad-0175-1000-8bf7-42e812af9433"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:14:02Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:14:02Z","duration":357,"status":"PASSED"},{"id":"EID6eea2f13-0175-1000-69d6-301df0251567","testStepResults":{"TestStepResult":[{"id":"EID6eea2f13-0175-1000-8c61-0b801f3bfd5f","attachments":{"attachment":[{"ref":"EIDdc9f0529-0c3c-4aed-9cf6-39446ad94c69"},{"ref":"EID9857c643-6ba3-4b04-ba51-d307df2d7440"}]},"parent":{"ref":"EID6eea2f13-0175-1000-69d6-301df0251567"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:14:02Z","duration":63,"status":"PASSED"},{"id":"EID6eea2fae-0175-1000-455c-bc8c069ade2b","parent":{"ref":"EID6eea2f13-0175-1000-69d6-301df0251567"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea2faf-0175-1000-55b8-577526c15857","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea304f-0175-1000-d051-4d50c73636af","parent":{"ref":"EID6eea2faf-0175-1000-55b8-577526c15857"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea304f-0175-1000-6dfd-83377be48a19","parent":{"ref":"EID6eea2faf-0175-1000-55b8-577526c15857"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea304f-0175-1000-6182-1a1ba5dea07c","parent":{"ref":"EID6eea2faf-0175-1000-55b8-577526c15857"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6eea304f-0175-1000-6a65-c2de25d67fae","parent":{"ref":"EID6eea2faf-0175-1000-55b8-577526c15857"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:14:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID74140003-fd29-4ba3-9aa7-9fc2fe03ba69"},{"ref":"EID417d2d42-bbe9-4c65-bde7-e892353aac68"},{"ref":"EID5404588f-05d3-4508-a7ca-a8836d0ce3de"}]},"parent":{"ref":"EID6eea2f13-0175-1000-69d6-301df0251567"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:14:02Z","duration":21,"status":"PASSED"},{"id":"EID6eea304f-0175-1000-be29-f9641a913b70","attachments":{"attachment":{"ref":"EID808e2066-f919-408b-ac9d-bcbc173f7117"}},"parent":{"ref":"EID6eea2f13-0175-1000-69d6-301df0251567"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:14:02Z","duration":3,"status":"PASSED"},{"id":"EID6eea3063-0175-1000-0c9f-32bbb62d7602","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea30da-0175-1000-f8a5-3d9af70face2","parent":{"ref":"EID6eea3063-0175-1000-0c9f-32bbb62d7602"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea30da-0175-1000-2f23-99b040292fa3","parent":{"ref":"EID6eea3063-0175-1000-0c9f-32bbb62d7602"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea30da-0175-1000-897a-b1a37573d509","parent":{"ref":"EID6eea3063-0175-1000-0c9f-32bbb62d7602"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea30da-0175-1000-9f44-7cbb6dde42c9","parent":{"ref":"EID6eea3063-0175-1000-0c9f-32bbb62d7602"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea30da-0175-1000-9e93-687fa97ef69d","parent":{"ref":"EID6eea3063-0175-1000-0c9f-32bbb62d7602"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf18cd14e-41e6-4f3b-8163-25eec0200fce"},{"ref":"EIDf45621af-a788-4567-b266-47a3ea98763d"},{"ref":"EID9f1722f9-c63e-4598-803f-660192d0a91b"}]},"parent":{"ref":"EID6eea2f13-0175-1000-69d6-301df0251567"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:14:02Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:14:02Z","duration":455,"status":"PASSED"},{"id":"EID6eea30db-0175-1000-3cac-57d33eb9c395","testStepResults":{"TestStepResult":[{"id":"EID6eea30db-0175-1000-72f3-544f72c134be","attachments":{"attachment":[{"ref":"EIDa58d5438-dd54-452d-9af6-24160aed15c9"},{"ref":"EID339dfd1c-981d-421b-b1bd-d136629ffdf4"}]},"parent":{"ref":"EID6eea30db-0175-1000-3cac-57d33eb9c395"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:14:03Z","duration":113,"status":"PASSED"},{"id":"EID6eea3178-0175-1000-557a-0ff76a1ece9d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea31cc-0175-1000-ffef-d876d8208b15","parent":{"ref":"EID6eea3178-0175-1000-557a-0ff76a1ece9d"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea31cc-0175-1000-dad8-f2828cf3b7a8","parent":{"ref":"EID6eea3178-0175-1000-557a-0ff76a1ece9d"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea31cc-0175-1000-4f00-cb1c9414a439","parent":{"ref":"EID6eea3178-0175-1000-557a-0ff76a1ece9d"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea31cc-0175-1000-3548-d5c4ba0ce0b5","parent":{"ref":"EID6eea3178-0175-1000-557a-0ff76a1ece9d"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4a0791f3-c07e-44fa-b33e-4994bedb1fa4"},{"ref":"EID7d92bfe5-8ab7-4b1a-8ba4-369d308afd42"},{"ref":"EID5e2906e2-422b-4195-8d0d-c77e059ff442"}]},"parent":{"ref":"EID6eea30db-0175-1000-3cac-57d33eb9c395"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:14:03Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:14:03Z","duration":241,"status":"PASSED"},{"id":"EID6eea31cc-0175-1000-a41b-99dcee5f3253","testStepResults":{"TestStepResult":[{"id":"EID6eea31cc-0175-1000-86ef-2ece87bf7d42","attachments":{"attachment":[{"ref":"EID1fb64c52-e8a2-46c9-9652-b5af89152d93"},{"ref":"EIDba6c2f78-ea4f-4cb5-8c9a-024543b14081"}]},"parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:14:03Z","duration":64,"status":"PASSED"},{"id":"EID6eea3233-0175-1000-1b4f-85b6125eae04","parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:14:03Z","duration":15,"status":"PASSED"},{"id":"EID6eea3242-0175-1000-7683-308d98c6c5ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3345-0175-1000-d455-2a454a939f85","parent":{"ref":"EID6eea3242-0175-1000-7683-308d98c6c5ca"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea3345-0175-1000-ebf4-481af84a5f8e","parent":{"ref":"EID6eea3242-0175-1000-7683-308d98c6c5ca"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea3345-0175-1000-8332-c434b8ced610","parent":{"ref":"EID6eea3242-0175-1000-7683-308d98c6c5ca"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea3345-0175-1000-ca0b-8a50887cfc98","parent":{"ref":"EID6eea3242-0175-1000-7683-308d98c6c5ca"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe79d5d68-f8e4-4c90-a915-587c53947e00"},{"ref":"EIDea3c8c18-b50d-4811-95d3-765c8f689788"},{"ref":"EID2cbf265d-9214-4fc1-bf84-b1ee5fc03f54"}]},"parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:14:03Z","duration":46,"status":"PASSED"},{"id":"EID6eea334d-0175-1000-0939-eaf4b901317e","attachments":{"attachment":{"ref":"EID82eab4b9-b85a-4bd1-b598-28d222511993"}},"parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:14:03Z","duration":1,"status":"PASSED"},{"id":"EID6eea335c-0175-1000-cb3d-e69d953677fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea33fc-0175-1000-5cba-b1ac710be230","parent":{"ref":"EID6eea335c-0175-1000-cb3d-e69d953677fc"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea33fc-0175-1000-74ee-331e385cf261","parent":{"ref":"EID6eea335c-0175-1000-cb3d-e69d953677fc"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6eea33fc-0175-1000-7b13-63689c7a4333","parent":{"ref":"EID6eea335c-0175-1000-cb3d-e69d953677fc"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2b594008-3d1c-43d1-826e-f4dd15245a95"},{"ref":"EID7bb24651-a831-4621-b403-9015149f4ea8"},{"ref":"EID4a957987-be3c-4905-80fa-cc272717d3c9"}]},"parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:14:03Z","duration":110,"status":"PASSED"},{"id":"EID6eea33fc-0175-1000-20bb-65e54924b2bf","attachments":{"attachment":{"ref":"EIDc8756e75-8df2-4d13-8c59-b4f365967809"}},"parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:14:03Z","duration":1,"status":"PASSED"},{"id":"EID6eea345b-0175-1000-d783-4e9f45fcb29f","attachments":{"attachment":{"ref":"EID21a448ec-5824-406e-ae2b-3d4a02f14223"}},"parent":{"ref":"EID6eea31cc-0175-1000-a41b-99dcee5f3253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:14:03Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:14:03Z","duration":677,"status":"PASSED"},{"id":"EID6eea3471-0175-1000-8868-8f9bb166cf69","testStepResults":{"TestStepResult":[{"id":"EID6eea347b-0175-1000-d49a-53cf5c0e0c3f","attachments":{"attachment":[{"ref":"EID6483b97c-9829-4294-b6ac-90838f5b3a02"},{"ref":"EIDd93da728-79b2-41bd-922b-b8fc12872edd"}]},"parent":{"ref":"EID6eea3471-0175-1000-8868-8f9bb166cf69"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:14:04Z","duration":83,"status":"PASSED"},{"id":"EID6eea34f4-0175-1000-03b1-6b4e29cae34e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3545-0175-1000-6d86-2b8648a3aa76","parent":{"ref":"EID6eea34f4-0175-1000-03b1-6b4e29cae34e"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea3545-0175-1000-c937-9783f680537b","parent":{"ref":"EID6eea34f4-0175-1000-03b1-6b4e29cae34e"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea3545-0175-1000-9319-978a77621160","parent":{"ref":"EID6eea34f4-0175-1000-03b1-6b4e29cae34e"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea3545-0175-1000-61e1-cc8e7f07e8e3","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea34f4-0175-1000-03b1-6b4e29cae34e"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID8c75adef-e65a-4106-8a96-c175da7a2e7a"},{"ref":"EID3aa6b1d7-780d-43d8-8860-cbd3a116aab4"},{"ref":"EID1c02b1dc-7b78-44c8-8569-075669f7e2c1"}]},"parent":{"ref":"EID6eea3471-0175-1000-8868-8f9bb166cf69"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:14:04Z","duration":20,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:14:04Z","duration":212,"status":"PASSED_MANUAL"},{"id":"EID6eea3546-0175-1000-a578-f34ff0cea837","testStepResults":{"TestStepResult":{"id":"EID6eea3546-0175-1000-09c7-a422bc56c262","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea359c-0175-1000-521a-d7b0759924f7","parent":{"ref":"EID6eea3546-0175-1000-09c7-a422bc56c262"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea359c-0175-1000-b859-c62bf5a7e2ff","parent":{"ref":"EID6eea3546-0175-1000-09c7-a422bc56c262"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea359c-0175-1000-5d82-c5db499d8e45","parent":{"ref":"EID6eea3546-0175-1000-09c7-a422bc56c262"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea359c-0175-1000-d41f-8edc1de1e071","parent":{"ref":"EID6eea3546-0175-1000-09c7-a422bc56c262"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7e79785f-2719-4ae4-a278-9a26a657e114"},{"ref":"EID8eb7ef04-f67f-47ba-82d5-6df031545036"},{"ref":"EID48f24335-e513-4a33-856a-950eb1fdeea0"}]},"parent":{"ref":"EID6eea3546-0175-1000-a578-f34ff0cea837"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:14:04Z","duration":25,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:14:04Z","duration":87,"status":"PASSED"},{"id":"EID6eea359e-0175-1000-1c07-0d8bbce9f78c","testStepResults":{"TestStepResult":{"id":"EID6eea359e-0175-1000-5a60-82031dca75e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea35fd-0175-1000-a452-627d78215b69","parent":{"ref":"EID6eea359e-0175-1000-5a60-82031dca75e4"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea35fd-0175-1000-41a1-1fa43a99fefc","parent":{"ref":"EID6eea359e-0175-1000-5a60-82031dca75e4"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea35fd-0175-1000-dc64-d51c43473848","parent":{"ref":"EID6eea359e-0175-1000-5a60-82031dca75e4"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6eea35fd-0175-1000-ac3f-edc3a11d1f19","parent":{"ref":"EID6eea359e-0175-1000-5a60-82031dca75e4"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:14:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0319a1a5-6cd5-43e4-8d39-ff88ef27d755"},{"ref":"EID2b9e43b2-23ce-4095-9704-fae286e534e1"},{"ref":"EID83f9f4b6-c91b-4b1c-9fd5-6cfcb68cfad4"}]},"parent":{"ref":"EID6eea359e-0175-1000-1c07-0d8bbce9f78c"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:14:04Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:14:04Z","duration":95,"status":"PASSED"},{"id":"EID6eea35fd-0175-1000-1ddf-227df095d34f","testStepResults":{"TestStepResult":[{"id":"EID6eea35fd-0175-1000-c7f8-cb847bb318dd","attachments":{"attachment":[{"ref":"EID5332ebe9-6ebd-4998-a617-c761e1428df9"},{"ref":"EIDbdaee47d-ec2f-40eb-9535-fe27422f73d0"},{"ref":"EID5a77312d-9014-4c79-93ef-4685feb3ed75"},{"ref":"EID73d75313-eeb0-4e87-987c-2b767162ce60"},{"ref":"EID5d95de88-ca4d-43ac-8e72-460a26421875"},{"ref":"EID27b273d5-3b8f-421e-ae4c-2e2b915f5b49"},{"ref":"EIDf7ba2f8b-ada1-4bd5-b366-55d73d329cd2"},{"ref":"EID5f69857d-3c86-4078-8624-839c34a16426"},{"ref":"EID3fd1da8a-b4cf-46aa-90d2-8547ae3e632d"},{"ref":"EIDf9fa776c-f6b9-455f-b4dc-265f77ccc71f"},{"ref":"EID60db141b-f310-4e23-8d02-2b8c49c042f8"},{"ref":"EID6a345515-19f7-48b4-93da-ba9d17ac439d"}]},"parent":{"ref":"EID6eea35fd-0175-1000-1ddf-227df095d34f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:14:04Z","duration":274,"status":"PASSED"},{"id":"EID6eea3800-0175-1000-3b9e-8f92f2bb457a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea386a-0175-1000-f4e1-e172315b99ea","parent":{"ref":"EID6eea3800-0175-1000-3b9e-8f92f2bb457a"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea386a-0175-1000-905e-c39afcf7b706","parent":{"ref":"EID6eea3800-0175-1000-3b9e-8f92f2bb457a"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea386a-0175-1000-93d6-c31ad5eefef0","parent":{"ref":"EID6eea3800-0175-1000-3b9e-8f92f2bb457a"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea386a-0175-1000-7f7a-55d88e596d13","parent":{"ref":"EID6eea3800-0175-1000-3b9e-8f92f2bb457a"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea386a-0175-1000-0e7b-95e40bc853e6","parent":{"ref":"EID6eea3800-0175-1000-3b9e-8f92f2bb457a"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe6613234-1896-4f7d-9d5d-d9d0f9b46ee4"},{"ref":"EIDdac1a31c-0c00-418d-9528-0be47e367d46"},{"ref":"EID6933abe1-7e42-4988-b8b8-97b2805b2154"}]},"parent":{"ref":"EID6eea35fd-0175-1000-1ddf-227df095d34f"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:14:04Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:14:04Z","duration":629,"status":"PASSED"},{"id":"EID6eea3873-0175-1000-7d3a-02850df98d84","testStepResults":{"TestStepResult":{"id":"EID6eea3873-0175-1000-c34b-5118bdd89496","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea391a-0175-1000-86ad-bb05dee6bd29","parent":{"ref":"EID6eea3873-0175-1000-c34b-5118bdd89496"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea391a-0175-1000-4bc1-6b46128ef15f","parent":{"ref":"EID6eea3873-0175-1000-c34b-5118bdd89496"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea391a-0175-1000-990a-055fad98fc20","parent":{"ref":"EID6eea3873-0175-1000-c34b-5118bdd89496"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea391a-0175-1000-72e0-88c4ac7a1c36","parent":{"ref":"EID6eea3873-0175-1000-c34b-5118bdd89496"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID28b73eac-93a2-41d9-816d-8a3a0faf8a7c"},{"ref":"EID9f7a41ff-9b55-4ab7-abf8-b8fd083a4d98"},{"ref":"EID3899e9ce-a98d-4768-a82c-e472f31a24d6"}]},"parent":{"ref":"EID6eea3873-0175-1000-7d3a-02850df98d84"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:14:05Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:14:05Z","duration":167,"status":"PASSED"},{"id":"EID6eea391a-0175-1000-9937-5ee9f09c6478","testStepResults":{"TestStepResult":{"id":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3994-0175-1000-8ce8-9644d0d6af16","parent":{"ref":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3994-0175-1000-19cb-447802e093b7","parent":{"ref":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3994-0175-1000-9268-508935a5a2dc","parent":{"ref":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3994-0175-1000-d89f-952e35ec04eb","parent":{"ref":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3994-0175-1000-aa9d-2dbfb452d207","parent":{"ref":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3994-0175-1000-22cd-741fd2fe2108","parent":{"ref":"EID6eea391a-0175-1000-5c5c-ff97e942e1ed"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID56a5b45f-2d10-487c-8d5d-b70e0f1624dc"},{"ref":"EID5d58ef4a-0980-4735-9681-9d6d57899fa6"},{"ref":"EID940c00ad-dfa9-4038-be25-39d6ab3f4cb1"}]},"parent":{"ref":"EID6eea391a-0175-1000-9937-5ee9f09c6478"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:14:05Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:14:05Z","duration":122,"status":"PASSED"},{"id":"EID6eea3994-0175-1000-dcc7-4097733b49d8","testStepResults":{"TestStepResult":{"id":"EID6eea3994-0175-1000-61aa-c92e24535df9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3a11-0175-1000-2470-cd5265d01876","parent":{"ref":"EID6eea3994-0175-1000-61aa-c92e24535df9"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a11-0175-1000-08a3-bbbd94bd8e99","parent":{"ref":"EID6eea3994-0175-1000-61aa-c92e24535df9"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a11-0175-1000-d337-8400797ecd12","parent":{"ref":"EID6eea3994-0175-1000-61aa-c92e24535df9"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a11-0175-1000-f089-9a148d81d978","parent":{"ref":"EID6eea3994-0175-1000-61aa-c92e24535df9"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a11-0175-1000-e8b2-a9ef9adf564c","parent":{"ref":"EID6eea3994-0175-1000-61aa-c92e24535df9"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a11-0175-1000-7e18-61e81658d7df","parent":{"ref":"EID6eea3994-0175-1000-61aa-c92e24535df9"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID697c9395-79ab-49be-a0fb-479ce131b892"},{"ref":"EID5fadcc86-24de-4b80-850b-d8889c9b8eb8"},{"ref":"EID00f25cad-3d9b-45fb-a1d1-e54953b08a25"}]},"parent":{"ref":"EID6eea3994-0175-1000-dcc7-4097733b49d8"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:14:05Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:14:05Z","duration":125,"status":"PASSED"},{"id":"EID6eea3a11-0175-1000-5e0d-e662c876e2d4","testStepResults":{"TestStepResult":{"id":"EID6eea3a11-0175-1000-03f3-be31b1a32111","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3a6a-0175-1000-7837-a6827b35a854","parent":{"ref":"EID6eea3a11-0175-1000-03f3-be31b1a32111"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a6a-0175-1000-5315-8e480744c5d3","parent":{"ref":"EID6eea3a11-0175-1000-03f3-be31b1a32111"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a6a-0175-1000-0dfd-4c916ecfb48d","parent":{"ref":"EID6eea3a11-0175-1000-03f3-be31b1a32111"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3a6a-0175-1000-d9b5-4a2a46be802f","parent":{"ref":"EID6eea3a11-0175-1000-03f3-be31b1a32111"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0fd2b36c-6b07-4457-9ced-70390c3fd082"},{"ref":"EID1a83bdaf-d96e-433b-9711-874fe8dd1b7a"},{"ref":"EID0881435a-c732-438d-a939-8715a4bf0a32"}]},"parent":{"ref":"EID6eea3a11-0175-1000-5e0d-e662c876e2d4"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:14:05Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:14:05Z","duration":89,"status":"PASSED"},{"id":"EID6eea3a6a-0175-1000-ee5e-9e64936f2cc0","testStepResults":{"TestStepResult":[{"id":"EID6eea3a6a-0175-1000-d950-d81b55439b74","attachments":{"attachment":[{"ref":"EID94de6bfd-04d0-4803-b329-a0a2b02de0e7"},{"ref":"EID1976fa29-9a2d-4136-83d5-44735c764679"},{"ref":"EIDe8c126d0-a132-48d3-9d30-7af8e3560f4c"},{"ref":"EID73b47052-2f59-4c33-b8cf-3835a63a746b"}]},"parent":{"ref":"EID6eea3a6a-0175-1000-ee5e-9e64936f2cc0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:14:05Z","duration":190,"status":"PASSED"},{"id":"EID6eea3b60-0175-1000-8a05-2712a1409f4e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3c0a-0175-1000-c5f4-a771baf7d880","parent":{"ref":"EID6eea3b60-0175-1000-8a05-2712a1409f4e"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c0a-0175-1000-f863-7fea3b404ba2","parent":{"ref":"EID6eea3b60-0175-1000-8a05-2712a1409f4e"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c0a-0175-1000-846a-24b23370d240","parent":{"ref":"EID6eea3b60-0175-1000-8a05-2712a1409f4e"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c0a-0175-1000-e0cb-b4a1c3b9844e","parent":{"ref":"EID6eea3b60-0175-1000-8a05-2712a1409f4e"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:14:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcafd4893-b6ae-4254-ab7b-e398d0f7a903"},{"ref":"EIDe6c3445e-da65-4857-8090-cece77dee53f"},{"ref":"EIDde4fa64b-37ba-46a8-b2f3-64b227fc8c64"}]},"parent":{"ref":"EID6eea3a6a-0175-1000-ee5e-9e64936f2cc0"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:14:05Z","duration":26,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:14:05Z","duration":416,"status":"PASSED"},{"id":"EID6eea3c0a-0175-1000-07d0-dad7ed4aa678","testStepResults":{"TestStepResult":{"id":"EID6eea3c0a-0175-1000-a90b-36d458578f74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3c85-0175-1000-6297-d5f40b57e6bf","parent":{"ref":"EID6eea3c0a-0175-1000-a90b-36d458578f74"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c85-0175-1000-310e-14acdfb9a967","parent":{"ref":"EID6eea3c0a-0175-1000-a90b-36d458578f74"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c85-0175-1000-3012-1afb4bf115cd","parent":{"ref":"EID6eea3c0a-0175-1000-a90b-36d458578f74"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c85-0175-1000-ecf2-66dd8d720d91","parent":{"ref":"EID6eea3c0a-0175-1000-a90b-36d458578f74"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID46ce6415-7804-4aa4-b41a-5d6aa272fc6d"},{"ref":"EID2a5ca580-18bd-4c35-968c-70ffbc41f554"},{"ref":"EIDd910cf3b-9e8d-43c5-a014-4bac36fdc0d1"}]},"parent":{"ref":"EID6eea3c0a-0175-1000-07d0-dad7ed4aa678"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:14:05Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:14:05Z","duration":123,"status":"PASSED"},{"id":"EID6eea3c86-0175-1000-d43a-48d9c86834f9","testStepResults":{"TestStepResult":[{"id":"EID6eea3c86-0175-1000-2810-29d5cd722996","parent":{"ref":"EID6eea3c86-0175-1000-d43a-48d9c86834f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3c86-0175-1000-4be6-b6ce3be925fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3d72-0175-1000-e308-f63293645eb9","parent":{"ref":"EID6eea3c86-0175-1000-4be6-b6ce3be925fc"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3d73-0175-1000-99f0-a3f1e657e4fa","parent":{"ref":"EID6eea3c86-0175-1000-4be6-b6ce3be925fc"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3d73-0175-1000-0836-4c74a795f57e","parent":{"ref":"EID6eea3c86-0175-1000-4be6-b6ce3be925fc"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3d73-0175-1000-8ae6-4c18e949dec3","parent":{"ref":"EID6eea3c86-0175-1000-4be6-b6ce3be925fc"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48e88261-1065-4872-8d69-be24dd112702"},{"ref":"EID84d48706-5115-4729-b490-56183e1f0948"},{"ref":"EID98199a60-1a34-4249-989c-7669e5854188"}]},"parent":{"ref":"EID6eea3c86-0175-1000-d43a-48d9c86834f9"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:14:06Z","duration":36,"status":"PASSED"},{"id":"EID6eea3d73-0175-1000-8404-67f3b01a2791","attachments":{"attachment":{"ref":"EID9b1a85ab-9813-491e-acd6-524889d67e97"}},"parent":{"ref":"EID6eea3c86-0175-1000-d43a-48d9c86834f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":1,"status":"PASSED"},{"id":"EID6eea3d82-0175-1000-ea08-f5de6b47e755","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3e39-0175-1000-4532-cd137bf963e6","parent":{"ref":"EID6eea3d82-0175-1000-ea08-f5de6b47e755"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3e39-0175-1000-04d5-4df8245a94a5","parent":{"ref":"EID6eea3d82-0175-1000-ea08-f5de6b47e755"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3e39-0175-1000-d2d3-06b5fdce3120","parent":{"ref":"EID6eea3d82-0175-1000-ea08-f5de6b47e755"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3e39-0175-1000-bf65-a3d27ebb019e","parent":{"ref":"EID6eea3d82-0175-1000-ea08-f5de6b47e755"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID707e911e-1231-4acf-98d2-fd295a72c00b"},{"ref":"EID00b868dc-8cb3-4a1f-b813-cbb043f0b80d"},{"ref":"EID31d4d621-2f4a-4f19-aec0-4630102ba090"}]},"parent":{"ref":"EID6eea3c86-0175-1000-d43a-48d9c86834f9"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-28T11:14:06Z","duration":84,"status":"PASSED"},{"id":"EID6eea3e39-0175-1000-4671-46f08d635236","attachments":{"attachment":{"ref":"EID4c2d6e49-772d-4997-a365-41fa1ab06ff5"}},"parent":{"ref":"EID6eea3c86-0175-1000-d43a-48d9c86834f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":1,"status":"PASSED"},{"id":"EID6eea3e47-0175-1000-98e2-db59bb9e3d69","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3eb5-0175-1000-4759-df017afd1154","parent":{"ref":"EID6eea3e47-0175-1000-98e2-db59bb9e3d69"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3eb5-0175-1000-fd32-28189eb1eaef","parent":{"ref":"EID6eea3e47-0175-1000-98e2-db59bb9e3d69"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3eb5-0175-1000-8ba9-c27ee531d4fe","parent":{"ref":"EID6eea3e47-0175-1000-98e2-db59bb9e3d69"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3eb5-0175-1000-9d5a-e582d744d49b","parent":{"ref":"EID6eea3e47-0175-1000-98e2-db59bb9e3d69"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfe1bb3f7-c788-45f7-8fa1-c6de6533f7f2"},{"ref":"EID14729103-8ae6-4a2c-92cb-c57d54a7ab1c"},{"ref":"EID827e84ef-989e-4120-8135-8517af4679bf"}]},"parent":{"ref":"EID6eea3c86-0175-1000-d43a-48d9c86834f9"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-28T11:14:06Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6eea2c26-0175-1000-8e02-129beb15ddc4"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:14:06Z","duration":559,"status":"PASSED"}]},"parent":{"ref":"EID5fb7ed66-f444-459a-a06d-85cbe51eafd7"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:14:01Z","duration":4754,"status":"PASSED_MANUAL"},{"id":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b","testCaseResults":{"TestCaseResult":[{"id":"EID6eea3eb8-0175-1000-5401-208e8c7e7864","testStepResults":{"TestStepResult":[{"id":"EID6eea3eb8-0175-1000-42c5-a7e565b47870","parent":{"ref":"EID6eea3eb8-0175-1000-5401-208e8c7e7864"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3eb8-0175-1000-3c06-a68a36b4d00a","parent":{"ref":"EID6eea3eb8-0175-1000-5401-208e8c7e7864"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":21,"status":"PASSED"},{"id":"EID6eea3eb8-0175-1000-2e05-c718dc2090ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3f08-0175-1000-0e2d-ad27eb1fd99f","parent":{"ref":"EID6eea3eb8-0175-1000-2e05-c718dc2090ca"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3f08-0175-1000-5980-817d085e10e1","parent":{"ref":"EID6eea3eb8-0175-1000-2e05-c718dc2090ca"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3f08-0175-1000-e4b5-67dbd51ea448","parent":{"ref":"EID6eea3eb8-0175-1000-2e05-c718dc2090ca"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6ce2fdb8-3e88-45d4-9d77-cc4be49cb2a9"},{"ref":"EID9fd16b6d-57a9-4040-8956-52cb806c519e"},{"ref":"EIDd8d06608-6350-45c3-bda6-14019ed67504"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-5401-208e8c7e7864"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:14:06Z","duration":21,"status":"PASSED"},{"id":"EID6eea3f08-0175-1000-2f13-e83c26fb28da","attachments":{"attachment":{"ref":"EID50fffebd-9dfd-4008-9065-733bd5063345"}},"parent":{"ref":"EID6eea3eb8-0175-1000-5401-208e8c7e7864"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3f58-0175-1000-0a9a-1e693139e544","parent":{"ref":"EID6eea3eb8-0175-1000-5401-208e8c7e7864"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:14:06Z","duration":10,"status":"PASSED"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:14:06Z","duration":171,"status":"PASSED"},{"id":"EID6eea3f63-0175-1000-386e-8e5675301b4c","testStepResults":{"TestStepResult":[{"id":"EID6eea3f63-0175-1000-34a7-98b7664c592d","parent":{"ref":"EID6eea3f63-0175-1000-386e-8e5675301b4c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:14:06Z","duration":26,"status":"PASSED"},{"id":"EID6eea3f63-0175-1000-bf54-0a935fbbca25","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea3ffc-0175-1000-3625-f3ea00f9757e","parent":{"ref":"EID6eea3f63-0175-1000-bf54-0a935fbbca25"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3ffc-0175-1000-a053-24b2ab01adcf","parent":{"ref":"EID6eea3f63-0175-1000-bf54-0a935fbbca25"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3ffc-0175-1000-0ed6-34b0511f2e55","parent":{"ref":"EID6eea3f63-0175-1000-bf54-0a935fbbca25"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3ffc-0175-1000-d495-21e971ed9a8e","parent":{"ref":"EID6eea3f63-0175-1000-bf54-0a935fbbca25"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6eea3ffc-0175-1000-c575-2ada3077d479","parent":{"ref":"EID6eea3f63-0175-1000-bf54-0a935fbbca25"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID40833975-e080-4050-a858-536de64b3852"},{"ref":"EIDd43ae4db-c41e-4c20-a57d-e07dd51a3918"},{"ref":"EIDd8045bc3-2f40-4493-84af-f52929fa2795"}]},"parent":{"ref":"EID6eea3f63-0175-1000-386e-8e5675301b4c"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:14:06Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:14:06Z","duration":153,"status":"PASSED"},{"id":"EID6eea3ffc-0175-1000-95f0-e48a0283f82b","testStepResults":{"TestStepResult":[{"id":"EID6eea3ffd-0175-1000-6650-7a2e496d4f9d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4049-0175-1000-fbe3-d300d44b4fd6","parent":{"ref":"EID6eea3ffd-0175-1000-6650-7a2e496d4f9d"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4049-0175-1000-49e2-dc79cd6f38e5","parent":{"ref":"EID6eea3ffd-0175-1000-6650-7a2e496d4f9d"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4049-0175-1000-e3bd-ba0670265448","parent":{"ref":"EID6eea3ffd-0175-1000-6650-7a2e496d4f9d"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc26577c0-1273-4561-8192-48751307da01"},{"ref":"EID9b4943a0-f709-4b46-b751-480f4cf527cf"},{"ref":"EID8fbff508-b82d-4ae9-b290-7b418200fdf7"}]},"parent":{"ref":"EID6eea3ffc-0175-1000-95f0-e48a0283f82b"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:14:06Z","duration":22,"status":"PASSED"},{"id":"EID6eea4049-0175-1000-6929-f0ec6f3199aa","attachments":{"attachment":{"ref":"EIDbb10c9b8-3276-4e15-b970-80c55a1b10ea"}},"parent":{"ref":"EID6eea3ffc-0175-1000-95f0-e48a0283f82b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:14:07Z","duration":1,"status":"PASSED"},{"id":"EID6eea4055-0175-1000-b16c-1e0ee103c828","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea40cf-0175-1000-7db9-2ca12f52527a","parent":{"ref":"EID6eea4055-0175-1000-b16c-1e0ee103c828"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea40cf-0175-1000-7c24-b0058b3be6af","parent":{"ref":"EID6eea4055-0175-1000-b16c-1e0ee103c828"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea40cf-0175-1000-4fb2-c07ae53f6e62","parent":{"ref":"EID6eea4055-0175-1000-b16c-1e0ee103c828"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea40cf-0175-1000-01f5-d93b5bc9328e","parent":{"ref":"EID6eea4055-0175-1000-b16c-1e0ee103c828"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea40cf-0175-1000-4d08-8835bb18e66e","parent":{"ref":"EID6eea4055-0175-1000-b16c-1e0ee103c828"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9485b135-e3d8-4e05-93c2-adf2808beb3c"},{"ref":"EID4c628d05-49bc-45b1-a5c6-a4127157d44e"},{"ref":"EIDed6465d8-6ac9-4164-8f9f-a58394f09b99"}]},"parent":{"ref":"EID6eea3ffc-0175-1000-95f0-e48a0283f82b"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:14:07Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:14:06Z","duration":211,"status":"PASSED"},{"id":"EID6eea40cf-0175-1000-f23f-929a8b04cf0e","testStepResults":{"TestStepResult":[{"id":"EID6eea40cf-0175-1000-10f4-56bd25ec9970","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea412e-0175-1000-e085-fb227e6cc779","parent":{"ref":"EID6eea40cf-0175-1000-10f4-56bd25ec9970"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea412e-0175-1000-31b8-33ba54537c00","parent":{"ref":"EID6eea40cf-0175-1000-10f4-56bd25ec9970"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea412f-0175-1000-5232-618e1c7ce8b8","parent":{"ref":"EID6eea40cf-0175-1000-10f4-56bd25ec9970"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea412f-0175-1000-a2ac-5e6af86344c4","parent":{"ref":"EID6eea40cf-0175-1000-10f4-56bd25ec9970"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0884d971-7ba3-4221-998d-799deb40097f"},{"ref":"EID01578ef3-0159-4421-b9a9-8d153bd46063"},{"ref":"EID1bb09fb0-8f90-41ba-8e05-484261f890f6"}]},"parent":{"ref":"EID6eea40cf-0175-1000-f23f-929a8b04cf0e"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:14:07Z","duration":25,"status":"PASSED"},{"id":"EID6eea412f-0175-1000-a1ee-b5547b09113d","attachments":{"attachment":{"ref":"EID719c4043-2c35-4850-8157-227783af02a6"}},"parent":{"ref":"EID6eea40cf-0175-1000-f23f-929a8b04cf0e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4168-0175-1000-72aa-29bb975818f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea41af-0175-1000-dd92-92d6ae121b22","parent":{"ref":"EID6eea4168-0175-1000-72aa-29bb975818f1"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea41af-0175-1000-3840-0590cd8dfd11","parent":{"ref":"EID6eea4168-0175-1000-72aa-29bb975818f1"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID816ddded-8fdb-427e-83a5-c246600d13cf"},{"ref":"EIDb293ba8d-0cf5-4404-b5a3-ea487edb3af6"}]},"parent":{"ref":"EID6eea40cf-0175-1000-f23f-929a8b04cf0e"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:14:07Z","duration":68,"status":"PASSED"},{"id":"EID6eea41af-0175-1000-bf58-5ed680fcc492","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4259-0175-1000-370c-4961e09a0e06","parent":{"ref":"EID6eea41af-0175-1000-bf58-5ed680fcc492"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4259-0175-1000-9384-252690a43a67","parent":{"ref":"EID6eea41af-0175-1000-bf58-5ed680fcc492"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4259-0175-1000-2961-940d77cfc64e","parent":{"ref":"EID6eea41af-0175-1000-bf58-5ed680fcc492"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4259-0175-1000-580d-2ea1f8382914","parent":{"ref":"EID6eea41af-0175-1000-bf58-5ed680fcc492"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb9427e7-b34a-47c2-ae4a-581103fb68b0"},{"ref":"EID47ade967-34c3-4557-9671-7b41834c3209"},{"ref":"EIDbfb169b7-a023-4890-83fe-d8861fee4896"}]},"parent":{"ref":"EID6eea40cf-0175-1000-f23f-929a8b04cf0e"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:14:07Z","duration":19,"status":"PASSED"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:14:07Z","duration":394,"status":"PASSED"},{"id":"EID6eea4259-0175-1000-a830-d4e5d57ed388","testStepResults":{"TestStepResult":{"id":"EID6eea4259-0175-1000-f776-825f177077c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea42f8-0175-1000-c662-5212a4fa4036","parent":{"ref":"EID6eea4259-0175-1000-f776-825f177077c5"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea42f8-0175-1000-ea11-c622d49f11c4","parent":{"ref":"EID6eea4259-0175-1000-f776-825f177077c5"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea42f8-0175-1000-8d88-40169b41f5c3","parent":{"ref":"EID6eea4259-0175-1000-f776-825f177077c5"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf6a2a6ee-bb84-4672-9433-ee223bd88b02"},{"ref":"EIDa8015892-f470-464d-b4cf-4386564415bf"},{"ref":"EID06438ae0-61b0-4c23-a87b-d84528a9145a"}]},"parent":{"ref":"EID6eea4259-0175-1000-a830-d4e5d57ed388"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:14:07Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:14:07Z","duration":175,"status":"PASSED"},{"id":"EID6eea4308-0175-1000-3cab-3216b2ca621e","testStepResults":{"TestStepResult":{"id":"EID6eea4308-0175-1000-656a-beab3e33dac8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4376-0175-1000-6054-8bb999816586","parent":{"ref":"EID6eea4308-0175-1000-656a-beab3e33dac8"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4376-0175-1000-e796-4ed428ba118a","parent":{"ref":"EID6eea4308-0175-1000-656a-beab3e33dac8"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea4376-0175-1000-d7f0-5c17dbc47678","parent":{"ref":"EID6eea4308-0175-1000-656a-beab3e33dac8"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57d862e1-fd70-4d3d-b092-29aec72e543a"},{"ref":"EID506ab03c-e6b0-4c55-ae3a-cb895c6e3a91"},{"ref":"EID83305a17-1df8-4bc5-9c02-7988faf594c0"}]},"parent":{"ref":"EID6eea4308-0175-1000-3cab-3216b2ca621e"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:14:07Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:14:07Z","duration":110,"status":"PASSED"},{"id":"EID6eea4376-0175-1000-6113-1630d5c01ac7","testStepResults":{"TestStepResult":{"id":"EID6eea4376-0175-1000-e47d-d53be36c37a1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea43dc-0175-1000-0ffc-83952810e0b1","parent":{"ref":"EID6eea4376-0175-1000-e47d-d53be36c37a1"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea43dc-0175-1000-7c39-1ae1892a407d","parent":{"ref":"EID6eea4376-0175-1000-e47d-d53be36c37a1"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea43dc-0175-1000-9616-28d496dbee3a","parent":{"ref":"EID6eea4376-0175-1000-e47d-d53be36c37a1"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea43dc-0175-1000-d9aa-e27114d57042","parent":{"ref":"EID6eea4376-0175-1000-e47d-d53be36c37a1"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"},{"id":"EID6eea43dc-0175-1000-cdf3-dde1adc05692","parent":{"ref":"EID6eea4376-0175-1000-e47d-d53be36c37a1"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:14:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID916a7c2c-5990-49b7-af9c-0fed93c9b425"},{"ref":"EID5bdd0501-2b4d-400e-9c5b-a3322e34bc7f"},{"ref":"EIDf7faf670-16d1-4119-9bd9-0870bcfaab92"}]},"parent":{"ref":"EID6eea4376-0175-1000-6113-1630d5c01ac7"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:14:07Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:14:07Z","duration":102,"status":"PASSED"},{"id":"EID6eea43dc-0175-1000-b1fd-9e26d06e0afc","testStepResults":{"TestStepResult":{"id":"EID6eea43dc-0175-1000-2b18-8118c02010ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4457-0175-1000-049d-a795106404f9","parent":{"ref":"EID6eea43dc-0175-1000-2b18-8118c02010ed"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4457-0175-1000-9fcf-e8d8a266cc89","parent":{"ref":"EID6eea43dc-0175-1000-2b18-8118c02010ed"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4457-0175-1000-8c8d-1d4e476c2066","parent":{"ref":"EID6eea43dc-0175-1000-2b18-8118c02010ed"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf021a5a3-9295-417b-9a11-6a0d68b701fc"},{"ref":"EID4169c3f6-c94e-469a-a776-374ac539dcf8"},{"ref":"EIDa70c72f2-ad1f-46ab-b2ec-83448fe77003"}]},"parent":{"ref":"EID6eea43dc-0175-1000-b1fd-9e26d06e0afc"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:14:07Z","duration":25,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:14:07Z","duration":123,"status":"PASSED"},{"id":"EID6eea4457-0175-1000-12bd-da558d1b80ef","testStepResults":{"TestStepResult":{"id":"EID6eea4457-0175-1000-2d2b-67dac1d6c139","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea44a5-0175-1000-3365-19ac1d443e78","parent":{"ref":"EID6eea4457-0175-1000-2d2b-67dac1d6c139"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea44a5-0175-1000-7bbb-99f0b6259b52","parent":{"ref":"EID6eea4457-0175-1000-2d2b-67dac1d6c139"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea44a5-0175-1000-c586-e73698180312","parent":{"ref":"EID6eea4457-0175-1000-2d2b-67dac1d6c139"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1040d482-8855-4ddb-a9c0-59f99c88c56b"},{"ref":"EID7621e53b-614f-4348-a338-6d136465308f"},{"ref":"EID484e6e52-05b6-41fb-9b45-29c59163d064"}]},"parent":{"ref":"EID6eea4457-0175-1000-12bd-da558d1b80ef"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:14:08Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:14:08Z","duration":78,"status":"PASSED"},{"id":"EID6eea44a5-0175-1000-73f4-1fe494cb9edc","testStepResults":{"TestStepResult":{"id":"EID6eea44a5-0175-1000-a86c-7e2115729744","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea44fb-0175-1000-db95-725ea9d4c6f9","parent":{"ref":"EID6eea44a5-0175-1000-a86c-7e2115729744"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea44fb-0175-1000-2631-683b293ab76f","parent":{"ref":"EID6eea44a5-0175-1000-a86c-7e2115729744"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:14:08Z","duration":1,"status":"PASSED"},{"id":"EID6eea44fc-0175-1000-2eac-c04cdee9ae9e","parent":{"ref":"EID6eea44a5-0175-1000-a86c-7e2115729744"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea44fc-0175-1000-c13e-bb0fc02b0d55","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6eea44a5-0175-1000-a86c-7e2115729744"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfc5a483f-5e83-4bd9-984d-6ec7bbcc7b17"},{"ref":"EID38ba6c2e-746b-4397-827c-f98a3b20005f"},{"ref":"EID16539463-266f-4b2b-a334-598dd81050cd"}]},"parent":{"ref":"EID6eea44a5-0175-1000-73f4-1fe494cb9edc"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:14:08Z","duration":20,"status":"FAILED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:14:08Z","duration":87,"status":"FAILED"},{"id":"EID6eea44fc-0175-1000-af02-c41a84fd0fba","testStepResults":{"TestStepResult":{"id":"EID6eea4507-0175-1000-6094-92369c72bddf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4560-0175-1000-5c86-381fb12f909d","parent":{"ref":"EID6eea4507-0175-1000-6094-92369c72bddf"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4560-0175-1000-9780-5ae8aaaa8f1a","parent":{"ref":"EID6eea4507-0175-1000-6094-92369c72bddf"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4560-0175-1000-e584-9e5aba588397","parent":{"ref":"EID6eea4507-0175-1000-6094-92369c72bddf"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4560-0175-1000-d833-c4d203e7ea82","parent":{"ref":"EID6eea4507-0175-1000-6094-92369c72bddf"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9bda34bd-4be5-4a3a-9d34-cd4f2856e8f5"},{"ref":"EID0a379c91-79e5-4021-951b-051c7fbd2094"},{"ref":"EID44824f22-8b3b-477e-9551-6fd8fe84b573"}]},"parent":{"ref":"EID6eea44fc-0175-1000-af02-c41a84fd0fba"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:14:08Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:14:08Z","duration":100,"status":"PASSED"},{"id":"EID6eea4560-0175-1000-ab7b-4f5e7a687ce0","testStepResults":{"TestStepResult":[{"id":"EID6eea4560-0175-1000-c399-6c2b1e873f83","parent":{"ref":"EID6eea4560-0175-1000-ab7b-4f5e7a687ce0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4560-0175-1000-a776-0488fac4e2b7","parent":{"ref":"EID6eea4560-0175-1000-ab7b-4f5e7a687ce0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:14:08Z","duration":46,"status":"PASSED"},{"id":"EID6eea4561-0175-1000-e901-910870db8a3c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea45b6-0175-1000-968f-517b6309dbcc","parent":{"ref":"EID6eea4561-0175-1000-e901-910870db8a3c"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea45b6-0175-1000-2712-6feda7890285","parent":{"ref":"EID6eea4561-0175-1000-e901-910870db8a3c"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea45b6-0175-1000-677a-c0c640923fe2","parent":{"ref":"EID6eea4561-0175-1000-e901-910870db8a3c"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea45b6-0175-1000-520d-0fa7d92d3733","parent":{"ref":"EID6eea4561-0175-1000-e901-910870db8a3c"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca3ab689-417e-4f8b-a760-2084d45d5016"},{"ref":"EIDa80b87aa-3e52-4abb-8b69-65e8af527097"},{"ref":"EIDb84a931d-4ae2-43ee-94cf-39da48319c7c"}]},"parent":{"ref":"EID6eea4560-0175-1000-ab7b-4f5e7a687ce0"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:14:08Z","duration":20,"status":"PASSED"},{"id":"EID6eea45b6-0175-1000-5c47-87e150fb6eb0","attachments":{"attachment":{"ref":"EID04667ee6-a631-429f-842f-a33e7fb75d71"}},"parent":{"ref":"EID6eea4560-0175-1000-ab7b-4f5e7a687ce0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:14:08Z","duration":1,"status":"PASSED"},{"id":"EID6eea45c5-0175-1000-b330-9859a257199a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea46b2-0175-1000-e306-0661ccd53108","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b2-0175-1000-9f13-87d663f5bd53","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b2-0175-1000-6be9-846c100c083b","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b2-0175-1000-966b-572d938cd03e","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b2-0175-1000-cf22-e4655d9e8fba","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b2-0175-1000-cb30-658903ea0eca","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b2-0175-1000-6f48-3bec3214d500","parent":{"ref":"EID6eea45c5-0175-1000-b330-9859a257199a"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf90d3fe2-de89-416a-b669-6f8516ac0866"},{"ref":"EID20e66acb-7380-4969-902d-17c18d90b576"},{"ref":"EID40f9b1df-db81-4539-8312-ce59a4edd722"}]},"parent":{"ref":"EID6eea4560-0175-1000-ab7b-4f5e7a687ce0"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:14:08Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:14:08Z","duration":338,"status":"PASSED"},{"id":"EID6eea46b3-0175-1000-3495-3c39a7073873","testStepResults":{"TestStepResult":[{"id":"EID6eea46b3-0175-1000-a9e8-880a1e3ac9af","parent":{"ref":"EID6eea46b3-0175-1000-3495-3c39a7073873"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea46b3-0175-1000-a425-800daa78488c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4788-0175-1000-4629-f0a6d80d33f9","parent":{"ref":"EID6eea46b3-0175-1000-a425-800daa78488c"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4788-0175-1000-2ed2-23e51f7df73e","parent":{"ref":"EID6eea46b3-0175-1000-a425-800daa78488c"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4788-0175-1000-0c44-4f3e14dac141","parent":{"ref":"EID6eea46b3-0175-1000-a425-800daa78488c"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6eea4788-0175-1000-2af5-b0830ad0c6d0","parent":{"ref":"EID6eea46b3-0175-1000-a425-800daa78488c"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa42bbeb7-f93e-4e0f-81d8-f58bd975e817"},{"ref":"EIDaaf9a24d-fb94-4dae-8e50-94a93d89019d"},{"ref":"EID00d9bda0-dadc-4e40-b0da-4238389098c1"}]},"parent":{"ref":"EID6eea46b3-0175-1000-3495-3c39a7073873"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:14:08Z","duration":43,"status":"PASSED"},{"id":"EID6eea4788-0175-1000-1f90-ecd3bb911f01","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eea4799-0175-1000-3ae9-44874ba5a78f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4867-0175-1000-8750-de302cb2e76c","parent":{"ref":"EID6eea4799-0175-1000-3ae9-44874ba5a78f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4867-0175-1000-573f-1d5bb9c7d597","parent":{"ref":"EID6eea4799-0175-1000-3ae9-44874ba5a78f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4867-0175-1000-b56a-58a131a16ccc","parent":{"ref":"EID6eea4799-0175-1000-3ae9-44874ba5a78f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID380a711d-ff21-4063-9e98-f8c68bc98276"},{"ref":"EID9fcde150-e7b6-4ccf-a8c3-d05c47c37c06"},{"ref":"EID3cb531a3-afa4-49a5-bcef-3131853031ec"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:08Z","duration":40,"status":"PASSED"},{"id":"EID6eea4868-0175-1000-8ce5-0950aaee40b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea48c2-0175-1000-b042-f0e75fcb6d44","parent":{"ref":"EID6eea4868-0175-1000-8ce5-0950aaee40b9"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea48c2-0175-1000-1a8f-02fab3c7146c","parent":{"ref":"EID6eea4868-0175-1000-8ce5-0950aaee40b9"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea48c2-0175-1000-20b8-55a6887a7af2","parent":{"ref":"EID6eea4868-0175-1000-8ce5-0950aaee40b9"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf2e32745-a046-4351-9dad-2dc74a6e3b4e"},{"ref":"EID3471d03e-b855-42e1-85c7-d987f1bfcb0f"},{"ref":"EIDb4e274dd-0dc1-4606-8193-000830c637ec"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:09Z","duration":42,"status":"PASSED"},{"id":"EID6eea48c3-0175-1000-a857-e3f89de150de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4948-0175-1000-0a63-65b0aefb4abf","parent":{"ref":"EID6eea48c3-0175-1000-a857-e3f89de150de"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:09Z","duration":1,"status":"PASSED"},{"id":"EID6eea4949-0175-1000-0d63-639efdc786dd","parent":{"ref":"EID6eea48c3-0175-1000-a857-e3f89de150de"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4949-0175-1000-a9b4-61a6ecb70e61","parent":{"ref":"EID6eea48c3-0175-1000-a857-e3f89de150de"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1cdc2cf5-64f0-4bb9-8901-b42841e92a05"},{"ref":"EID7f2b871d-f93d-4452-b5c3-ad4d53fe1787"},{"ref":"EIDe594ef5e-6c14-45c2-95b8-f5dd70291e63"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:09Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6eea46b3-0175-1000-3495-3c39a7073873"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:14:08Z","duration":449,"status":"PASSED"},{"id":"EID6eea4949-0175-1000-89b4-b5a6aeb92127","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea49d2-0175-1000-e303-ab251b483dee","parent":{"ref":"EID6eea4949-0175-1000-89b4-b5a6aeb92127"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea49d2-0175-1000-4bcb-b85cd84d4990","parent":{"ref":"EID6eea4949-0175-1000-89b4-b5a6aeb92127"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea49d2-0175-1000-5c71-0d207e9c2359","parent":{"ref":"EID6eea4949-0175-1000-89b4-b5a6aeb92127"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea49d2-0175-1000-b11d-328fa6f626bd","parent":{"ref":"EID6eea4949-0175-1000-89b4-b5a6aeb92127"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID85c16dd9-9346-4242-bc01-57e55c7a9bc3"},{"ref":"EID55ea2f18-1456-4bd4-9381-691c0326684e"},{"ref":"EID72050a9e-d88d-412c-a9c3-8556a90cfe57"}]},"parent":{"ref":"EID6eea46b3-0175-1000-3495-3c39a7073873"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:14:09Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:14:08Z","duration":799,"status":"PASSED"},{"id":"EID6eea49d2-0175-1000-2947-d295c287ecd7","testStepResults":{"TestStepResult":{"id":"EID6eea49d2-0175-1000-cc67-77e2a7e8290d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4a26-0175-1000-0e9c-1b2d7d7aea24","parent":{"ref":"EID6eea49d2-0175-1000-cc67-77e2a7e8290d"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4a26-0175-1000-b2b3-93bfb64dd110","parent":{"ref":"EID6eea49d2-0175-1000-cc67-77e2a7e8290d"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4a26-0175-1000-19cd-4499db8af144","parent":{"ref":"EID6eea49d2-0175-1000-cc67-77e2a7e8290d"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4a26-0175-1000-3d8b-74b020b59a4a","parent":{"ref":"EID6eea49d2-0175-1000-cc67-77e2a7e8290d"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5bf71ac-7e04-47ff-b9de-5ddef1f7544e"},{"ref":"EIDba64d498-f21b-4f64-acfc-2718ba10389d"},{"ref":"EIDcb8e8839-a114-41c6-958a-94370d8343ba"}]},"parent":{"ref":"EID6eea49d2-0175-1000-2947-d295c287ecd7"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:14:09Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6eea3eb8-0175-1000-4407-89d1a9d4637b"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:14:09Z","duration":97,"status":"PASSED"}]},"parent":{"ref":"EID5fb7ed66-f444-459a-a06d-85cbe51eafd7"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:14:06Z","duration":2939,"status":"FAILED"},{"id":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea","testCaseResults":{"TestCaseResult":[{"id":"EID6eea4a33-0175-1000-8916-f8ed652d4e35","testStepResults":{"TestStepResult":[{"id":"EID6eea4a33-0175-1000-4fb1-1af0c152051d","parent":{"ref":"EID6eea4a33-0175-1000-8916-f8ed652d4e35"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:14:09Z","duration":223,"status":"PASSED"},{"id":"EID6eea4a33-0175-1000-1124-b034f391038c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4a8c-0175-1000-5509-96ccd6f31219","parent":{"ref":"EID6eea4a33-0175-1000-1124-b034f391038c"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4a8c-0175-1000-bb1c-66dfe1344dc6","parent":{"ref":"EID6eea4a33-0175-1000-1124-b034f391038c"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4a8c-0175-1000-fa9e-2c8beb242973","parent":{"ref":"EID6eea4a33-0175-1000-1124-b034f391038c"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8215f03e-b69e-446c-a66c-da226f9eb749"},{"ref":"EIDeff2977c-0cfb-4783-a8f8-006d1fa400fa"},{"ref":"EID9057c855-6071-47e7-9386-89aafb475993"}]},"parent":{"ref":"EID6eea4a33-0175-1000-8916-f8ed652d4e35"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:14:09Z","duration":21,"status":"PASSED"},{"id":"EID6eea4a8c-0175-1000-b426-ce34267060e0","attachments":{"attachment":{"ref":"EID2a8c09c1-99a3-4038-bc11-9e6e3d333cf6"}},"parent":{"ref":"EID6eea4a33-0175-1000-8916-f8ed652d4e35"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:14:09Z","duration":2,"status":"PASSED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:14:09Z","duration":104,"status":"PASSED"},{"id":"EID6eea4a9b-0175-1000-161b-c6e60f1cfd7f","testStepResults":{"TestStepResult":[{"id":"EID6eea4a9b-0175-1000-e3b6-d5f7b60a2d5f","parent":{"ref":"EID6eea4a9b-0175-1000-161b-c6e60f1cfd7f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:14:09Z","duration":223,"status":"PASSED"},{"id":"EID6eea4a9b-0175-1000-1d8c-0013bfbae6f5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4b4d-0175-1000-b056-8b459c0fb895","parent":{"ref":"EID6eea4a9b-0175-1000-1d8c-0013bfbae6f5"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4b4d-0175-1000-7f90-cec91d3cc0d2","parent":{"ref":"EID6eea4a9b-0175-1000-1d8c-0013bfbae6f5"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4b4d-0175-1000-f062-90a4f5fc3522","parent":{"ref":"EID6eea4a9b-0175-1000-1d8c-0013bfbae6f5"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4b4d-0175-1000-ca79-8e621c861e7b","parent":{"ref":"EID6eea4a9b-0175-1000-1d8c-0013bfbae6f5"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb4195604-f8ab-49a8-b69b-1c6351c0b075"},{"ref":"EID671eb11a-5b1d-4517-8ded-7bcf7cd8fbdb"},{"ref":"EID4594907c-0622-4241-8fa2-9c821bc7d3a0"}]},"parent":{"ref":"EID6eea4a9b-0175-1000-161b-c6e60f1cfd7f"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:14:09Z","duration":87,"status":"PASSED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:14:09Z","duration":185,"status":"PASSED"},{"id":"EID6eea4b54-0175-1000-677c-835664e69fbd","testStepResults":{"TestStepResult":[{"id":"EID6eea4b54-0175-1000-a7a3-d65ac7dd4028","parent":{"ref":"EID6eea4b54-0175-1000-677c-835664e69fbd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:14:09Z","duration":223,"status":"PASSED"},{"id":"EID6eea4b54-0175-1000-052d-e1edfc76e434","parent":{"ref":"EID6eea4b54-0175-1000-677c-835664e69fbd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6eea4b54-0175-1000-70cd-d5048669697f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4c13-0175-1000-eeba-48245299ceb1","parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4c13-0175-1000-ed27-2174dded7e7f","parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4c13-0175-1000-feb9-13ec64ac4d3e","parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4c13-0175-1000-9f48-38be83950a9f","parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4c13-0175-1000-edfb-c7c47b5ac58a","parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4c13-0175-1000-7b08-1a6385681636","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"FAILED"},{"id":"EID6eea4c13-0175-1000-7bc7-be4c06f982ed","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6eea4b54-0175-1000-70cd-d5048669697f"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3f57a70b-47a9-4a40-a313-d9184f1b7d76"},{"ref":"EID9fad6cf6-e421-448a-b587-e5b2e0fa888f"},{"ref":"EIDde078a82-5aaa-4a47-9891-ab6ab77f77ef"}]},"parent":{"ref":"EID6eea4b54-0175-1000-677c-835664e69fbd"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:14:09Z","duration":92,"status":"FAILED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:14:09Z","duration":191,"status":"FAILED"},{"id":"EID6eea4c14-0175-1000-0daa-b808305c6e1d","testStepResults":{"TestStepResult":[{"id":"EID6eea4c14-0175-1000-2cbf-031bd6e780a9","parent":{"ref":"EID6eea4c14-0175-1000-0daa-b808305c6e1d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:14:10Z","duration":223,"status":"PASSED"},{"id":"EID6eea4c14-0175-1000-435a-2c684d414192","parent":{"ref":"EID6eea4c14-0175-1000-0daa-b808305c6e1d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4c21-0175-1000-313d-64d0cfdd1472","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea4cd4-0175-1000-5d87-ed89bb2c3a5f","parent":{"ref":"EID6eea4c21-0175-1000-313d-64d0cfdd1472"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4cd4-0175-1000-a2ac-1468e31c3d2f","parent":{"ref":"EID6eea4c21-0175-1000-313d-64d0cfdd1472"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4cd4-0175-1000-2df2-6e350edd733a","parent":{"ref":"EID6eea4c21-0175-1000-313d-64d0cfdd1472"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4cd4-0175-1000-0c9f-65d00b909a02","parent":{"ref":"EID6eea4c21-0175-1000-313d-64d0cfdd1472"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4cd4-0175-1000-c4de-e2a31601f06f","parent":{"ref":"EID6eea4c21-0175-1000-313d-64d0cfdd1472"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6eea4cd4-0175-1000-77b7-85ba4a494d85","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6eea4c21-0175-1000-313d-64d0cfdd1472"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:14:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID643fda36-9c0e-46fa-ac98-84c5dbd63973"},{"ref":"EIDbb1e5738-3bf0-49a8-beb4-afde49890623"},{"ref":"EID8bc9f350-1ff9-473d-96ca-06b5b4aa0968"}]},"parent":{"ref":"EID6eea4c14-0175-1000-0daa-b808305c6e1d"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:14:10Z","duration":80,"status":"FAILED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:14:10Z","duration":192,"status":"FAILED"},{"id":"EID6eea4cd5-0175-1000-edde-1c7431927ebc","testStepResults":{"TestStepResult":[{"id":"EID6eea4cd5-0175-1000-5276-38b351975157","parent":{"ref":"EID6eea4cd5-0175-1000-edde-1c7431927ebc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:14:10Z","duration":223,"status":"PASSED"},{"id":"EID6eea4cd5-0175-1000-c06e-b1e5d6071c7b","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID0281cf71-e721-4c5e-bfe1-73108eff1939"},{"ref":"EIDf8f3723c-4d31-4665-83b4-7b2789b8bc0e"},{"ref":"EID8b41003e-863f-413b-b788-ccaa1fedaa78"},{"ref":"EID5ad2ce27-2e52-4bd0-955f-1a91fbeabb8e"},{"ref":"EID9be059c5-8525-48bd-8aea-256d9708b291"},{"ref":"EIDea0a9d1c-0ef3-48f2-a826-911ad20142e3"},{"ref":"EID0f1a8cc9-4367-415f-a9fa-69f5666730da"},{"ref":"EIDaad5b1a4-5660-40fa-96f8-e65c8c8cf0fd"},{"ref":"EID3f892b61-85a3-45b0-b35a-0f42af933c5f"},{"ref":"EIDac239882-640f-4979-bb94-4b9c1d456c6a"},{"ref":"EID1fc6af09-1924-43b5-8cb5-c2d9ad5e6e13"},{"ref":"EID7c35dad4-e6aa-43d2-8bb8-f820329208c9"},{"ref":"EIDa1cc4fa2-b348-43cb-bd3a-1cdf48f88877"},{"ref":"EID376150b6-fadf-4df8-9e21-0c40f80ba57d"},{"ref":"EID1fbd60e5-c988-4790-8a90-c250ea1aede7"}]},"parent":{"ref":"EID6eea4cd5-0175-1000-edde-1c7431927ebc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:14:10Z","duration":490,"status":"SKIPPED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:14:10Z","duration":852,"status":"SKIPPED"},{"id":"EID6eea5029-0175-1000-5cc8-f773d9befdd6","testStepResults":{"TestStepResult":[{"id":"EID6eea5029-0175-1000-503d-e442f0f55106","parent":{"ref":"EID6eea5029-0175-1000-5cc8-f773d9befdd6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:14:11Z","duration":223,"status":"PASSED"},{"id":"EID6eea5029-0175-1000-7727-fc7693d3ca2d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea510f-0175-1000-feeb-f999ec321656","parent":{"ref":"EID6eea5029-0175-1000-7727-fc7693d3ca2d"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea510f-0175-1000-0b20-16cbb3418890","parent":{"ref":"EID6eea5029-0175-1000-7727-fc7693d3ca2d"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea510f-0175-1000-de4f-fdb0dcf638ed","parent":{"ref":"EID6eea5029-0175-1000-7727-fc7693d3ca2d"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea510f-0175-1000-ea26-562cf4f6a2c6","parent":{"ref":"EID6eea5029-0175-1000-7727-fc7693d3ca2d"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d5631b3-5429-457e-995c-9737a42e1d7a"},{"ref":"EID3b01bb7e-bb71-4176-baa6-38a4fde818e2"},{"ref":"EID67af214c-2033-41ed-98d0-aed6d58aaefc"}]},"parent":{"ref":"EID6eea5029-0175-1000-5cc8-f773d9befdd6"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:14:11Z","duration":80,"status":"PASSED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:14:11Z","duration":230,"status":"PASSED"},{"id":"EID6eea5110-0175-1000-f182-1e389c0e51f6","testStepResults":{"TestStepResult":[{"id":"EID6eea5110-0175-1000-85f1-e44f88571ae7","parent":{"ref":"EID6eea5110-0175-1000-f182-1e389c0e51f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:14:11Z","duration":223,"status":"PASSED"},{"id":"EID6eea5110-0175-1000-5bb3-1642e90dbfa9","parent":{"ref":"EID6eea5110-0175-1000-f182-1e389c0e51f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea5110-0175-1000-6c89-9f7bf2585467","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea51ae-0175-1000-d14a-5cf2d80e3ff4","parent":{"ref":"EID6eea5110-0175-1000-6c89-9f7bf2585467"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea51ae-0175-1000-eef8-4a5edaa1e952","parent":{"ref":"EID6eea5110-0175-1000-6c89-9f7bf2585467"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea51ae-0175-1000-012c-0b7205fc1157","parent":{"ref":"EID6eea5110-0175-1000-6c89-9f7bf2585467"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea51ae-0175-1000-d573-651d1d900fd8","parent":{"ref":"EID6eea5110-0175-1000-6c89-9f7bf2585467"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe9406487-ef48-4a43-81fa-c36b4dc7c65e"},{"ref":"EIDf5022339-5644-4bc9-a3ed-9ae8b2b10f4e"},{"ref":"EID6a8a475e-80e5-4cb7-b21f-c8ff7548ba98"}]},"parent":{"ref":"EID6eea5110-0175-1000-f182-1e389c0e51f6"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:14:11Z","duration":78,"status":"PASSED"},{"id":"EID6eea51ae-0175-1000-74a2-ae28f508be0f","attachments":{"attachment":{"ref":"EID62b13337-1ba6-496c-9376-3a7e3196001b"}},"parent":{"ref":"EID6eea5110-0175-1000-f182-1e389c0e51f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea51ba-0175-1000-5bee-03abb0b8540c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea51c8-0175-1000-5378-752b6fdcf576","parent":{"ref":"EID6eea51ba-0175-1000-5bee-03abb0b8540c"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea51c8-0175-1000-57d2-355e1a59a9e8","parent":{"ref":"EID6eea51ba-0175-1000-5bee-03abb0b8540c"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6eea51c8-0175-1000-028e-77f278c417a9","parent":{"ref":"EID6eea51ba-0175-1000-5bee-03abb0b8540c"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe230ee5f-e59f-4ba4-ae0b-b769916c4b80"},{"ref":"EIDc3b0640f-a339-49d1-97c3-e99743c50837"}]},"parent":{"ref":"EID6eea5110-0175-1000-f182-1e389c0e51f6"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:14:11Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6eea4a33-0175-1000-b5ee-f80f1d3550ea"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:14:11Z","duration":184,"status":"PASSED"}]},"parent":{"ref":"EID5fb7ed66-f444-459a-a06d-85cbe51eafd7"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:14:09Z","duration":1941,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID808e2066-f919-408b-ac9d-bcbc173f7117","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID808e2066-f919-408b-ac9d-bcbc173f7117"}},{"type":"ServiceEndpoint","id":"EIDe6613234-1896-4f7d-9d5d-d9d0f9b46ee4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDf8f3723c-4d31-4665-83b4-7b2789b8bc0e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDf8f3723c-4d31-4665-83b4-7b2789b8bc0e"}},{"type":"ServiceResponse","id":"EID9b4943a0-f709-4b46-b751-480f4cf527cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9b4943a0-f709-4b46-b751-480f4cf527cf"}},{"type":"ServiceEndpoint","id":"EID28b73eac-93a2-41d9-816d-8a3a0faf8a7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0319a1a5-6cd5-43e4-8d39-ff88ef27d755","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDa70c72f2-ad1f-46ab-b2ec-83448fe77003","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID1c02b1dc-7b78-44c8-8569-075669f7e2c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDc8756e75-8df2-4d13-8c59-b4f365967809","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDc8756e75-8df2-4d13-8c59-b4f365967809"}},{"type":"Message","id":"EID1fc6af09-1924-43b5-8cb5-c2d9ad5e6e13","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID1fc6af09-1924-43b5-8cb5-c2d9ad5e6e13"}},{"type":"Message","id":"EID5bd322f5-9441-44d0-9268-5ec3c5c56e3f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5bd322f5-9441-44d0-9268-5ec3c5c56e3f"}},{"type":"GetParameter","id":"EID16539463-266f-4b2b-a334-598dd81050cd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EIDdac1a31c-0c00-418d-9528-0be47e367d46","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDdac1a31c-0c00-418d-9528-0be47e367d46"}},{"type":"ServiceResponse","id":"EID20e66acb-7380-4969-902d-17c18d90b576","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID20e66acb-7380-4969-902d-17c18d90b576"}},{"type":"ServiceResponse","id":"EID7bb24651-a831-4621-b403-9015149f4ea8","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID7bb24651-a831-4621-b403-9015149f4ea8"}},{"type":"ServiceEndpoint","id":"EIDf18cd14e-41e6-4f3b-8163-25eec0200fce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID06438ae0-61b0-4c23-a87b-d84528a9145a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EID2b594008-3d1c-43d1-826e-f4dd15245a95","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID7d92bfe5-8ab7-4b1a-8ba4-369d308afd42","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID7d92bfe5-8ab7-4b1a-8ba4-369d308afd42"}},{"type":"Message","id":"EID6483b97c-9829-4294-b6ac-90838f5b3a02","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID6483b97c-9829-4294-b6ac-90838f5b3a02"}},{"type":"GetParameter","id":"EID1b969492-771f-4e19-8ec8-2bb0f371abcc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID83305a17-1df8-4bc5-9c02-7988faf594c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID5e2906e2-422b-4195-8d0d-c77e059ff442","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID697c9395-79ab-49be-a0fb-479ce131b892","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDfc5a483f-5e83-4bd9-984d-6ec7bbcc7b17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID47ade967-34c3-4557-9671-7b41834c3209","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID47ade967-34c3-4557-9671-7b41834c3209"}},{"type":"GetParameter","id":"EID827e84ef-989e-4120-8135-8517af4679bf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID14729103-8ae6-4a2c-92cb-c57d54a7ab1c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID14729103-8ae6-4a2c-92cb-c57d54a7ab1c"}},{"type":"ServiceResponse","id":"EIDaaf9a24d-fb94-4dae-8e50-94a93d89019d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDaaf9a24d-fb94-4dae-8e50-94a93d89019d"}},{"type":"ServiceEndpoint","id":"EID3f57a70b-47a9-4a40-a313-d9184f1b7d76","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID21a448ec-5824-406e-ae2b-3d4a02f14223","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID21a448ec-5824-406e-ae2b-3d4a02f14223"}},{"type":"ServiceResponse","id":"EIDa80b87aa-3e52-4abb-8b69-65e8af527097","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDa80b87aa-3e52-4abb-8b69-65e8af527097"}},{"type":"ServiceEndpoint","id":"EID6a968ff0-78c6-4fd3-9d86-0b104183ad9f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDe8c126d0-a132-48d3-9d30-7af8e3560f4c","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDe8c126d0-a132-48d3-9d30-7af8e3560f4c"}},{"type":"GetParameter","id":"EID31d4d621-2f4a-4f19-aec0-4630102ba090","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"GetParameter","id":"EID3899e9ce-a98d-4768-a82c-e472f31a24d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5d5631b3-5429-457e-995c-9737a42e1d7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDf7ba2f8b-ada1-4bd5-b366-55d73d329cd2","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDf7ba2f8b-ada1-4bd5-b366-55d73d329cd2"}},{"type":"GetParameter","id":"EID72050a9e-d88d-412c-a9c3-8556a90cfe57","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID00d9bda0-dadc-4e40-b0da-4238389098c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID5404588f-05d3-4508-a7ca-a8836d0ce3de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID57d862e1-fd70-4d3d-b092-29aec72e543a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID73b47052-2f59-4c33-b8cf-3835a63a746b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID73b47052-2f59-4c33-b8cf-3835a63a746b"}},{"type":"ServiceEndpoint","id":"EID8215f03e-b69e-446c-a66c-da226f9eb749","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID84d48706-5115-4729-b490-56183e1f0948","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID84d48706-5115-4729-b490-56183e1f0948"}},{"type":"GetParameter","id":"EID4a957987-be3c-4905-80fa-cc272717d3c9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID6a345515-19f7-48b4-93da-ba9d17ac439d","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID6a345515-19f7-48b4-93da-ba9d17ac439d"}},{"type":"Message","id":"EID73d75313-eeb0-4e87-987c-2b767162ce60","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID73d75313-eeb0-4e87-987c-2b767162ce60"}},{"type":"ServiceResponse","id":"EID671eb11a-5b1d-4517-8ded-7bcf7cd8fbdb","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID671eb11a-5b1d-4517-8ded-7bcf7cd8fbdb"}},{"type":"ServiceResponse","id":"EID3aa6b1d7-780d-43d8-8860-cbd3a116aab4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID3aa6b1d7-780d-43d8-8860-cbd3a116aab4"}},{"type":"Message","id":"EID4c2d6e49-772d-4997-a365-41fa1ab06ff5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID4c2d6e49-772d-4997-a365-41fa1ab06ff5"}},{"type":"ServiceEndpoint","id":"EID916a7c2c-5990-49b7-af9c-0fed93c9b425","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDca3ab689-417e-4f8b-a760-2084d45d5016","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDf2e32745-a046-4351-9dad-2dc74a6e3b4e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID553c13bf-3c9d-4358-bb97-9a1c27c231b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDcb8e8839-a114-41c6-958a-94370d8343ba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID09d95701-367b-4786-831c-c8ed3564295a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDb293ba8d-0cf5-4404-b5a3-ea487edb3af6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9kb3dubG9hZHMvaHlkcm9ncmFmaWUuemlw"},{"type":"GetParameter","id":"EIDbfb169b7-a023-4890-83fe-d8861fee4896","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID60db141b-f310-4e23-8d02-2b8c49c042f8","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID60db141b-f310-4e23-8d02-2b8c49c042f8"}},{"type":"ServiceEndpoint","id":"EID0884d971-7ba3-4221-998d-799deb40097f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID00b868dc-8cb3-4a1f-b813-cbb043f0b80d","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID00b868dc-8cb3-4a1f-b813-cbb043f0b80d"}},{"type":"Message","id":"EIDba6c2f78-ea4f-4cb5-8c9a-024543b14081","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDba6c2f78-ea4f-4cb5-8c9a-024543b14081"}},{"type":"ServiceEndpoint","id":"EID46ce6415-7804-4aa4-b41a-5d6aa272fc6d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID9f7a41ff-9b55-4ab7-abf8-b8fd083a4d98","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9f7a41ff-9b55-4ab7-abf8-b8fd083a4d98"}},{"type":"GetParameter","id":"EID00f25cad-3d9b-45fb-a1d1-e54953b08a25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID04667ee6-a631-429f-842f-a33e7fb75d71","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID04667ee6-a631-429f-842f-a33e7fb75d71"}},{"type":"ServiceResponse","id":"EID2a5ca580-18bd-4c35-968c-70ffbc41f554","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID2a5ca580-18bd-4c35-968c-70ffbc41f554"}},{"type":"Message","id":"EID3fd1da8a-b4cf-46aa-90d2-8547ae3e632d","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID3fd1da8a-b4cf-46aa-90d2-8547ae3e632d"}},{"type":"Message","id":"EID5ad2ce27-2e52-4bd0-955f-1a91fbeabb8e","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5ad2ce27-2e52-4bd0-955f-1a91fbeabb8e"}},{"type":"ServiceEndpoint","id":"EID1cdc2cf5-64f0-4bb9-8901-b42841e92a05","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDd8045bc3-2f40-4493-84af-f52929fa2795","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EIDfb914a2c-0185-4740-8b8d-1278ca3d0b5a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDfb914a2c-0185-4740-8b8d-1278ca3d0b5a"}},{"type":"ServiceEndpoint","id":"EIDb4195604-f8ab-49a8-b69b-1c6351c0b075","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID1fbd60e5-c988-4790-8a90-c250ea1aede7","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID1fbd60e5-c988-4790-8a90-c250ea1aede7"}},{"type":"ServiceResponse","id":"EIDeff2977c-0cfb-4783-a8f8-006d1fa400fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDeff2977c-0cfb-4783-a8f8-006d1fa400fa"}},{"type":"ServiceResponse","id":"EIDa4fc3297-f459-4204-a15b-5753e70282c7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDa4fc3297-f459-4204-a15b-5753e70282c7"}},{"type":"ServiceResponse","id":"EID1a83bdaf-d96e-433b-9711-874fe8dd1b7a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID1a83bdaf-d96e-433b-9711-874fe8dd1b7a"}},{"type":"ServiceEndpoint","id":"EID74140003-fd29-4ba3-9aa7-9fc2fe03ba69","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID4169c3f6-c94e-469a-a776-374ac539dcf8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID4169c3f6-c94e-469a-a776-374ac539dcf8"}},{"type":"Message","id":"EIDdc9f0529-0c3c-4aed-9cf6-39446ad94c69","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDdc9f0529-0c3c-4aed-9cf6-39446ad94c69"}},{"type":"ServiceResponse","id":"EIDea3c8c18-b50d-4811-95d3-765c8f689788","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDea3c8c18-b50d-4811-95d3-765c8f689788"}},{"type":"Message","id":"EID82eab4b9-b85a-4bd1-b598-28d222511993","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID82eab4b9-b85a-4bd1-b598-28d222511993"}},{"type":"Message","id":"EID50fffebd-9dfd-4008-9065-733bd5063345","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID50fffebd-9dfd-4008-9065-733bd5063345"}},{"type":"GetParameter","id":"EID484e6e52-05b6-41fb-9b45-29c59163d064","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EIDac239882-640f-4979-bb94-4b9c1d456c6a","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDac239882-640f-4979-bb94-4b9c1d456c6a"}},{"type":"ServiceResponse","id":"EIDd43ae4db-c41e-4c20-a57d-e07dd51a3918","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDd43ae4db-c41e-4c20-a57d-e07dd51a3918"}},{"type":"Message","id":"EID94de6bfd-04d0-4803-b329-a0a2b02de0e7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID94de6bfd-04d0-4803-b329-a0a2b02de0e7"}},{"type":"Message","id":"EID9b1a85ab-9813-491e-acd6-524889d67e97","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9b1a85ab-9813-491e-acd6-524889d67e97"}},{"type":"ServiceResponse","id":"EID506ab03c-e6b0-4c55-ae3a-cb895c6e3a91","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID506ab03c-e6b0-4c55-ae3a-cb895c6e3a91"}},{"type":"ServiceResponse","id":"EID417d2d42-bbe9-4c65-bde7-e892353aac68","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID417d2d42-bbe9-4c65-bde7-e892353aac68"}},{"type":"ServiceResponse","id":"EIDf45621af-a788-4567-b266-47a3ea98763d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDf45621af-a788-4567-b266-47a3ea98763d"}},{"type":"ServiceResponse","id":"EID3b01bb7e-bb71-4176-baa6-38a4fde818e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID3b01bb7e-bb71-4176-baa6-38a4fde818e2"}},{"type":"ServiceResponse","id":"EID8eb7ef04-f67f-47ba-82d5-6df031545036","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID8eb7ef04-f67f-47ba-82d5-6df031545036"}},{"type":"ServiceEndpoint","id":"EID707e911e-1231-4acf-98d2-fd295a72c00b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EIDba64d498-f21b-4f64-acfc-2718ba10389d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDba64d498-f21b-4f64-acfc-2718ba10389d"}},{"type":"Message","id":"EIDea0a9d1c-0ef3-48f2-a826-911ad20142e3","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDea0a9d1c-0ef3-48f2-a826-911ad20142e3"}},{"type":"ServiceResponse","id":"EIDa8015892-f470-464d-b4cf-4386564415bf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDa8015892-f470-464d-b4cf-4386564415bf"}},{"type":"GetParameter","id":"EID0881435a-c732-438d-a939-8715a4bf0a32","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID9fd16b6d-57a9-4040-8956-52cb806c519e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9fd16b6d-57a9-4040-8956-52cb806c519e"}},{"type":"GetParameter","id":"EIDed6465d8-6ac9-4164-8f9f-a58394f09b99","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EIDbb1e5738-3bf0-49a8-beb4-afde49890623","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDbb1e5738-3bf0-49a8-beb4-afde49890623"}},{"type":"ServiceEndpoint","id":"EIDdb9427e7-b34a-47c2-ae4a-581103fb68b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID48f24335-e513-4a33-856a-950eb1fdeea0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID27b273d5-3b8f-421e-ae4c-2e2b915f5b49","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID27b273d5-3b8f-421e-ae4c-2e2b915f5b49"}},{"type":"GetParameter","id":"EIDe594ef5e-6c14-45c2-95b8-f5dd70291e63","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID7c35dad4-e6aa-43d2-8bb8-f820329208c9","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID7c35dad4-e6aa-43d2-8bb8-f820329208c9"}},{"type":"Message","id":"EIDa58d5438-dd54-452d-9af6-24160aed15c9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDa58d5438-dd54-452d-9af6-24160aed15c9"}},{"type":"Message","id":"EID0281cf71-e721-4c5e-bfe1-73108eff1939","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID0281cf71-e721-4c5e-bfe1-73108eff1939"}},{"type":"Message","id":"EID1976fa29-9a2d-4136-83d5-44735c764679","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID1976fa29-9a2d-4136-83d5-44735c764679"}},{"type":"Message","id":"EID719c4043-2c35-4850-8157-227783af02a6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID719c4043-2c35-4850-8157-227783af02a6"}},{"type":"ServiceEndpoint","id":"EID56a5b45f-2d10-487c-8d5d-b70e0f1624dc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID38ba6c2e-746b-4397-827c-f98a3b20005f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID38ba6c2e-746b-4397-827c-f98a3b20005f"}},{"type":"Message","id":"EID5d95de88-ca4d-43ac-8e72-460a26421875","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5d95de88-ca4d-43ac-8e72-460a26421875"}},{"type":"ServiceResponse","id":"EID01578ef3-0159-4421-b9a9-8d153bd46063","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID01578ef3-0159-4421-b9a9-8d153bd46063"}},{"type":"Message","id":"EID14c4fb38-68bb-47d6-a3af-fccb693bae5b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID14c4fb38-68bb-47d6-a3af-fccb693bae5b"}},{"type":"Message","id":"EID0f1a8cc9-4367-415f-a9fa-69f5666730da","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID0f1a8cc9-4367-415f-a9fa-69f5666730da"}},{"type":"ServiceEndpoint","id":"EID9bda34bd-4be5-4a3a-9d34-cd4f2856e8f5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDb84a931d-4ae2-43ee-94cf-39da48319c7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID6933abe1-7e42-4988-b8b8-97b2805b2154","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDbdaee47d-ec2f-40eb-9535-fe27422f73d0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDbdaee47d-ec2f-40eb-9535-fe27422f73d0"}},{"type":"ServiceResponse","id":"EID5fadcc86-24de-4b80-850b-d8889c9b8eb8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5fadcc86-24de-4b80-850b-d8889c9b8eb8"}},{"type":"Message","id":"EID9857c643-6ba3-4b04-ba51-d307df2d7440","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9857c643-6ba3-4b04-ba51-d307df2d7440"}},{"type":"GetParameter","id":"EID2cbf265d-9214-4fc1-bf84-b1ee5fc03f54","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDa5bf71ac-7e04-47ff-b9de-5ddef1f7544e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDe9406487-ef48-4a43-81fa-c36b4dc7c65e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDd93da728-79b2-41bd-922b-b8fc12872edd","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDd93da728-79b2-41bd-922b-b8fc12872edd"}},{"type":"GetParameter","id":"EID83f9f4b6-c91b-4b1c-9fd5-6cfcb68cfad4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID9485b135-e3d8-4e05-93c2-adf2808beb3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID9f1722f9-c63e-4598-803f-660192d0a91b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"LogFile","id":"EIDb7dbc243-d878-4426-b43f-4ab7eb5c8536","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDb7dbc243-d878-4426-b43f-4ab7eb5c8536"}},{"type":"Message","id":"EIDc87c50df-fb57-476e-9542-9956cd24c6eb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDc87c50df-fb57-476e-9542-9956cd24c6eb"}},{"type":"ServiceResponse","id":"EID3471d03e-b855-42e1-85c7-d987f1bfcb0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID3471d03e-b855-42e1-85c7-d987f1bfcb0f"}},{"type":"Message","id":"EIDf9fa776c-f6b9-455f-b4dc-265f77ccc71f","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDf9fa776c-f6b9-455f-b4dc-265f77ccc71f"}},{"type":"ServiceEndpoint","id":"EID643fda36-9c0e-46fa-ac98-84c5dbd63973","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID940c00ad-dfa9-4038-be25-39d6ab3f4cb1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID380a711d-ff21-4063-9e98-f8c68bc98276","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID9be059c5-8525-48bd-8aea-256d9708b291","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9be059c5-8525-48bd-8aea-256d9708b291"}},{"type":"ServiceEndpoint","id":"EID0fd2b36c-6b07-4457-9ced-70390c3fd082","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID5f69857d-3c86-4078-8624-839c34a16426","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5f69857d-3c86-4078-8624-839c34a16426"}},{"type":"ServiceEndpoint","id":"EID86148f55-09da-48c5-8cf6-802a364b8ab2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7dd80eaf-aaa7-4ed4-8c21-8bf5a34abb32","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID7dd80eaf-aaa7-4ed4-8c21-8bf5a34abb32"}},{"type":"ServiceEndpoint","id":"EID7e79785f-2719-4ae4-a278-9a26a657e114","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDbb10c9b8-3276-4e15-b970-80c55a1b10ea","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDbb10c9b8-3276-4e15-b970-80c55a1b10ea"}},{"type":"GetParameter","id":"EID67af214c-2033-41ed-98d0-aed6d58aaefc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDccfc3a00-a99e-4ffe-a2db-9601290cc44a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID5332ebe9-6ebd-4998-a617-c761e1428df9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5332ebe9-6ebd-4998-a617-c761e1428df9"}},{"type":"ServiceEndpoint","id":"EID48e88261-1065-4872-8d69-be24dd112702","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd910cf3b-9e8d-43c5-a014-4bac36fdc0d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDc3b0640f-a339-49d1-97c3-e99743c50837","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID8bc9f350-1ff9-473d-96ca-06b5b4aa0968","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID6a8a475e-80e5-4cb7-b21f-c8ff7548ba98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDde078a82-5aaa-4a47-9891-ab6ab77f77ef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID0a379c91-79e5-4021-951b-051c7fbd2094","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID0a379c91-79e5-4021-951b-051c7fbd2094"}},{"type":"Message","id":"EID62b13337-1ba6-496c-9376-3a7e3196001b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID62b13337-1ba6-496c-9376-3a7e3196001b"}},{"type":"ServiceEndpoint","id":"EID89ce5c1e-96ba-4095-8c31-459d06d49fc6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4594907c-0622-4241-8fa2-9c821bc7d3a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID40833975-e080-4050-a858-536de64b3852","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID339dfd1c-981d-421b-b1bd-d136629ffdf4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID339dfd1c-981d-421b-b1bd-d136629ffdf4"}},{"type":"GetParameter","id":"EID8fbff508-b82d-4ae9-b290-7b418200fdf7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDf90d3fe2-de89-416a-b669-6f8516ac0866","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID7621e53b-614f-4348-a338-6d136465308f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID7621e53b-614f-4348-a338-6d136465308f"}},{"type":"Message","id":"EID376150b6-fadf-4df8-9e21-0c40f80ba57d","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID376150b6-fadf-4df8-9e21-0c40f80ba57d"}},{"type":"ServiceResponse","id":"EIDf5022339-5644-4bc9-a3ed-9ae8b2b10f4e","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDf5022339-5644-4bc9-a3ed-9ae8b2b10f4e"}},{"type":"ServiceEndpoint","id":"EIDe79d5d68-f8e4-4c90-a915-587c53947e00","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDb4e274dd-0dc1-4606-8193-000830c637ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID7f2b871d-f93d-4452-b5c3-ad4d53fe1787","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID7f2b871d-f93d-4452-b5c3-ad4d53fe1787"}},{"type":"Message","id":"EIDa1cc4fa2-b348-43cb-bd3a-1cdf48f88877","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDa1cc4fa2-b348-43cb-bd3a-1cdf48f88877"}},{"type":"GetParameter","id":"EID40f9b1df-db81-4539-8312-ce59a4edd722","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EIDab9e16f7-1bde-4b2e-9afc-dfd409f053f0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDab9e16f7-1bde-4b2e-9afc-dfd409f053f0"}},{"type":"Message","id":"EID5a77312d-9014-4c79-93ef-4685feb3ed75","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5a77312d-9014-4c79-93ef-4685feb3ed75"}},{"type":"GetParameter","id":"EIDbd9dddb5-c8b0-456a-ae0d-818529ee2163","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID8c75adef-e65a-4106-8a96-c175da7a2e7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDa42bbeb7-f93e-4e0f-81d8-f58bd975e817","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDe230ee5f-e59f-4ba4-ae0b-b769916c4b80","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDbece2d7b-2681-450a-8c11-e6d799478f71","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDbece2d7b-2681-450a-8c11-e6d799478f71"}},{"type":"Message","id":"EID3f892b61-85a3-45b0-b35a-0f42af933c5f","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID3f892b61-85a3-45b0-b35a-0f42af933c5f"}},{"type":"ServiceResponse","id":"EIDe6c3445e-da65-4857-8090-cece77dee53f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDe6c3445e-da65-4857-8090-cece77dee53f"}},{"type":"ServiceEndpoint","id":"EID1040d482-8855-4ddb-a9c0-59f99c88c56b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDfe1bb3f7-c788-45f7-8fa1-c6de6533f7f2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID8b41003e-863f-413b-b788-ccaa1fedaa78","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID8b41003e-863f-413b-b788-ccaa1fedaa78"}},{"type":"Message","id":"EID9dcb58e4-2735-4b63-9631-dbd467c93a71","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9dcb58e4-2735-4b63-9631-dbd467c93a71"}},{"type":"ServiceEndpoint","id":"EIDf021a5a3-9295-417b-9a11-6a0d68b701fc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EIDaad5b1a4-5660-40fa-96f8-e65c8c8cf0fd","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EIDaad5b1a4-5660-40fa-96f8-e65c8c8cf0fd"}},{"type":"ServiceResponse","id":"EID2b9e43b2-23ce-4095-9704-fae286e534e1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID2b9e43b2-23ce-4095-9704-fae286e534e1"}},{"type":"Message","id":"EID1fb64c52-e8a2-46c9-9652-b5af89152d93","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID1fb64c52-e8a2-46c9-9652-b5af89152d93"}},{"type":"ServiceEndpoint","id":"EIDf6a2a6ee-bb84-4672-9433-ee223bd88b02","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EID6ce2fdb8-3e88-45d4-9d77-cc4be49cb2a9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID3cb531a3-afa4-49a5-bcef-3131853031ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID9fcde150-e7b6-4ccf-a8c3-d05c47c37c06","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9fcde150-e7b6-4ccf-a8c3-d05c47c37c06"}},{"type":"Message","id":"EID2a8c09c1-99a3-4038-bc11-9e6e3d333cf6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID2a8c09c1-99a3-4038-bc11-9e6e3d333cf6"}},{"type":"ServiceResponse","id":"EID5bdd0501-2b4d-400e-9c5b-a3322e34bc7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5bdd0501-2b4d-400e-9c5b-a3322e34bc7f"}},{"type":"ServiceEndpoint","id":"EID85c16dd9-9346-4242-bc01-57e55c7a9bc3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDde4fa64b-37ba-46a8-b2f3-64b227fc8c64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDc26577c0-1273-4561-8192-48751307da01","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDff8fda02-2d27-46a7-a02c-ec28a27222ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID4a0791f3-c07e-44fa-b33e-4994bedb1fa4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID69abd9c3-6111-485b-ad78-23453fb9e9c8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID5d58ef4a-0980-4735-9681-9d6d57899fa6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID5d58ef4a-0980-4735-9681-9d6d57899fa6"}},{"type":"ServiceEndpoint","id":"EIDcafd4893-b6ae-4254-ab7b-e398d0f7a903","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID9057c855-6071-47e7-9386-89aafb475993","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID4c628d05-49bc-45b1-a5c6-a4127157d44e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID4c628d05-49bc-45b1-a5c6-a4127157d44e"}},{"type":"GetParameter","id":"EID98199a60-1a34-4249-989c-7669e5854188","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDf7faf670-16d1-4119-9bd9-0870bcfaab92","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID44824f22-8b3b-477e-9551-6fd8fe84b573","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDd8d06608-6350-45c3-bda6-14019ed67504","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID816ddded-8fdb-427e-83a5-c246600d13cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9kb3dubG9hZHMvaHlkcm9ncmFmaWUuemlw"},{"type":"ServiceResponse","id":"EID55ea2f18-1456-4bd4-9381-691c0326684e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID55ea2f18-1456-4bd4-9381-691c0326684e"}},{"type":"ServiceResponse","id":"EID9fad6cf6-e421-448a-b587-e5b2e0fa888f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID5fb7ed66-f444-459a-a06d-85cbe51eafd7/Attachments/EID9fad6cf6-e421-448a-b587-e5b2e0fa888f"}},{"type":"GetParameter","id":"EID1bb09fb0-8f90-41ba-8e05-484261f890f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:14:01Z","duration":9900,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.011
11:14:24.164 [print] EID4bd38577-95aa-4e2d-989c-a3abaea72003
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:24.165 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:14:24.165 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:24.166 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:24.166 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4bd38577-95aa-4e2d-989c-a3abaea72003.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:14:24.166 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4bd38577-95aa-4e2d-989c-a3abaea72003.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:24.166 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4bd38577-95aa-4e2d-989c-a3abaea72003/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.013
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.006
11:14:24.188 [print] [
  "TR.missingLinkToRegistry",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
11:14:24.189 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToRegistry"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.762
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:29.616 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.762
11:14:29.617 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 294
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS"}}}

11:14:31.379 response time in milliseconds: 1656.64
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:31 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883671209","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:31.379 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.633
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.002
11:14:06.388 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.631
11:14:06.392 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities"}}}

11:14:08.019 response time in milliseconds: 1519.89
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:07 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883647848","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:08.019 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
38.419
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:11:29.969 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.641
11:11:29.969 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:11:35.605 response time in milliseconds: 4876.99
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:34 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:11:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/dfa03703-3a48-4733-8a29-b620ef4363f3.json","testRuns":{"TestRun":{"id":"EIDdfa03703-3a48-4733-8a29-b620ef4363f3","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:11:32.211Z","testTasks":{"TestTask":{"id":"EID61e1eef5-2a10-4d3e-9966-f8c63181973e","parent":{"ref":"EIDdfa03703-3a48-4733-8a29-b620ef4363f3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDa046813e-5f29-47cf-b19b-2710a97728ef"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDa046813e-5f29-47cf-b19b-2710a97728ef","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:11:30.411Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:11:31.54Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.001
11:11:35.612 [print] EIDdfa03703-3a48-4733-8a29-b620ef4363f3
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:11:35.612 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:11:35.612 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:11:35.613 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/dfa03703-3a48-4733-8a29-b620ef4363f3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:11:35.613 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:11:35.613 [print] statuspath TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3
* print 'progresspath ', progresspath 0.000
11:11:35.613 [print] progresspath  TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
Given path progresspath 0.000
When method GET 0.513
11:11:35.613 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:36.126 response time in milliseconds: 512.35
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:11:36 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:11:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:32 UTC 2020)","28.10.2020 11:11:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:32 - Preparing 1 Test Task:","28.10.2020 11:11:32 -  TestTask 1 (61e1eef5-2a10-4d3e-9966-f8c63181973e)","28.10.2020 11:11:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:32 -  with parameters: ","28.10.2020 11:11:32 - etf.testcases = *","28.10.2020 11:11:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:32 - Setting state to CREATED","28.10.2020 11:11:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:32 - Starting TestRun.dfa03703-3a48-4733-8a29-b620ef4363f3 at 2020-10-28T11:11:34Z","28.10.2020 11:11:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:34 - Project Properties: ","28.10.2020 11:11:34 - etf.testcases - * ","28.10.2020 11:11:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:34 - username -  ","28.10.2020 11:11:34 - authUser -  ","28.10.2020 11:11:34 - authMethod - basic ","28.10.2020 11:11:34 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:11:36.126 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:11:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:32 UTC 2020)",
    "28.10.2020 11:11:32 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:11:32 - Preparing 1 Test Task:",
    "28.10.2020 11:11:32 -  TestTask 1 (61e1eef5-2a10-4d3e-9966-f8c63181973e)",
    "28.10.2020 11:11:32 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:11:32 -  with parameters: ",
    "28.10.2020 11:11:32 - etf.testcases = *",
    "28.10.2020 11:11:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:11:32 - Setting state to CREATED",
    "28.10.2020 11:11:32 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:11:32 - Starting TestRun.dfa03703-3a48-4733-8a29-b620ef4363f3 at 2020-10-28T11:11:34Z",
    "28.10.2020 11:11:34 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:11:34 - Project Properties: ",
    "28.10.2020 11:11:34 - etf.testcases - * ",
    "28.10.2020 11:11:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:11:34 - username -  ",
    "28.10.2020 11:11:34 - authUser -  ",
    "28.10.2020 11:11:34 - authMethod - basic ",
    "28.10.2020 11:11:34 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 24.112
11:11:36.127 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:36.638 response time in milliseconds: 510.56
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:11:36 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:11:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:32 UTC 2020)","28.10.2020 11:11:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:32 - Preparing 1 Test Task:","28.10.2020 11:11:32 -  TestTask 1 (61e1eef5-2a10-4d3e-9966-f8c63181973e)","28.10.2020 11:11:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:32 -  with parameters: ","28.10.2020 11:11:32 - etf.testcases = *","28.10.2020 11:11:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:32 - Setting state to CREATED","28.10.2020 11:11:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:32 - Starting TestRun.dfa03703-3a48-4733-8a29-b620ef4363f3 at 2020-10-28T11:11:34Z","28.10.2020 11:11:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:34 - Project Properties: ","28.10.2020 11:11:34 - etf.testcases - * ","28.10.2020 11:11:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:34 - username -  ","28.10.2020 11:11:34 - authUser -  ","28.10.2020 11:11:34 - authMethod - basic ","28.10.2020 11:11:34 - TestRunTask initialized"]}

11:11:36.639 retry condition not satisfied: response.val == response.max
11:11:36.639 sleeping before retry #1
11:11:41.640 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:42.160 response time in milliseconds: 519.52
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:11:42 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["28.10.2020 11:11:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:32 UTC 2020)","28.10.2020 11:11:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:32 - Preparing 1 Test Task:","28.10.2020 11:11:32 -  TestTask 1 (61e1eef5-2a10-4d3e-9966-f8c63181973e)","28.10.2020 11:11:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:32 -  with parameters: ","28.10.2020 11:11:32 - etf.testcases = *","28.10.2020 11:11:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:32 - Setting state to CREATED","28.10.2020 11:11:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:32 - Starting TestRun.dfa03703-3a48-4733-8a29-b620ef4363f3 at 2020-10-28T11:11:34Z","28.10.2020 11:11:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:34 - Project Properties: ","28.10.2020 11:11:34 - etf.testcases - * ","28.10.2020 11:11:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:34 - username -  ","28.10.2020 11:11:34 - authUser -  ","28.10.2020 11:11:34 - authMethod - basic ","28.10.2020 11:11:34 - TestRunTask initialized","28.10.2020 11:11:39 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:11:39 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

11:11:42.160 retry condition not satisfied: response.val == response.max
11:11:42.160 sleeping before retry #2
11:11:47.161 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:47.700 response time in milliseconds: 534.26
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:11:47 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"88","max":"89","log":["28.10.2020 11:11:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:32 UTC 2020)","28.10.2020 11:11:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:32 - Preparing 1 Test Task:","28.10.2020 11:11:32 -  TestTask 1 (61e1eef5-2a10-4d3e-9966-f8c63181973e)","28.10.2020 11:11:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:32 -  with parameters: ","28.10.2020 11:11:32 - etf.testcases = *","28.10.2020 11:11:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:32 - Setting state to CREATED","28.10.2020 11:11:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:32 - Starting TestRun.dfa03703-3a48-4733-8a29-b620ef4363f3 at 2020-10-28T11:11:34Z","28.10.2020 11:11:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:34 - Project Properties: ","28.10.2020 11:11:34 - etf.testcases - * ","28.10.2020 11:11:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:34 - username -  ","28.10.2020 11:11:34 - authUser -  ","28.10.2020 11:11:34 - authMethod - basic ","28.10.2020 11:11:34 - TestRunTask initialized","28.10.2020 11:11:39 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:11:39 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:44 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:47.706 retry condition not satisfied: response.val == response.max
11:11:47.706 sleeping before retry #3
11:11:52.707 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:53.231 response time in milliseconds: 522.92
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:11:53 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"140","max":"141","log":["28.10.2020 11:11:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:11:32 UTC 2020)","28.10.2020 11:11:32 - Resolving Executable Test Suite dependencies","28.10.2020 11:11:32 - Preparing 1 Test Task:","28.10.2020 11:11:32 -  TestTask 1 (61e1eef5-2a10-4d3e-9966-f8c63181973e)","28.10.2020 11:11:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:11:32 -  with parameters: ","28.10.2020 11:11:32 - etf.testcases = *","28.10.2020 11:11:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:11:32 - Setting state to CREATED","28.10.2020 11:11:32 - Changed state from CREATED to INITIALIZING","28.10.2020 11:11:32 - Starting TestRun.dfa03703-3a48-4733-8a29-b620ef4363f3 at 2020-10-28T11:11:34Z","28.10.2020 11:11:34 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:11:34 - Project Properties: ","28.10.2020 11:11:34 - etf.testcases - * ","28.10.2020 11:11:34 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:11:34 - username -  ","28.10.2020 11:11:34 - authUser -  ","28.10.2020 11:11:34 - authMethod - basic ","28.10.2020 11:11:34 - TestRunTask initialized","28.10.2020 11:11:39 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:11:39 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:44 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:47 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:47 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:48 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:48 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:11:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:48 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:48 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:11:48 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:48 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:11:49 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:50 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:50 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:50 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:11:50 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:11:51 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:11:51 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:11:52 ERROR Response status code:404 is not in acceptable list of status codes"]}

11:11:53.234 retry condition not satisfied: response.val == response.max
11:11:53.234 sleeping before retry #4
11:11:58.235 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:00.239 response time in milliseconds: 2003.10
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:12:00 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:12:00.239 retry condition satisfied
* print response 0.000
11:12:00.239 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 8.103
11:12:00.240 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:08.339 response time in milliseconds: 7140.14
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:12:07 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Wed, 28 Oct 2020 11:11:57 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/dfa03703-3a48-4733-8a29-b620ef4363f3.json","testRuns":{"TestRun":{"id":"EIDdfa03703-3a48-4733-8a29-b620ef4363f3","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:11:32.211Z","testTasks":{"TestTask":{"id":"EID61e1eef5-2a10-4d3e-9966-f8c63181973e","parent":{"ref":"EIDdfa03703-3a48-4733-8a29-b620ef4363f3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDa046813e-5f29-47cf-b19b-2710a97728ef"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDa046813e-5f29-47cf-b19b-2710a97728ef","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:11:30.411Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:11:31.54Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e","testObject":{"ref":"EIDa046813e-5f29-47cf-b19b-2710a97728ef"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee7eb86-0175-1000-8221-46778124d6b3","testCaseResults":{"TestCaseResult":[{"id":"EID6ee7eba6-0175-1000-e3a8-541b42d89a52","testStepResults":{"TestStepResult":[{"id":"EID6ee7eba7-0175-1000-1740-8dfab38247d5","parent":{"ref":"EID6ee7eba6-0175-1000-e3a8-541b42d89a52"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:11:34Z","duration":13,"status":"PASSED"},{"id":"EID6ee7ebbf-0175-1000-7da3-46042e7fe7fa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7ec70-0175-1000-a3f9-8435656600cc","parent":{"ref":"EID6ee7ebbf-0175-1000-7da3-46042e7fe7fa"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ec70-0175-1000-c906-3bdbf70cde8c","parent":{"ref":"EID6ee7ebbf-0175-1000-7da3-46042e7fe7fa"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ec70-0175-1000-aa36-7015a218bafd","parent":{"ref":"EID6ee7ebbf-0175-1000-7da3-46042e7fe7fa"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ec70-0175-1000-0739-2d97a1f6e47e","parent":{"ref":"EID6ee7ebbf-0175-1000-7da3-46042e7fe7fa"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDac1e5b88-72a6-484a-a67f-8ffe90193dc0"},{"ref":"EID4ab0ccb7-3490-4b62-be6b-6c127caf4da1"},{"ref":"EID601d8a9f-ae70-43b5-93a8-f840d3b9d34f"}]},"parent":{"ref":"EID6ee7eba6-0175-1000-e3a8-541b42d89a52"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:11:34Z","duration":80,"status":"PASSED"}]},"parent":{"ref":"EID6ee7eb86-0175-1000-8221-46778124d6b3"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:11:34Z","duration":203,"status":"PASSED"},{"id":"EID6ee7ec71-0175-1000-7283-03184735a893","testStepResults":{"TestStepResult":{"id":"EID6ee7ec71-0175-1000-1d3a-36c73218d1be","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7ed9c-0175-1000-275b-aeb74b280eea","parent":{"ref":"EID6ee7ec71-0175-1000-1d3a-36c73218d1be"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ed9c-0175-1000-7bfe-2b2baebd2aaf","parent":{"ref":"EID6ee7ec71-0175-1000-1d3a-36c73218d1be"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ed9c-0175-1000-b218-5d200cfda330","parent":{"ref":"EID6ee7ec71-0175-1000-1d3a-36c73218d1be"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:11:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4f730b4-1f81-49b9-bf99-f9c209eb902c"},{"ref":"EID80c5c137-f6b8-47ae-bbe1-f492ba9a5b7e"},{"ref":"EIDed135caf-8fb3-409e-8017-d7062009ce15"}]},"parent":{"ref":"EID6ee7ec71-0175-1000-7283-03184735a893"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:11:34Z","duration":67,"status":"PASSED"}},"parent":{"ref":"EID6ee7eb86-0175-1000-8221-46778124d6b3"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:11:34Z","duration":299,"status":"PASSED"}]},"parent":{"ref":"EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:11:34Z","duration":534,"status":"PASSED"},{"id":"EID6ee7ed9c-0175-1000-bb6d-608c26048771","testCaseResults":{"TestCaseResult":[{"id":"EID6ee7ed9c-0175-1000-ebfd-8127d9ef8d49","testStepResults":{"TestStepResult":[{"id":"EID6ee7ed9c-0175-1000-f082-c1c831b4ab65","parent":{"ref":"EID6ee7ed9c-0175-1000-ebfd-8127d9ef8d49"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:11:34Z","duration":67,"status":"PASSED"},{"id":"EID6ee7ed9c-0175-1000-5f39-b17f1ebe34f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7eef3-0175-1000-80e0-7f2d096310f0","parent":{"ref":"EID6ee7ed9c-0175-1000-5f39-b17f1ebe34f3"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7eef3-0175-1000-0d45-4324be1a3d2b","parent":{"ref":"EID6ee7ed9c-0175-1000-5f39-b17f1ebe34f3"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7eef3-0175-1000-b78e-f009a2d5ed7e","parent":{"ref":"EID6ee7ed9c-0175-1000-5f39-b17f1ebe34f3"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7eef3-0175-1000-8d7c-971c741751ce","parent":{"ref":"EID6ee7ed9c-0175-1000-5f39-b17f1ebe34f3"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7eef3-0175-1000-0ccf-798265a2f1c9","parent":{"ref":"EID6ee7ed9c-0175-1000-5f39-b17f1ebe34f3"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID52b2c733-683a-4816-8c4e-14b38e11cd5c"},{"ref":"EIDca4770f9-aeca-465e-aa04-edb30636a802"},{"ref":"EIDabe70895-6cb5-42fc-8e5e-445ded0d7e2d"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-ebfd-8127d9ef8d49"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:11:34Z","duration":60,"status":"PASSED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:11:34Z","duration":343,"status":"PASSED"},{"id":"EID6ee7eef3-0175-1000-5f25-0f5d9f4bab82","testStepResults":{"TestStepResult":[{"id":"EID6ee7eef3-0175-1000-6736-8ea3a9c34a5a","attachments":{"attachment":[{"ref":"EIDed972fd2-09d3-4b9c-ac02-4753b81ed2d8"},{"ref":"EID72c82408-ff73-4249-b07d-379242d9b889"}]},"parent":{"ref":"EID6ee7eef3-0175-1000-5f25-0f5d9f4bab82"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:11:35Z","duration":226,"status":"PASSED"},{"id":"EID6ee7effd-0175-1000-b897-df10f5096dd6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f11c-0175-1000-63dd-1db87e48a44f","parent":{"ref":"EID6ee7effd-0175-1000-b897-df10f5096dd6"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f11c-0175-1000-214d-29f7ad4d43a7","parent":{"ref":"EID6ee7effd-0175-1000-b897-df10f5096dd6"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f11c-0175-1000-4faa-fedaf5d73a5f","parent":{"ref":"EID6ee7effd-0175-1000-b897-df10f5096dd6"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f11c-0175-1000-2135-272d56cfddc6","parent":{"ref":"EID6ee7effd-0175-1000-b897-df10f5096dd6"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:11:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2441ac55-b96b-4349-b155-8a7002323c7a"},{"ref":"EID909578dd-8b27-44f5-a719-aa22932c1a68"},{"ref":"EID3bb3b979-703f-4352-a482-f2264014dbc5"}]},"parent":{"ref":"EID6ee7eef3-0175-1000-5f25-0f5d9f4bab82"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:11:35Z","duration":96,"status":"PASSED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:11:35Z","duration":566,"status":"PASSED"},{"id":"EID6ee7f129-0175-1000-21c1-37cd9e452e1b","testStepResults":{"TestStepResult":[{"id":"EID6ee7f129-0175-1000-9c74-3b0c6a5e37d7","attachments":{"attachment":[{"ref":"EID484ff1cb-f0b5-4c86-8643-a8dac243d6d3"},{"ref":"EIDe5c9c901-4457-472e-9537-b63233499839"}]},"parent":{"ref":"EID6ee7f129-0175-1000-21c1-37cd9e452e1b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:11:35Z","duration":172,"status":"PASSED"},{"id":"EID6ee7f1f9-0175-1000-c024-290987ffb176","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f2e7-0175-1000-9a72-3c71a876c77b","parent":{"ref":"EID6ee7f1f9-0175-1000-c024-290987ffb176"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f2e7-0175-1000-c132-f816ccdac487","parent":{"ref":"EID6ee7f1f9-0175-1000-c024-290987ffb176"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f2e7-0175-1000-397c-59277b67f9b1","parent":{"ref":"EID6ee7f1f9-0175-1000-c024-290987ffb176"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f2e7-0175-1000-e77a-cb1d54f88b8c","parent":{"ref":"EID6ee7f1f9-0175-1000-c024-290987ffb176"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f2e7-0175-1000-203c-4d97d50ea279","parent":{"ref":"EID6ee7f1f9-0175-1000-c024-290987ffb176"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID342d8fb2-134f-40c5-9c77-0eb8f1ef2581"},{"ref":"EIDd377bb7d-a9ef-4e18-a04a-c51901d7077a"},{"ref":"EIDccc69550-a216-4f67-a36f-2c656685538e"}]},"parent":{"ref":"EID6ee7f129-0175-1000-21c1-37cd9e452e1b"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:11:35Z","duration":83,"status":"PASSED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:11:35Z","duration":446,"status":"PASSED"},{"id":"EID6ee7f2e7-0175-1000-c749-a9ba67c18132","testStepResults":{"TestStepResult":[{"id":"EID6ee7f2e7-0175-1000-833e-e3c9001942b9","attachments":{"attachment":[{"ref":"EIDa34b4633-1000-4f61-b262-655f40b945e2"},{"ref":"EID2e03ef2a-fa37-40e7-ad07-941d2245ba6c"}]},"parent":{"ref":"EID6ee7f2e7-0175-1000-c749-a9ba67c18132"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:11:36Z","duration":148,"status":"PASSED"},{"id":"EID6ee7f3a7-0175-1000-774e-1715a6b70912","parent":{"ref":"EID6ee7f2e7-0175-1000-c749-a9ba67c18132"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:11:36Z","duration":9,"status":"PASSED"},{"id":"EID6ee7f3b0-0175-1000-a9ee-ed897b9f4864","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f479-0175-1000-4ccd-b935647e267f","parent":{"ref":"EID6ee7f3b0-0175-1000-a9ee-ed897b9f4864"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f479-0175-1000-1309-2de67329acd9","parent":{"ref":"EID6ee7f3b0-0175-1000-a9ee-ed897b9f4864"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f479-0175-1000-71ce-a18bec185b7e","parent":{"ref":"EID6ee7f3b0-0175-1000-a9ee-ed897b9f4864"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f479-0175-1000-efe0-e5e29f3c9588","parent":{"ref":"EID6ee7f3b0-0175-1000-a9ee-ed897b9f4864"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID41b57361-d449-4efd-9f70-c1e4ed37ab2e"},{"ref":"EIDe8ed7353-9339-46a0-ad45-f884aaf3b482"},{"ref":"EIDefb58cd2-c783-416d-8ea7-d88e23fd5962"}]},"parent":{"ref":"EID6ee7f2e7-0175-1000-c749-a9ba67c18132"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:11:36Z","duration":63,"status":"PASSED"},{"id":"EID6ee7f47a-0175-1000-7534-0ad5871cf415","attachments":{"attachment":{"ref":"EIDd5b10b6f-7cc1-4813-ab1b-69720bcbf513"}},"parent":{"ref":"EID6ee7f2e7-0175-1000-c749-a9ba67c18132"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:11:36Z","duration":2,"status":"PASSED"},{"id":"EID6ee7f487-0175-1000-9f13-f8681947dadb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f607-0175-1000-b388-a026b62541c8","parent":{"ref":"EID6ee7f487-0175-1000-9f13-f8681947dadb"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f607-0175-1000-45c8-d978dbde9952","parent":{"ref":"EID6ee7f487-0175-1000-9f13-f8681947dadb"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f607-0175-1000-e03d-a140b0c28b60","parent":{"ref":"EID6ee7f487-0175-1000-9f13-f8681947dadb"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f607-0175-1000-417f-bca9937430f0","parent":{"ref":"EID6ee7f487-0175-1000-9f13-f8681947dadb"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f607-0175-1000-dbc7-78257a7cb4ee","parent":{"ref":"EID6ee7f487-0175-1000-9f13-f8681947dadb"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:11:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe01234c9-ebe3-42b4-8047-437614012321"},{"ref":"EIDf30cbe72-1767-42e3-a3d2-e8d679f8275e"},{"ref":"EIDeac8a133-b5e2-4030-aa50-47539f30d44a"}]},"parent":{"ref":"EID6ee7f2e7-0175-1000-c749-a9ba67c18132"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:11:36Z","duration":158,"status":"PASSED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:11:36Z","duration":800,"status":"PASSED"},{"id":"EID6ee7f607-0175-1000-3f23-b6d1fedf56d5","testStepResults":{"TestStepResult":[{"id":"EID6ee7f607-0175-1000-0875-93ec84c4e40e","attachments":{"attachment":[{"ref":"EID7f845e01-5d4c-494b-8438-e3a6583e1333"},{"ref":"EID2a893002-8762-4596-9017-39af2f25261d"}]},"parent":{"ref":"EID6ee7f607-0175-1000-3f23-b6d1fedf56d5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:11:36Z","duration":201,"status":"PASSED"},{"id":"EID6ee7f6fb-0175-1000-959f-c6fe3fca1d2c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7f7a1-0175-1000-2f6c-9cd852b7a470","parent":{"ref":"EID6ee7f6fb-0175-1000-959f-c6fe3fca1d2c"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f7a1-0175-1000-8e06-faa81c401547","parent":{"ref":"EID6ee7f6fb-0175-1000-959f-c6fe3fca1d2c"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f7a1-0175-1000-ce07-55a6073e5094","parent":{"ref":"EID6ee7f6fb-0175-1000-959f-c6fe3fca1d2c"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee7f7a1-0175-1000-789e-2128b1f9f007","parent":{"ref":"EID6ee7f6fb-0175-1000-959f-c6fe3fca1d2c"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:11:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3488b72d-1c3d-46e4-9343-9d91b13f0889"},{"ref":"EID4d969194-8d3f-4a5a-b3b7-cdfc511a3bc8"},{"ref":"EID1ec8b84d-01ff-4443-912d-d8a02e19b517"}]},"parent":{"ref":"EID6ee7f607-0175-1000-3f23-b6d1fedf56d5"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:11:37Z","duration":61,"status":"PASSED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:11:36Z","duration":410,"status":"PASSED"},{"id":"EID6ee7f7a1-0175-1000-f353-be2658d7c2d4","testStepResults":{"TestStepResult":[{"id":"EID6ee7f7a1-0175-1000-7008-c26b7c184081","attachments":{"attachment":[{"ref":"EID2cef7069-9734-49fe-a4b7-9774f57570ec"},{"ref":"EID6f001ac4-fbd0-40dc-8011-20b239edd663"}]},"parent":{"ref":"EID6ee7f7a1-0175-1000-f353-be2658d7c2d4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:11:37Z","duration":644,"status":"PASSED"},{"id":"EID6ee7fa56-0175-1000-22a7-4b0b844c92a7","parent":{"ref":"EID6ee7f7a1-0175-1000-f353-be2658d7c2d4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:11:38Z","duration":0,"status":"PASSED"},{"id":"EID6ee7fa56-0175-1000-11c2-4ce1b2f544dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee7ff98-0175-1000-849e-470871136223","parent":{"ref":"EID6ee7fa56-0175-1000-11c2-4ce1b2f544dd"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ff98-0175-1000-0827-aebc05cfd981","parent":{"ref":"EID6ee7fa56-0175-1000-11c2-4ce1b2f544dd"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ff98-0175-1000-e887-b113036dffc3","parent":{"ref":"EID6ee7fa56-0175-1000-11c2-4ce1b2f544dd"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee7ff98-0175-1000-45e4-ce55e58ffa6f","parent":{"ref":"EID6ee7fa56-0175-1000-11c2-4ce1b2f544dd"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbee1d4fe-7e63-49d7-b46b-9671ebb7b88d"},{"ref":"EID618118df-5a84-4293-881e-9238a2fd38c9"},{"ref":"EIDf578ff27-bec3-4f1b-beeb-075fe9e897b0"}]},"parent":{"ref":"EID6ee7f7a1-0175-1000-f353-be2658d7c2d4"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:11:38Z","duration":1178,"status":"PASSED"},{"id":"EID6ee7ff98-0175-1000-2680-2c0b4990606a","attachments":{"attachment":{"ref":"EID005c78b3-e79b-4456-a956-d62761d1f198"}},"parent":{"ref":"EID6ee7f7a1-0175-1000-f353-be2658d7c2d4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:11:39Z","duration":2,"status":"PASSED"},{"id":"EID6ee7ffae-0175-1000-37dc-95f2210776eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8013e-0175-1000-9b93-d381c6aeb5a8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee7ffae-0175-1000-37dc-95f2210776eb"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:11:39Z","duration":12,"status":"FAILED"},{"id":"EID6ee8014a-0175-1000-e0d9-86a76417bb61","parent":{"ref":"EID6ee7ffae-0175-1000-37dc-95f2210776eb"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee8014a-0175-1000-1668-09d218e0243b","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6ee7ffae-0175-1000-37dc-95f2210776eb"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:11:39Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7e11f05f-92ef-4a57-b523-26a644bfd4a0"},{"ref":"EID8c7dacf1-d20e-402e-a9c5-0a1d3b9361b9"},{"ref":"EIDf7c50255-830f-42b2-a964-540a29e8fef9"}]},"parent":{"ref":"EID6ee7f7a1-0175-1000-f353-be2658d7c2d4"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:11:39Z","duration":300,"status":"FAILED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:11:37Z","duration":2473,"status":"FAILED"},{"id":"EID6ee8014b-0175-1000-e4c0-06985e4fd584","testStepResults":{"TestStepResult":[{"id":"EID6ee80156-0175-1000-496b-9373d997ded7","attachments":{"attachment":[{"ref":"EIDb19642ec-3a71-4b8c-9a7f-111c113a1730"},{"ref":"EID5a325bb3-7777-46bf-b68e-f9ab2ca0706e"}]},"parent":{"ref":"EID6ee8014b-0175-1000-e4c0-06985e4fd584"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:11:39Z","duration":1038,"status":"PASSED"},{"id":"EID6ee80593-0175-1000-8eda-de68692416ba","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee80b9f-0175-1000-f89c-93912c4ea929","parent":{"ref":"EID6ee80593-0175-1000-8eda-de68692416ba"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80b9f-0175-1000-1b6d-99ec9c12f8b6","parent":{"ref":"EID6ee80593-0175-1000-8eda-de68692416ba"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80b9f-0175-1000-b1d9-3dd880130719","parent":{"ref":"EID6ee80593-0175-1000-8eda-de68692416ba"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80b9f-0175-1000-373f-c0235c212866","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee80593-0175-1000-8eda-de68692416ba"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID45e6c0f0-0c3f-491b-a7fe-6735d09b2022"},{"ref":"EID8bdb87bd-7ee8-431b-9f4d-9d868a590ed1"},{"ref":"EID66be98f2-69d2-4fd3-90d7-6586e6fad1de"}]},"parent":{"ref":"EID6ee8014b-0175-1000-e4c0-06985e4fd584"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:11:40Z","duration":1411,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:11:39Z","duration":2664,"status":"PASSED_MANUAL"},{"id":"EID6ee80bb3-0175-1000-18a9-5193a7569c4f","testStepResults":{"TestStepResult":{"id":"EID6ee80bb3-0175-1000-2b8f-1661c650db10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee80d4f-0175-1000-26bb-b1f669b37ff9","parent":{"ref":"EID6ee80bb3-0175-1000-2b8f-1661c650db10"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80d4f-0175-1000-6906-62d36856d1b7","parent":{"ref":"EID6ee80bb3-0175-1000-2b8f-1661c650db10"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80d4f-0175-1000-4a34-afb5edcc88ca","parent":{"ref":"EID6ee80bb3-0175-1000-2b8f-1661c650db10"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"},{"id":"EID6ee80d50-0175-1000-ac39-621fc211aec3","parent":{"ref":"EID6ee80bb3-0175-1000-2b8f-1661c650db10"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:11:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1cb020e6-4261-4aa0-91b8-c98fd5ee513b"},{"ref":"EID5ebcc032-498a-49db-bdc6-8465b84dc9f8"},{"ref":"EIDbdce837e-3d55-427b-9a5c-6b733c44bc16"}]},"parent":{"ref":"EID6ee80bb3-0175-1000-18a9-5193a7569c4f"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:11:42Z","duration":294,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:11:42Z","duration":421,"status":"PASSED"},{"id":"EID6ee80d58-0175-1000-e79e-d7e0ea17d545","testStepResults":{"TestStepResult":{"id":"EID6ee80d58-0175-1000-50fd-e46a1b6e81e0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee80f2e-0175-1000-7019-5beb1293143a","parent":{"ref":"EID6ee80d58-0175-1000-50fd-e46a1b6e81e0"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:11:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee80f2e-0175-1000-5305-457f8fafae25","parent":{"ref":"EID6ee80d58-0175-1000-50fd-e46a1b6e81e0"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:11:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee80f2e-0175-1000-427c-67061b555190","parent":{"ref":"EID6ee80d58-0175-1000-50fd-e46a1b6e81e0"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:11:43Z","duration":0,"status":"PASSED"},{"id":"EID6ee80f2e-0175-1000-2098-b44c66b98e79","parent":{"ref":"EID6ee80d58-0175-1000-50fd-e46a1b6e81e0"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:11:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID74f8f909-a808-4f56-bb5a-166b92fce49d"},{"ref":"EIDe75f2867-28a6-4a4f-bfa4-afd5ae372004"},{"ref":"EID280b1afc-0d01-4aef-b680-6290f17f7d25"}]},"parent":{"ref":"EID6ee80d58-0175-1000-e79e-d7e0ea17d545"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:11:42Z","duration":326,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:11:42Z","duration":480,"status":"PASSED"},{"id":"EID6ee80f38-0175-1000-d0dc-f4b64cea4b45","testStepResults":{"TestStepResult":{"id":"EID6ee80f38-0175-1000-ab8d-fd90315a7c32","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID0d82b0b2-b9e6-47a4-8af4-68dd765c9163"},{"ref":"EID10c8dc48-8b2d-4f58-8e1a-9e08d8567ac8"},{"ref":"EID78c3e375-e538-4e24-8d71-2fcd7928da5d"},{"ref":"EID05e342ed-f457-45cc-94f5-82e6c1b985f1"},{"ref":"EID9f119e6d-b990-45df-a6e5-c96a57e2e839"},{"ref":"EIDc9b5b10f-7193-49b9-84cf-83ab7421dba1"},{"ref":"EID5f196d18-c2f5-4f72-8a9e-3a90417beb49"},{"ref":"EID3776c821-694e-4bf8-a798-a89b4fb3aef0"},{"ref":"EIDdb552c27-9650-458a-970e-08f3d3e56412"}]},"parent":{"ref":"EID6ee80f38-0175-1000-d0dc-f4b64cea4b45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:11:43Z","duration":926,"status":"SKIPPED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:11:43Z","duration":1160,"status":"SKIPPED"},{"id":"EID6ee813c0-0175-1000-b85e-fca4bb9f92b3","testStepResults":{"TestStepResult":{"id":"EID6ee813c0-0175-1000-e3b1-cdd1c4ba1bfe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81531-0175-1000-68de-07b2e6abfe14","parent":{"ref":"EID6ee813c0-0175-1000-e3b1-cdd1c4ba1bfe"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:11:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee81531-0175-1000-083f-9e956d761506","parent":{"ref":"EID6ee813c0-0175-1000-e3b1-cdd1c4ba1bfe"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:11:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee81531-0175-1000-c1e1-8250cb9e2e48","parent":{"ref":"EID6ee813c0-0175-1000-e3b1-cdd1c4ba1bfe"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:11:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee81531-0175-1000-82ce-c2c932b09650","parent":{"ref":"EID6ee813c0-0175-1000-e3b1-cdd1c4ba1bfe"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:11:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc0b914c5-94e7-4698-9521-eeae67e28f94"},{"ref":"EID0561434b-9270-4fcb-9f79-00d8b9003765"},{"ref":"EID99c43d21-4d5d-4c01-bee0-baf00e96148a"}]},"parent":{"ref":"EID6ee813c0-0175-1000-b85e-fca4bb9f92b3"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:11:44Z","duration":136,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:11:44Z","duration":369,"status":"PASSED"},{"id":"EID6ee81531-0175-1000-5bd3-600f4e072cd5","testStepResults":{"TestStepResult":{"id":"EID6ee81531-0175-1000-789f-468316b74e64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81623-0175-1000-94c4-e4726f22662e","parent":{"ref":"EID6ee81531-0175-1000-789f-468316b74e64"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81623-0175-1000-16a8-95f0242fb932","parent":{"ref":"EID6ee81531-0175-1000-789f-468316b74e64"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81623-0175-1000-8076-a509f58c8437","parent":{"ref":"EID6ee81531-0175-1000-789f-468316b74e64"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81623-0175-1000-2c77-1f871e1fe832","parent":{"ref":"EID6ee81531-0175-1000-789f-468316b74e64"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81623-0175-1000-7916-18c4562eed08","parent":{"ref":"EID6ee81531-0175-1000-789f-468316b74e64"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81623-0175-1000-c105-657c94f928cd","parent":{"ref":"EID6ee81531-0175-1000-789f-468316b74e64"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDad7ca95e-efac-4ab3-8f48-ba7f6682d66a"},{"ref":"EID883f6748-5b89-4e48-87d2-467616e58b4f"},{"ref":"EIDe83fde30-9339-465d-8167-d7706a5b7e2e"}]},"parent":{"ref":"EID6ee81531-0175-1000-5bd3-600f4e072cd5"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:11:44Z","duration":69,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:11:44Z","duration":258,"status":"PASSED"},{"id":"EID6ee81633-0175-1000-c274-487c759de9f1","testStepResults":{"TestStepResult":{"id":"EID6ee81633-0175-1000-6e90-327e553c2cfb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81853-0175-1000-d19e-74d60083babd","parent":{"ref":"EID6ee81633-0175-1000-6e90-327e553c2cfb"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81853-0175-1000-f62c-e598e3a49a2c","parent":{"ref":"EID6ee81633-0175-1000-6e90-327e553c2cfb"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81853-0175-1000-bffa-c54df293193b","parent":{"ref":"EID6ee81633-0175-1000-6e90-327e553c2cfb"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81853-0175-1000-4ce4-097b7144226c","parent":{"ref":"EID6ee81633-0175-1000-6e90-327e553c2cfb"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81853-0175-1000-f898-548b821ff0f9","parent":{"ref":"EID6ee81633-0175-1000-6e90-327e553c2cfb"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee81853-0175-1000-8181-aadf2dd38bc1","parent":{"ref":"EID6ee81633-0175-1000-6e90-327e553c2cfb"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID39387f69-024f-41aa-8764-10c751aee3be"},{"ref":"EID9e12e342-9f20-435a-be9c-731c126081a8"},{"ref":"EID26f7cdc8-21c8-473b-8da3-b3eefc29ad8d"}]},"parent":{"ref":"EID6ee81633-0175-1000-c274-487c759de9f1"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:11:45Z","duration":407,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:11:45Z","duration":552,"status":"PASSED"},{"id":"EID6ee8185b-0175-1000-9983-2dfc23254f52","testStepResults":{"TestStepResult":{"id":"EID6ee8185b-0175-1000-1770-2244920249d7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8190c-0175-1000-76e2-109e0b6bcfab","parent":{"ref":"EID6ee8185b-0175-1000-1770-2244920249d7"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee8190c-0175-1000-9709-44e17cf38dde","parent":{"ref":"EID6ee8185b-0175-1000-1770-2244920249d7"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee8190c-0175-1000-63ad-0b1a72f407f9","parent":{"ref":"EID6ee8185b-0175-1000-1770-2244920249d7"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee8190c-0175-1000-1a15-30d649a1f0b3","parent":{"ref":"EID6ee8185b-0175-1000-1770-2244920249d7"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:11:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04606f7c-f721-4eeb-a07e-bf2d4b2326be"},{"ref":"EID56326532-31e6-4eb0-80d6-1661ab79d79a"},{"ref":"EIDd422e796-9fee-453b-9a38-d265c1076b64"}]},"parent":{"ref":"EID6ee8185b-0175-1000-9983-2dfc23254f52"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:11:45Z","duration":82,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:11:45Z","duration":177,"status":"PASSED"},{"id":"EID6ee8190d-0175-1000-e929-45175bfcb985","testStepResults":{"TestStepResult":[{"id":"EID6ee8190d-0175-1000-f2ed-28a330d11b3d","attachments":{"attachment":[{"ref":"EID5756f22c-be9b-4310-b351-bd8573cc0b7d"},{"ref":"EIDaf62cace-b7bf-41ed-8a2d-e904de8889dc"},{"ref":"EID5c35ffd9-4e40-478e-b086-c487285a5547"},{"ref":"EIDe16361db-1d57-48d4-8d8a-c75955a6fdcb"}]},"parent":{"ref":"EID6ee8190d-0175-1000-e929-45175bfcb985"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:11:45Z","duration":732,"status":"PASSED"},{"id":"EID6ee81c16-0175-1000-0c47-89cba534c9f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81d3a-0175-1000-592c-31dce4c71119","parent":{"ref":"EID6ee81c16-0175-1000-0c47-89cba534c9f3"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81d3b-0175-1000-1bc8-67d673254880","parent":{"ref":"EID6ee81c16-0175-1000-0c47-89cba534c9f3"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81d3b-0175-1000-5f3e-6b1dbb7d0179","parent":{"ref":"EID6ee81c16-0175-1000-0c47-89cba534c9f3"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81d3b-0175-1000-cce1-fa4c0be0038a","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6ee81c16-0175-1000-0c47-89cba534c9f3"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa405d80e-7f0e-49e8-864b-0cbdd65ebf9c"},{"ref":"EID707903e7-dba3-45b1-8eee-e0d448af9725"},{"ref":"EIDacf34ad6-0369-4fee-9d2c-2607b825b1b6"}]},"parent":{"ref":"EID6ee8190d-0175-1000-e929-45175bfcb985"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:11:46Z","duration":91,"status":"FAILED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:11:45Z","duration":1079,"status":"FAILED"},{"id":"EID6ee81d44-0175-1000-a3bb-4d3d7c91c249","testStepResults":{"TestStepResult":{"id":"EID6ee81d44-0175-1000-8350-af1045c37255","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81e28-0175-1000-f786-4bbef0465992","parent":{"ref":"EID6ee81d44-0175-1000-8350-af1045c37255"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81e28-0175-1000-767d-9e66dfecf70b","parent":{"ref":"EID6ee81d44-0175-1000-8350-af1045c37255"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81e28-0175-1000-0174-888c2e6f3923","parent":{"ref":"EID6ee81d44-0175-1000-8350-af1045c37255"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81e28-0175-1000-3cfa-47cbfcfebd04","parent":{"ref":"EID6ee81d44-0175-1000-8350-af1045c37255"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1282009-90b4-4a3e-92fd-fb13cfefe9d0"},{"ref":"EID9b4a0a45-44c8-42e6-908a-3e6f21174048"},{"ref":"EIDf660e2fb-2330-4362-b682-0849c10184e1"}]},"parent":{"ref":"EID6ee81d44-0175-1000-a3bb-4d3d7c91c249"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:11:47Z","duration":109,"status":"PASSED"}},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:11:47Z","duration":228,"status":"PASSED"},{"id":"EID6ee81e28-0175-1000-28ed-8ee4ddcb106d","testStepResults":{"TestStepResult":[{"id":"EID6ee81e28-0175-1000-fb3a-c7ff876eb748","parent":{"ref":"EID6ee81e28-0175-1000-28ed-8ee4ddcb106d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81e28-0175-1000-5de8-4994afda58af","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81eff-0175-1000-2f74-dc6545e88351","parent":{"ref":"EID6ee81e28-0175-1000-5de8-4994afda58af"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81eff-0175-1000-bd04-a8666960ff52","parent":{"ref":"EID6ee81e28-0175-1000-5de8-4994afda58af"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81eff-0175-1000-9c1b-478b9ea43414","parent":{"ref":"EID6ee81e28-0175-1000-5de8-4994afda58af"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81eff-0175-1000-5595-a8d6566dd295","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6ee81e28-0175-1000-5de8-4994afda58af"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1cb5bed5-882d-459b-97c1-ee54f481f47b"},{"ref":"EID137eac7b-b6bc-417a-9f79-93af103eeb07"},{"ref":"EID449f77a4-cec0-4e34-a0b5-1ae979a7a4fb"}]},"parent":{"ref":"EID6ee81e28-0175-1000-28ed-8ee4ddcb106d"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:11:47Z","duration":84,"status":"FAILED"}]},"parent":{"ref":"EID6ee7ed9c-0175-1000-bb6d-608c26048771"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:11:47Z","duration":216,"status":"FAILED"}]},"parent":{"ref":"EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:11:34Z","duration":12644,"status":"FAILED"},{"id":"EID6ee81f00-0175-1000-b9d2-6b0b86304942","testCaseResults":{"TestCaseResult":[{"id":"EID6ee81f00-0175-1000-3476-b609a859946c","testStepResults":{"TestStepResult":[{"id":"EID6ee81f01-0175-1000-0a34-2a95694d56ca","parent":{"ref":"EID6ee81f00-0175-1000-3476-b609a859946c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81f01-0175-1000-34c2-940296e9d7a5","parent":{"ref":"EID6ee81f00-0175-1000-3476-b609a859946c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":109,"status":"PASSED"},{"id":"EID6ee81f01-0175-1000-9b86-6c445e5e20a3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee81f9b-0175-1000-5631-4a0f41e20b4d","parent":{"ref":"EID6ee81f01-0175-1000-9b86-6c445e5e20a3"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81f9b-0175-1000-9be8-ca37e9d72ec7","parent":{"ref":"EID6ee81f01-0175-1000-9b86-6c445e5e20a3"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81f9b-0175-1000-8b45-c080f00f5851","parent":{"ref":"EID6ee81f01-0175-1000-9b86-6c445e5e20a3"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd358971a-97f3-4f1f-9cd7-b621ccc71f45"},{"ref":"EID589f3593-b777-413a-a415-56535b08f2b6"},{"ref":"EID9ad778d8-b62a-48da-b3fa-b57dde97bcaa"}]},"parent":{"ref":"EID6ee81f00-0175-1000-3476-b609a859946c"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:11:47Z","duration":59,"status":"PASSED"},{"id":"EID6ee81f9b-0175-1000-65b3-4963be451d82","attachments":{"attachment":{"ref":"EID193887c9-5259-4798-9cdb-98f5ed9cb814"}},"parent":{"ref":"EID6ee81f00-0175-1000-3476-b609a859946c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee81fa7-0175-1000-1ecb-05a3fa823567","parent":{"ref":"EID6ee81f00-0175-1000-3476-b609a859946c"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:11:47Z","duration":49,"status":"PASSED"}]},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:11:47Z","duration":217,"status":"PASSED"},{"id":"EID6ee81fe1-0175-1000-7009-29a63c312dec","testStepResults":{"TestStepResult":[{"id":"EID6ee81fe1-0175-1000-33ac-6dec3072d52e","parent":{"ref":"EID6ee81fe1-0175-1000-7009-29a63c312dec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:11:47Z","duration":67,"status":"PASSED"},{"id":"EID6ee81fe1-0175-1000-d340-2318f49fdab3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8203d-0175-1000-2b33-036de87bd294","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee81fe1-0175-1000-d340-2318f49fdab3"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:11:47Z","duration":53,"status":"FAILED"},{"id":"EID6ee82072-0175-1000-f9ed-a4a5fa5d751d","parent":{"ref":"EID6ee81fe1-0175-1000-d340-2318f49fdab3"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee82072-0175-1000-4f65-f89108a8bf77","parent":{"ref":"EID6ee81fe1-0175-1000-d340-2318f49fdab3"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee82072-0175-1000-da70-e7e08f090e4c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6ee81fe1-0175-1000-d340-2318f49fdab3"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"FAILED"},{"id":"EID6ee82072-0175-1000-50f3-1204b68c798e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6ee81fe1-0175-1000-d340-2318f49fdab3"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4884659e-4be9-41b8-bed2-d192e54290a0"},{"ref":"EIDaa4351dd-519e-43c0-9e04-e5a1e1249b2a"},{"ref":"EID1f8c8d91-4d34-47d5-ae09-76b1e6cf3043"}]},"parent":{"ref":"EID6ee81fe1-0175-1000-7009-29a63c312dec"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:11:47Z","duration":30,"status":"FAILED"}]},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:11:47Z","duration":146,"status":"FAILED"},{"id":"EID6ee82073-0175-1000-fae9-ee12610e30c4","testStepResults":{"TestStepResult":{"id":"EID6ee82073-0175-1000-84df-3bf3e56d698a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee820d5-0175-1000-27fa-ba8f93c22e2a","parent":{"ref":"EID6ee82073-0175-1000-84df-3bf3e56d698a"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee820d5-0175-1000-558e-be77c8d41078","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee82073-0175-1000-84df-3bf3e56d698a"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:11:47Z","duration":18,"status":"FAILED"},{"id":"EID6ee820e7-0175-1000-5eb1-5e54a2e2054e","parent":{"ref":"EID6ee82073-0175-1000-84df-3bf3e56d698a"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:11:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4e2f6a80-816c-4533-9f7e-f7b74c49205b"},{"ref":"EID323304e8-852f-443f-9f66-508bdd02e879"},{"ref":"EID94e2ae44-284d-4d29-ab03-4a32305ef58b"}]},"parent":{"ref":"EID6ee82073-0175-1000-fae9-ee12610e30c4"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:11:47Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:11:47Z","duration":116,"status":"FAILED"},{"id":"EID6ee820ef-0175-1000-bfb7-c54c1faa8768","testStepResults":{"TestStepResult":{"id":"EID6ee820ef-0175-1000-f8ce-a8ce9afa246b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82192-0175-1000-9dc9-2ec50de1d553","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee820ef-0175-1000-f8ce-a8ce9afa246b"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"FAILED"},{"id":"EID6ee82192-0175-1000-c986-91f459118bad","parent":{"ref":"EID6ee820ef-0175-1000-f8ce-a8ce9afa246b"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee82192-0175-1000-ce7a-d601aa7c3f39","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee820ef-0175-1000-f8ce-a8ce9afa246b"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:11:48Z","duration":10,"status":"FAILED"},{"id":"EID6ee8219c-0175-1000-f514-b197918613f2","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee820ef-0175-1000-f8ce-a8ce9afa246b"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDde71cd63-5e0f-4d8b-8c12-613b4dc69318"},{"ref":"EID336b7a2c-0015-4473-bdab-2c916bfc064f"},{"ref":"EID5160f212-13c4-4b86-99a7-4e8145906065"}]},"parent":{"ref":"EID6ee820ef-0175-1000-bfb7-c54c1faa8768"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:11:47Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:11:47Z","duration":173,"status":"FAILED"},{"id":"EID6ee8219d-0175-1000-3cdb-cc61c429f68a","testStepResults":{"TestStepResult":{"id":"EID6ee8219d-0175-1000-e850-5802489fddd4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee821f0-0175-1000-7c86-36358997c9c6","parent":{"ref":"EID6ee8219d-0175-1000-e850-5802489fddd4"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee821f0-0175-1000-c411-1bbc7b3e2ce7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee8219d-0175-1000-e850-5802489fddd4"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:11:48Z","duration":12,"status":"FAILED"},{"id":"EID6ee821fc-0175-1000-02e7-beb68265bb67","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6ee8219d-0175-1000-e850-5802489fddd4"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID77a3e298-1e1a-4199-93b4-3d83f80bebd7"},{"ref":"EID63d2243e-fa40-429e-8a5b-99a09de6c9e9"},{"ref":"EID69cdb2dd-9b02-4089-a51c-8e44dd60fb4f"}]},"parent":{"ref":"EID6ee8219d-0175-1000-3cdb-cc61c429f68a"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:11:48Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:11:48Z","duration":95,"status":"FAILED"},{"id":"EID6ee821fc-0175-1000-bbed-f0a8c360333e","testStepResults":{"TestStepResult":{"id":"EID6ee821fc-0175-1000-3208-d73984b5a2fe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82250-0175-1000-8dee-1c5d5f709134","parent":{"ref":"EID6ee821fc-0175-1000-3208-d73984b5a2fe"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee82250-0175-1000-092c-35a15fa03c9b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee821fc-0175-1000-3208-d73984b5a2fe"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:11:48Z","duration":10,"status":"FAILED"},{"id":"EID6ee8225a-0175-1000-2a64-9ba7c4628d68","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6ee821fc-0175-1000-3208-d73984b5a2fe"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdf0e033f-12bd-4c9b-a22d-562f347e80b5"},{"ref":"EID689b79af-c28a-4492-9935-7c430b6033ee"},{"ref":"EID8c919632-2d5d-4d2f-9f0e-28e3a1f7af1a"}]},"parent":{"ref":"EID6ee821fc-0175-1000-bbed-f0a8c360333e"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:11:48Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:11:48Z","duration":94,"status":"FAILED"},{"id":"EID6ee8225a-0175-1000-b743-4613bee14a71","testStepResults":{"TestStepResult":{"id":"EID6ee8225b-0175-1000-85a3-cd73a61c4909","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee822ce-0175-1000-c1cb-83f12df1acba","parent":{"ref":"EID6ee8225b-0175-1000-85a3-cd73a61c4909"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee822ce-0175-1000-19c0-76cf87997453","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee8225b-0175-1000-85a3-cd73a61c4909"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:11:48Z","duration":11,"status":"FAILED"},{"id":"EID6ee822d9-0175-1000-7373-ee0012d093d8","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6ee8225b-0175-1000-85a3-cd73a61c4909"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"FAILED"},{"id":"EID6ee822d9-0175-1000-e278-744b90e64758","parent":{"ref":"EID6ee8225b-0175-1000-85a3-cd73a61c4909"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee822d9-0175-1000-c029-09eb592b30bc","parent":{"ref":"EID6ee8225b-0175-1000-85a3-cd73a61c4909"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:11:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f31785d-8766-4ef1-b09b-da05cbf2df41"},{"ref":"EID2548147d-6b75-47dc-98a5-b5bb2fbb9c2c"},{"ref":"EID05498296-2d43-4493-bde7-bae1dee7ff8e"}]},"parent":{"ref":"EID6ee8225a-0175-1000-b743-4613bee14a71"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:11:48Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:11:48Z","duration":127,"status":"FAILED"},{"id":"EID6ee822d9-0175-1000-39c2-ac85c4cac303","testStepResults":{"TestStepResult":{"id":"EID6ee822d9-0175-1000-6319-2aec57a4878b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82842-0175-1000-65d3-180526fa7e59","parent":{"ref":"EID6ee822d9-0175-1000-6319-2aec57a4878b"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:11:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee82842-0175-1000-4629-efc820f5487e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee822d9-0175-1000-6319-2aec57a4878b"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:11:49Z","duration":12,"status":"FAILED"},{"id":"EID6ee8284e-0175-1000-6ab6-f244e61d8402","parent":{"ref":"EID6ee822d9-0175-1000-6319-2aec57a4878b"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:11:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57160d5f-ee10-4178-b198-94bffef30ae1"},{"ref":"EID0ed51c0a-4f65-4dae-aa90-3c76918abbe6"},{"ref":"EID3f1a35bf-0a32-4707-a306-20797faede53"}]},"parent":{"ref":"EID6ee822d9-0175-1000-39c2-ac85c4cac303"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:11:48Z","duration":1309,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:11:48Z","duration":1397,"status":"FAILED"},{"id":"EID6ee8284e-0175-1000-0c73-2bfafbb5d309","testStepResults":{"TestStepResult":{"id":"EID6ee8284e-0175-1000-a75a-6811df4b0408","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82969-0175-1000-21e2-b0339422c73f","parent":{"ref":"EID6ee8284e-0175-1000-a75a-6811df4b0408"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:11:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee82969-0175-1000-610a-57188ad6dddd","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee8284e-0175-1000-a75a-6811df4b0408"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:11:50Z","duration":11,"status":"FAILED"},{"id":"EID6ee82974-0175-1000-ec6f-a602b54ec974","parent":{"ref":"EID6ee8284e-0175-1000-a75a-6811df4b0408"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:11:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID28f7891e-f39c-476a-ac07-81ed763f0725"},{"ref":"EID4cd79013-2ff8-4d4c-a620-4bad7a8f0892"},{"ref":"EIDef59001a-46aa-4aae-ab1b-ccfed8d33bf1"}]},"parent":{"ref":"EID6ee8284e-0175-1000-0c73-2bfafbb5d309"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:11:49Z","duration":198,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:11:49Z","duration":294,"status":"FAILED"},{"id":"EID6ee82974-0175-1000-e699-f2ba90df46a2","testStepResults":{"TestStepResult":{"id":"EID6ee82974-0175-1000-8e7b-72cfe93a5c23","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82a4d-0175-1000-be7d-622467180fa6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee82974-0175-1000-8e7b-72cfe93a5c23"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:11:50Z","duration":11,"status":"FAILED"},{"id":"EID6ee82a58-0175-1000-3169-560f6374f412","parent":{"ref":"EID6ee82974-0175-1000-8e7b-72cfe93a5c23"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:11:50Z","duration":0,"status":"PASSED"},{"id":"EID6ee82a58-0175-1000-0ea7-ab9bb525512c","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee82974-0175-1000-8e7b-72cfe93a5c23"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:11:50Z","duration":0,"status":"FAILED"},{"id":"EID6ee82a58-0175-1000-9a55-36b08e78aab3","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6ee82974-0175-1000-8e7b-72cfe93a5c23"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:11:50Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDabd66b2b-80bd-4a00-84a7-914887ba0d58"},{"ref":"EID0ebb2204-2071-46f7-a5ff-322e609eada2"},{"ref":"EIDde387730-7c06-46ca-adb0-107e873134fa"}]},"parent":{"ref":"EID6ee82974-0175-1000-e699-f2ba90df46a2"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:11:50Z","duration":128,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:11:50Z","duration":228,"status":"FAILED"},{"id":"EID6ee82a58-0175-1000-5b0b-811c19af7d70","testStepResults":{"TestStepResult":{"id":"EID6ee82a81-0175-1000-1c65-53dc9b2432cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee82f95-0175-1000-ed83-c223d4771fec","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee82a81-0175-1000-1c65-53dc9b2432cd"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:11:51Z","duration":40,"status":"FAILED"},{"id":"EID6ee82fbe-0175-1000-0bb9-ccde91ccf35b","parent":{"ref":"EID6ee82a81-0175-1000-1c65-53dc9b2432cd"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee82fbe-0175-1000-e0e1-c6cae14eccd7","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee82a81-0175-1000-1c65-53dc9b2432cd"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"FAILED"},{"id":"EID6ee82fbe-0175-1000-0cb8-345fc79d6cb4","parent":{"ref":"EID6ee82a81-0175-1000-1c65-53dc9b2432cd"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1d35df50-fe19-4aae-b0e0-39abd602b6f0"},{"ref":"EID8948c938-a02f-4b8a-af55-4e49c3d09eb2"},{"ref":"EID0c6db644-3a0d-43c4-88db-5aea076e205b"}]},"parent":{"ref":"EID6ee82a58-0175-1000-5b0b-811c19af7d70"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:11:50Z","duration":1197,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:11:50Z","duration":1382,"status":"FAILED"},{"id":"EID6ee82fbe-0175-1000-5e2c-c817094604ee","testStepResults":{"TestStepResult":[{"id":"EID6ee82fbf-0175-1000-dca0-a2d6cf924beb","parent":{"ref":"EID6ee82fbe-0175-1000-5e2c-c817094604ee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:11:51Z","duration":0,"status":"PASSED"},{"id":"EID6ee82fc0-0175-1000-2ffe-f98e32b81175","parent":{"ref":"EID6ee82fbe-0175-1000-5e2c-c817094604ee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:11:51Z","duration":137,"status":"PASSED"},{"id":"EID6ee82fca-0175-1000-0d3c-fc3f36aad078","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee830f7-0175-1000-49a2-280ce29e1c80","parent":{"ref":"EID6ee82fca-0175-1000-0d3c-fc3f36aad078"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee830f7-0175-1000-2d52-5d09ad076817","parent":{"ref":"EID6ee82fca-0175-1000-0d3c-fc3f36aad078"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee830f7-0175-1000-3756-f1d711b4096e","parent":{"ref":"EID6ee82fca-0175-1000-0d3c-fc3f36aad078"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee830f7-0175-1000-b587-e254e3fba4f0","parent":{"ref":"EID6ee82fca-0175-1000-0d3c-fc3f36aad078"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfd481178-b637-469b-89ec-0c3fafb1a725"},{"ref":"EID5a65b983-3eb3-46e2-8a74-406e19c7f863"},{"ref":"EID6501b552-1082-4981-b216-13788dd3110f"}]},"parent":{"ref":"EID6ee82fbe-0175-1000-5e2c-c817094604ee"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:11:51Z","duration":63,"status":"PASSED"},{"id":"EID6ee830f7-0175-1000-f04e-ebef92f3d1b6","attachments":{"attachment":{"ref":"EIDbc1c1536-e1e5-456b-8b76-058fe5d9169c"}},"parent":{"ref":"EID6ee82fbe-0175-1000-5e2c-c817094604ee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:11:52Z","duration":3,"status":"PASSED"},{"id":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8317a-0175-1000-1293-48abb6e369e5","parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee8317a-0175-1000-54be-e22f58f9a995","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:11:52Z","duration":11,"status":"FAILED"},{"id":"EID6ee83185-0175-1000-e296-d382446d72e7","parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83185-0175-1000-0e4c-71a539c27288","parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83185-0175-1000-44cb-56257cbd3b84","parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83185-0175-1000-a702-1e9080ba0706","parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83185-0175-1000-6c7f-bad4a01ad62d","parent":{"ref":"EID6ee8310e-0175-1000-fcf5-415c01c6f1f7"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDffe6bc5b-f108-4671-969c-cbfcae5d4077"},{"ref":"EID9f9ce48d-0836-4f72-babd-c6b63e85a216"},{"ref":"EID51ae9de7-a71c-430f-9e6c-6ed91979e414"}]},"parent":{"ref":"EID6ee82fbe-0175-1000-5e2c-c817094604ee"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:11:52Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:11:51Z","duration":455,"status":"FAILED"},{"id":"EID6ee83185-0175-1000-1e33-f632a781ca28","testStepResults":{"TestStepResult":[{"id":"EID6ee83185-0175-1000-d9cd-7ff1464c46f9","parent":{"ref":"EID6ee83185-0175-1000-1e33-f632a781ca28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83185-0175-1000-c98e-13f0e1ebcf86","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee8326c-0175-1000-fdb1-50d111cd0de9","parent":{"ref":"EID6ee83185-0175-1000-c98e-13f0e1ebcf86"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee8326c-0175-1000-f8a3-984674a9391e","parent":{"ref":"EID6ee83185-0175-1000-c98e-13f0e1ebcf86"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee8326c-0175-1000-10d3-d7d1927d9173","parent":{"ref":"EID6ee83185-0175-1000-c98e-13f0e1ebcf86"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee8326c-0175-1000-bd01-9afa4ae60f79","parent":{"ref":"EID6ee83185-0175-1000-c98e-13f0e1ebcf86"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDde908f7d-a610-4c84-8a53-68dcfbc750f7"},{"ref":"EIDecbb9bad-3e2d-4e67-a959-81dfb329d6e1"},{"ref":"EID216e2a26-d5aa-4592-993a-5df60dfcad5a"}]},"parent":{"ref":"EID6ee83185-0175-1000-1e33-f632a781ca28"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:11:52Z","duration":142,"status":"PASSED"},{"id":"EID6ee8326c-0175-1000-4445-1db116802d3e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee8327f-0175-1000-969d-74a5516b6d4a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee833c8-0175-1000-c39b-fefd7832970a","parent":{"ref":"EID6ee8327f-0175-1000-969d-74a5516b6d4a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee833c8-0175-1000-c9fa-f2de50b95244","parent":{"ref":"EID6ee8327f-0175-1000-969d-74a5516b6d4a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee833c8-0175-1000-2798-ce034553e736","parent":{"ref":"EID6ee8327f-0175-1000-969d-74a5516b6d4a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe819cfa8-756a-43c5-8b3b-928bff1d2347"},{"ref":"EIDe22297ac-134d-44c5-aac1-532795ff3246"},{"ref":"EIDdfcde798-83ff-417f-beac-d7facbf14897"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:11:52Z","duration":156,"status":"PASSED"},{"id":"EID6ee833ca-0175-1000-c118-910f683f8f7e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee83494-0175-1000-ff15-1ae2e7cc6dd4","parent":{"ref":"EID6ee833ca-0175-1000-c118-910f683f8f7e"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83494-0175-1000-8343-db3bcf2d9342","parent":{"ref":"EID6ee833ca-0175-1000-c118-910f683f8f7e"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee83494-0175-1000-e5fa-327a50b6cde6","parent":{"ref":"EID6ee833ca-0175-1000-c118-910f683f8f7e"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:11:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9db833a8-b2b5-4cfc-bec9-ae6e46bb2502"},{"ref":"EID6fbfa889-175e-49ef-89fc-8d3a7baa49db"},{"ref":"EID560972cd-58ef-4558-942c-402dfd2e5d6d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:11:52Z","duration":148,"status":"PASSED"},{"id":"EID6ee83496-0175-1000-249f-ebe647001fcf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee834ee-0175-1000-d2f2-9c089a0c6953","parent":{"ref":"EID6ee83496-0175-1000-249f-ebe647001fcf"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee834ee-0175-1000-03ad-7d49349a7f31","parent":{"ref":"EID6ee83496-0175-1000-249f-ebe647001fcf"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee834ee-0175-1000-ccf3-1bce280abad4","parent":{"ref":"EID6ee83496-0175-1000-249f-ebe647001fcf"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6ce432ce-da2d-4976-b73a-f93143a72459"},{"ref":"EIDac19955b-aa58-4de3-9270-ce2297af1741"},{"ref":"EIDf3484fe6-7e55-4963-ab0b-f641ca0eef43"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:11:52Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6ee83185-0175-1000-1e33-f632a781ca28"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:11:52Z","duration":643,"status":"PASSED"},{"id":"EID6ee834f0-0175-1000-0842-8c929d07f810","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee83561-0175-1000-f4be-0a1c3711e929","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee834f0-0175-1000-0842-8c929d07f810"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:11:53Z","duration":11,"status":"FAILED"},{"id":"EID6ee8356c-0175-1000-8871-bb0a9e376deb","parent":{"ref":"EID6ee834f0-0175-1000-0842-8c929d07f810"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee8356c-0175-1000-4620-d985ef891c91","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee834f0-0175-1000-0842-8c929d07f810"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"FAILED"},{"id":"EID6ee8356c-0175-1000-b3d5-edc1e6b1608a","parent":{"ref":"EID6ee834f0-0175-1000-0842-8c929d07f810"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3d859bc8-f039-4c33-a2b4-2d09e1e88d50"},{"ref":"EID3194e79d-0547-4467-8bd1-b6e60a7eca10"},{"ref":"EID29547c9a-4929-42c7-a54b-2e3fd455d62b"}]},"parent":{"ref":"EID6ee83185-0175-1000-1e33-f632a781ca28"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:11:53Z","duration":28,"status":"FAILED"}]},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:11:52Z","duration":999,"status":"FAILED"},{"id":"EID6ee8356d-0175-1000-ef2a-9c3a4e8481d3","testStepResults":{"TestStepResult":{"id":"EID6ee8356d-0175-1000-fb35-4cb618595d09","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee835df-0175-1000-c1d5-12b268f97e0f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6ee8356d-0175-1000-fb35-4cb618595d09"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:11:53Z","duration":11,"status":"FAILED"},{"id":"EID6ee835ea-0175-1000-3c14-06efd7e2a57e","parent":{"ref":"EID6ee8356d-0175-1000-fb35-4cb618595d09"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"},{"id":"EID6ee835ea-0175-1000-f509-7b293c78a12f","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee8356d-0175-1000-fb35-4cb618595d09"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"FAILED"},{"id":"EID6ee835ea-0175-1000-1e92-6c411968daa5","parent":{"ref":"EID6ee8356d-0175-1000-fb35-4cb618595d09"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf58f61d2-4a5c-4039-9aed-d9574844fb95"},{"ref":"EID9267749e-f2ea-49fc-a61e-981e93d08a3b"},{"ref":"EID734e0360-2450-4d46-abd1-19b99691ab42"}]},"parent":{"ref":"EID6ee8356d-0175-1000-ef2a-9c3a4e8481d3"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:11:53Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6ee81f00-0175-1000-b9d2-6b0b86304942"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:11:53Z","duration":125,"status":"FAILED"}]},"parent":{"ref":"EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:11:47Z","duration":5866,"status":"FAILED"},{"id":"EID6ee835ea-0175-1000-853a-246efdeba227","testCaseResults":{"TestCaseResult":[{"id":"EID6ee835eb-0175-1000-d3a6-6e2e41b71bbf","testStepResults":{"TestStepResult":{"id":"EID6ee835eb-0175-1000-6481-d9facc805b7d","parent":{"ref":"EID6ee835eb-0175-1000-d3a6-6e2e41b71bbf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee835eb-0175-1000-a3b7-bc283806c0b6","testStepResults":{"TestStepResult":{"id":"EID6ee835eb-0175-1000-3545-7d4589a88c0c","parent":{"ref":"EID6ee835eb-0175-1000-a3b7-bc283806c0b6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee835eb-0175-1000-5a64-ef0014ed1284","testStepResults":{"TestStepResult":{"id":"EID6ee835eb-0175-1000-0d45-6056574e6004","parent":{"ref":"EID6ee835eb-0175-1000-5a64-ef0014ed1284"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee835ec-0175-1000-fdab-779924c1a5d6","testStepResults":{"TestStepResult":{"id":"EID6ee835ec-0175-1000-37d1-3597e0da0634","parent":{"ref":"EID6ee835ec-0175-1000-fdab-779924c1a5d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee835ec-0175-1000-7c13-44dddc3d3bec","testStepResults":{"TestStepResult":{"id":"EID6ee835ec-0175-1000-25aa-a8f28aa4d58b","parent":{"ref":"EID6ee835ec-0175-1000-7c13-44dddc3d3bec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee835ec-0175-1000-621a-54f5afab4dc2","testStepResults":{"TestStepResult":{"id":"EID6ee835ec-0175-1000-0d4f-f619223ac6db","parent":{"ref":"EID6ee835ec-0175-1000-621a-54f5afab4dc2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"},{"id":"EID6ee835ec-0175-1000-f22b-a5b66606a574","testStepResults":{"TestStepResult":{"id":"EID6ee835ec-0175-1000-2029-101ee89346e0","parent":{"ref":"EID6ee835ec-0175-1000-f22b-a5b66606a574"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2124,"status":"SKIPPED"}},"parent":{"ref":"EID6ee835ea-0175-1000-853a-246efdeba227"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:11:53Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:11:53Z","duration":2,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EIDe5c9c901-4457-472e-9537-b63233499839","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDe5c9c901-4457-472e-9537-b63233499839"}},{"type":"ServiceEndpoint","id":"EID57160d5f-ee10-4178-b198-94bffef30ae1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID1d35df50-fe19-4aae-b0e0-39abd602b6f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID5c35ffd9-4e40-478e-b086-c487285a5547","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID5c35ffd9-4e40-478e-b086-c487285a5547"}},{"type":"ServiceResponse","id":"EID9e12e342-9f20-435a-be9c-731c126081a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9e12e342-9f20-435a-be9c-731c126081a8"}},{"type":"ServiceEndpoint","id":"EIDfd481178-b637-469b-89ec-0c3fafb1a725","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID74f8f909-a808-4f56-bb5a-166b92fce49d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDccc69550-a216-4f67-a36f-2c656685538e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6fbfa889-175e-49ef-89fc-8d3a7baa49db","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID6fbfa889-175e-49ef-89fc-8d3a7baa49db"}},{"type":"GetParameter","id":"EIDefb58cd2-c783-416d-8ea7-d88e23fd5962","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID04606f7c-f721-4eeb-a07e-bf2d4b2326be","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd5b10b6f-7cc1-4813-ab1b-69720bcbf513","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDd5b10b6f-7cc1-4813-ab1b-69720bcbf513"}},{"type":"GetParameter","id":"EID26f7cdc8-21c8-473b-8da3-b3eefc29ad8d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8948c938-a02f-4b8a-af55-4e49c3d09eb2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID8948c938-a02f-4b8a-af55-4e49c3d09eb2"}},{"type":"ServiceResponse","id":"EID5ebcc032-498a-49db-bdc6-8465b84dc9f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID5ebcc032-498a-49db-bdc6-8465b84dc9f8"}},{"type":"ServiceResponse","id":"EID4ab0ccb7-3490-4b62-be6b-6c127caf4da1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID4ab0ccb7-3490-4b62-be6b-6c127caf4da1"}},{"type":"Error","id":"EID47668d9c-d836-4eee-8657-64f18d30ad8d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID47668d9c-d836-4eee-8657-64f18d30ad8d"}},{"type":"ServiceEndpoint","id":"EID4e2f6a80-816c-4533-9f7e-f7b74c49205b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID99c43d21-4d5d-4c01-bee0-baf00e96148a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3f1a35bf-0a32-4707-a306-20797faede53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDbee1d4fe-7e63-49d7-b46b-9671ebb7b88d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe75f2867-28a6-4a4f-bfa4-afd5ae372004","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDe75f2867-28a6-4a4f-bfa4-afd5ae372004"}},{"type":"GetParameter","id":"EIDf7c50255-830f-42b2-a964-540a29e8fef9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID005c78b3-e79b-4456-a956-d62761d1f198","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID005c78b3-e79b-4456-a956-d62761d1f198"}},{"type":"ServiceEndpoint","id":"EIDde908f7d-a610-4c84-8a53-68dcfbc750f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDe819cfa8-756a-43c5-8b3b-928bff1d2347","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDacf34ad6-0369-4fee-9d2c-2607b825b1b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDad7ca95e-efac-4ab3-8f48-ba7f6682d66a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDe16361db-1d57-48d4-8d8a-c75955a6fdcb","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDe16361db-1d57-48d4-8d8a-c75955a6fdcb"}},{"type":"GetParameter","id":"EID0c6db644-3a0d-43c4-88db-5aea076e205b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID909578dd-8b27-44f5-a719-aa22932c1a68","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID909578dd-8b27-44f5-a719-aa22932c1a68"}},{"type":"GetParameter","id":"EID5160f212-13c4-4b86-99a7-4e8145906065","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID3d859bc8-f039-4c33-a2b4-2d09e1e88d50","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDbdce837e-3d55-427b-9a5c-6b733c44bc16","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID238ae821-8b5c-4a32-9098-d97073b4b236","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID238ae821-8b5c-4a32-9098-d97073b4b236"}},{"type":"ServiceResponse","id":"EID0ed51c0a-4f65-4dae-aa90-3c76918abbe6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID0ed51c0a-4f65-4dae-aa90-3c76918abbe6"}},{"type":"GetParameter","id":"EID280b1afc-0d01-4aef-b680-6290f17f7d25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID10c8dc48-8b2d-4f58-8e1a-9e08d8567ac8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID10c8dc48-8b2d-4f58-8e1a-9e08d8567ac8"}},{"type":"GetParameter","id":"EIDdfcde798-83ff-417f-beac-d7facbf14897","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Error","id":"EIDa4ade98f-ddb8-4dfa-9a38-1393272f3365","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDa4ade98f-ddb8-4dfa-9a38-1393272f3365"}},{"type":"ServiceResponse","id":"EID9f9ce48d-0836-4f72-babd-c6b63e85a216","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9f9ce48d-0836-4f72-babd-c6b63e85a216"}},{"type":"ServiceResponse","id":"EID8c7dacf1-d20e-402e-a9c5-0a1d3b9361b9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID8c7dacf1-d20e-402e-a9c5-0a1d3b9361b9"}},{"type":"ServiceResponse","id":"EID63d2243e-fa40-429e-8a5b-99a09de6c9e9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID63d2243e-fa40-429e-8a5b-99a09de6c9e9"}},{"type":"ServiceEndpoint","id":"EIDffe6bc5b-f108-4671-969c-cbfcae5d4077","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID29547c9a-4929-42c7-a54b-2e3fd455d62b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID5f196d18-c2f5-4f72-8a9e-3a90417beb49","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID5f196d18-c2f5-4f72-8a9e-3a90417beb49"}},{"type":"ServiceEndpoint","id":"EID77a3e298-1e1a-4199-93b4-3d83f80bebd7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID69cdb2dd-9b02-4089-a51c-8e44dd60fb4f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID5a65b983-3eb3-46e2-8a74-406e19c7f863","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID5a65b983-3eb3-46e2-8a74-406e19c7f863"}},{"type":"Error","id":"EID656a19e6-0c6c-4f2d-ae63-af3108a03e67","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID656a19e6-0c6c-4f2d-ae63-af3108a03e67"}},{"type":"ServiceEndpoint","id":"EID9db833a8-b2b5-4cfc-bec9-ae6e46bb2502","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID4cd79013-2ff8-4d4c-a620-4bad7a8f0892","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID4cd79013-2ff8-4d4c-a620-4bad7a8f0892"}},{"type":"ServiceResponse","id":"EIDf30cbe72-1767-42e3-a3d2-e8d679f8275e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDf30cbe72-1767-42e3-a3d2-e8d679f8275e"}},{"type":"Message","id":"EID5a325bb3-7777-46bf-b68e-f9ab2ca0706e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID5a325bb3-7777-46bf-b68e-f9ab2ca0706e"}},{"type":"Error","id":"EIDf99163cc-65f9-4a8c-bdd5-28d6e4bc03b5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDf99163cc-65f9-4a8c-bdd5-28d6e4bc03b5"}},{"type":"ServiceEndpoint","id":"EID3488b72d-1c3d-46e4-9343-9d91b13f0889","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID2a893002-8762-4596-9017-39af2f25261d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID2a893002-8762-4596-9017-39af2f25261d"}},{"type":"ServiceResponse","id":"EID0ebb2204-2071-46f7-a5ff-322e609eada2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID0ebb2204-2071-46f7-a5ff-322e609eada2"}},{"type":"ServiceResponse","id":"EID618118df-5a84-4293-881e-9238a2fd38c9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID618118df-5a84-4293-881e-9238a2fd38c9"}},{"type":"GetParameter","id":"EIDef59001a-46aa-4aae-ab1b-ccfed8d33bf1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID734e0360-2450-4d46-abd1-19b99691ab42","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDbc1c1536-e1e5-456b-8b76-058fe5d9169c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDbc1c1536-e1e5-456b-8b76-058fe5d9169c"}},{"type":"ServiceEndpoint","id":"EIDf58f61d2-4a5c-4039-9aed-d9574844fb95","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6501b552-1082-4981-b216-13788dd3110f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID05e342ed-f457-45cc-94f5-82e6c1b985f1","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID05e342ed-f457-45cc-94f5-82e6c1b985f1"}},{"type":"ServiceResponse","id":"EID883f6748-5b89-4e48-87d2-467616e58b4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID883f6748-5b89-4e48-87d2-467616e58b4f"}},{"type":"ServiceResponse","id":"EID56326532-31e6-4eb0-80d6-1661ab79d79a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID56326532-31e6-4eb0-80d6-1661ab79d79a"}},{"type":"GetParameter","id":"EIDed135caf-8fb3-409e-8017-d7062009ce15","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2441ac55-b96b-4349-b155-8a7002323c7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID840c0ff6-01da-4a27-9c7b-4ad1c42374cf","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID840c0ff6-01da-4a27-9c7b-4ad1c42374cf"}},{"type":"ServiceResponse","id":"EIDd377bb7d-a9ef-4e18-a04a-c51901d7077a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDd377bb7d-a9ef-4e18-a04a-c51901d7077a"}},{"type":"GetParameter","id":"EIDde387730-7c06-46ca-adb0-107e873134fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID3bb3b979-703f-4352-a482-f2264014dbc5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa405d80e-7f0e-49e8-864b-0cbdd65ebf9c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1cb020e6-4261-4aa0-91b8-c98fd5ee513b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0d82b0b2-b9e6-47a4-8af4-68dd765c9163","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID0d82b0b2-b9e6-47a4-8af4-68dd765c9163"}},{"type":"ServiceEndpoint","id":"EID28f7891e-f39c-476a-ac07-81ed763f0725","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID7e11f05f-92ef-4a57-b523-26a644bfd4a0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID94e2ae44-284d-4d29-ab03-4a32305ef58b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID2e03ef2a-fa37-40e7-ad07-941d2245ba6c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID2e03ef2a-fa37-40e7-ad07-941d2245ba6c"}},{"type":"ServiceResponse","id":"EID8bdb87bd-7ee8-431b-9f4d-9d868a590ed1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID8bdb87bd-7ee8-431b-9f4d-9d868a590ed1"}},{"type":"ServiceEndpoint","id":"EIDa4f730b4-1f81-49b9-bf99-f9c209eb902c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6ce432ce-da2d-4976-b73a-f93143a72459","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EIDc9b5b10f-7193-49b9-84cf-83ab7421dba1","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDc9b5b10f-7193-49b9-84cf-83ab7421dba1"}},{"type":"ServiceResponse","id":"EID9b4a0a45-44c8-42e6-908a-3e6f21174048","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9b4a0a45-44c8-42e6-908a-3e6f21174048"}},{"type":"ServiceEndpoint","id":"EID9f31785d-8766-4ef1-b09b-da05cbf2df41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID137eac7b-b6bc-417a-9f79-93af103eeb07","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID137eac7b-b6bc-417a-9f79-93af103eeb07"}},{"type":"ServiceEndpoint","id":"EIDabd66b2b-80bd-4a00-84a7-914887ba0d58","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDaf62cace-b7bf-41ed-8a2d-e904de8889dc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDaf62cace-b7bf-41ed-8a2d-e904de8889dc"}},{"type":"ServiceEndpoint","id":"EID1cb5bed5-882d-459b-97c1-ee54f481f47b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID52b2c733-683a-4816-8c4e-14b38e11cd5c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDeac8a133-b5e2-4030-aa50-47539f30d44a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID05498296-2d43-4493-bde7-bae1dee7ff8e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf578ff27-bec3-4f1b-beeb-075fe9e897b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd358971a-97f3-4f1f-9cd7-b621ccc71f45","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID707903e7-dba3-45b1-8eee-e0d448af9725","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID707903e7-dba3-45b1-8eee-e0d448af9725"}},{"type":"GetParameter","id":"EID449f77a4-cec0-4e34-a0b5-1ae979a7a4fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe83fde30-9339-465d-8167-d7706a5b7e2e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID193887c9-5259-4798-9cdb-98f5ed9cb814","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID193887c9-5259-4798-9cdb-98f5ed9cb814"}},{"type":"ServiceResponse","id":"EID9267749e-f2ea-49fc-a61e-981e93d08a3b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9267749e-f2ea-49fc-a61e-981e93d08a3b"}},{"type":"ServiceResponse","id":"EID689b79af-c28a-4492-9935-7c430b6033ee","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID689b79af-c28a-4492-9935-7c430b6033ee"}},{"type":"GetParameter","id":"EID216e2a26-d5aa-4592-993a-5df60dfcad5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID78c3e375-e538-4e24-8d71-2fcd7928da5d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID78c3e375-e538-4e24-8d71-2fcd7928da5d"}},{"type":"GetParameter","id":"EIDabe70895-6cb5-42fc-8e5e-445ded0d7e2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EID9368503a-50c8-4b4e-8256-e631db89ee21","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9368503a-50c8-4b4e-8256-e631db89ee21"}},{"type":"Error","id":"EID22e6975d-bc48-4e18-aa5c-0d3efbb71355","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID22e6975d-bc48-4e18-aa5c-0d3efbb71355"}},{"type":"GetParameter","id":"EIDd422e796-9fee-453b-9a38-d265c1076b64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa1282009-90b4-4a3e-92fd-fb13cfefe9d0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf3484fe6-7e55-4963-ab0b-f641ca0eef43","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID2548147d-6b75-47dc-98a5-b5bb2fbb9c2c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID2548147d-6b75-47dc-98a5-b5bb2fbb9c2c"}},{"type":"ServiceEndpoint","id":"EIDde71cd63-5e0f-4d8b-8c12-613b4dc69318","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDecbb9bad-3e2d-4e67-a959-81dfb329d6e1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDecbb9bad-3e2d-4e67-a959-81dfb329d6e1"}},{"type":"Message","id":"EIDed972fd2-09d3-4b9c-ac02-4753b81ed2d8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDed972fd2-09d3-4b9c-ac02-4753b81ed2d8"}},{"type":"ServiceEndpoint","id":"EID4884659e-4be9-41b8-bed2-d192e54290a0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID484ff1cb-f0b5-4c86-8643-a8dac243d6d3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID484ff1cb-f0b5-4c86-8643-a8dac243d6d3"}},{"type":"ServiceEndpoint","id":"EID39387f69-024f-41aa-8764-10c751aee3be","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa34b4633-1000-4f61-b262-655f40b945e2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDa34b4633-1000-4f61-b262-655f40b945e2"}},{"type":"ServiceResponse","id":"EIDca4770f9-aeca-465e-aa04-edb30636a802","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDca4770f9-aeca-465e-aa04-edb30636a802"}},{"type":"ServiceResponse","id":"EID4d969194-8d3f-4a5a-b3b7-cdfc511a3bc8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID4d969194-8d3f-4a5a-b3b7-cdfc511a3bc8"}},{"type":"GetParameter","id":"EID51ae9de7-a71c-430f-9e6c-6ed91979e414","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID323304e8-852f-443f-9f66-508bdd02e879","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID323304e8-852f-443f-9f66-508bdd02e879"}},{"type":"Error","id":"EID26c1c293-f61b-4792-8962-c06efa20a0bf","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID26c1c293-f61b-4792-8962-c06efa20a0bf"}},{"type":"Message","id":"EID72c82408-ff73-4249-b07d-379242d9b889","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID72c82408-ff73-4249-b07d-379242d9b889"}},{"type":"ServiceEndpoint","id":"EIDac1e5b88-72a6-484a-a67f-8ffe90193dc0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID80c5c137-f6b8-47ae-bbe1-f492ba9a5b7e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID80c5c137-f6b8-47ae-bbe1-f492ba9a5b7e"}},{"type":"Message","id":"EIDb19642ec-3a71-4b8c-9a7f-111c113a1730","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDb19642ec-3a71-4b8c-9a7f-111c113a1730"}},{"type":"GetParameter","id":"EID66be98f2-69d2-4fd3-90d7-6586e6fad1de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDd6796bb0-47b6-40b2-a038-5100fbd83113","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDd6796bb0-47b6-40b2-a038-5100fbd83113"}},{"type":"GetParameter","id":"EIDf660e2fb-2330-4362-b682-0849c10184e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDaa6053c5-63e9-4745-92a8-0391a5fde546","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDaa6053c5-63e9-4745-92a8-0391a5fde546"}},{"type":"Error","id":"EID42ffeeb1-1cd5-4af8-b1f6-12495e9187ec","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID42ffeeb1-1cd5-4af8-b1f6-12495e9187ec"}},{"type":"GetParameter","id":"EID601d8a9f-ae70-43b5-93a8-f840d3b9d34f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe8ed7353-9339-46a0-ad45-f884aaf3b482","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDe8ed7353-9339-46a0-ad45-f884aaf3b482"}},{"type":"Message","id":"EID2cef7069-9734-49fe-a4b7-9774f57570ec","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID2cef7069-9734-49fe-a4b7-9774f57570ec"}},{"type":"GetParameter","id":"EID9ad778d8-b62a-48da-b3fa-b57dde97bcaa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID560972cd-58ef-4558-942c-402dfd2e5d6d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID336b7a2c-0015-4473-bdab-2c916bfc064f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID336b7a2c-0015-4473-bdab-2c916bfc064f"}},{"type":"GetParameter","id":"EID1ec8b84d-01ff-4443-912d-d8a02e19b517","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDdb552c27-9650-458a-970e-08f3d3e56412","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDdb552c27-9650-458a-970e-08f3d3e56412"}},{"type":"ServiceResponse","id":"EIDe22297ac-134d-44c5-aac1-532795ff3246","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDe22297ac-134d-44c5-aac1-532795ff3246"}},{"type":"ServiceEndpoint","id":"EID45e6c0f0-0c3f-491b-a7fe-6735d09b2022","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID9f119e6d-b990-45df-a6e5-c96a57e2e839","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9f119e6d-b990-45df-a6e5-c96a57e2e839"}},{"type":"ServiceResponse","id":"EIDaa4351dd-519e-43c0-9e04-e5a1e1249b2a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDaa4351dd-519e-43c0-9e04-e5a1e1249b2a"}},{"type":"Error","id":"EIDf178e6ff-0b22-4bf1-9374-bc911402a017","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDf178e6ff-0b22-4bf1-9374-bc911402a017"}},{"type":"Error","id":"EIDb550be5d-a933-451e-859b-bbb29ce5683e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDb550be5d-a933-451e-859b-bbb29ce5683e"}},{"type":"ServiceEndpoint","id":"EID342d8fb2-134f-40c5-9c77-0eb8f1ef2581","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6f001ac4-fbd0-40dc-8011-20b239edd663","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID6f001ac4-fbd0-40dc-8011-20b239edd663"}},{"type":"Message","id":"EID5756f22c-be9b-4310-b351-bd8573cc0b7d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID5756f22c-be9b-4310-b351-bd8573cc0b7d"}},{"type":"ServiceEndpoint","id":"EIDe01234c9-ebe3-42b4-8047-437614012321","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDdf0e033f-12bd-4c9b-a22d-562f347e80b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID8c919632-2d5d-4d2f-9f0e-28e3a1f7af1a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID1f8c8d91-4d34-47d5-ae09-76b1e6cf3043","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID3194e79d-0547-4467-8bd1-b6e60a7eca10","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID3194e79d-0547-4467-8bd1-b6e60a7eca10"}},{"type":"ServiceEndpoint","id":"EID41b57361-d449-4efd-9f70-c1e4ed37ab2e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID589f3593-b777-413a-a415-56535b08f2b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID589f3593-b777-413a-a415-56535b08f2b6"}},{"type":"ServiceResponse","id":"EIDac19955b-aa58-4de3-9270-ce2297af1741","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EIDac19955b-aa58-4de3-9270-ce2297af1741"}},{"type":"ServiceResponse","id":"EID0561434b-9270-4fcb-9f79-00d8b9003765","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID0561434b-9270-4fcb-9f79-00d8b9003765"}},{"type":"ServiceEndpoint","id":"EIDc0b914c5-94e7-4698-9521-eeae67e28f94","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID9409c737-55fb-41d6-a2c1-c71f5c66c73f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID9409c737-55fb-41d6-a2c1-c71f5c66c73f"}},{"type":"Message","id":"EID7f845e01-5d4c-494b-8438-e3a6583e1333","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID7f845e01-5d4c-494b-8438-e3a6583e1333"}},{"type":"Message","id":"EID3776c821-694e-4bf8-a798-a89b4fb3aef0","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb7e3d86f-5961-4c58-90d9-0c52a318a76e/Attachments/EID3776c821-694e-4bf8-a798-a89b4fb3aef0"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:11:34Z","duration":19107,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.009
11:12:08.353 [print] EIDdfa03703-3a48-4733-8a29-b620ef4363f3
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:12:08.353 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:12:08.354 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:12:08.354 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:12:08.354 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/dfa03703-3a48-4733-8a29-b620ef4363f3.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.009
11:12:08.363 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/dfa03703-3a48-4733-8a29-b620ef4363f3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:12:08.364 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDdfa03703-3a48-4733-8a29-b620ef4363f3/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.015
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:12:08.387 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:12:08.387 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.001
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.413
* print "testing url:" + metadata.url 0.000
11:06:37.738 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.412
11:06:37.740 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:38.148 response time in milliseconds: 407.36
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:06:37 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.401
Given url metadata.url 0.000
When method HEAD 0.399
11:06:38.166 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:38.563 response time in milliseconds: 396.57
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:06:38 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.001
1.314
* print "testing url:" + metadata.url 0.000
11:06:07.006 [print] testing url:https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
Given url metadata.url 0.000
When method HEAD 1.314
11:06:07.007 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:08.320 response time in milliseconds: 1312.98
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:08 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642233E63DB864D
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.881
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.880
11:06:08.233 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:09.110 response time in milliseconds: 876.72
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 11308
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:06:08 GMT
1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1"
1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 1642233E94400A80
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:06:09.111 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.810
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:19.053 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.809
11:10:19.054 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 314
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities"}}}

11:10:20.856 response time in milliseconds: 1693.68
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:20 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883420669","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:20.863 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
48.390
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:12:16.401 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 26.591
11:12:16.401 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:12:42.990 response time in milliseconds: 25824.43
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:42 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:12:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/b8a35966-ea81-4b1d-937b-fbeaf005c2a1.json","testRuns":{"TestRun":{"id":"EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:12:19.143Z","testTasks":{"TestTask":{"id":"EID3985d879-8101-4ec9-9a19-8185612a02fe","parent":{"ref":"EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDb91ad571-c705-4d6a-80a8-ff61f5313416"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDb91ad571-c705-4d6a-80a8-ff61f5313416","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:12:16.843Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:12:18.567Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.014
11:12:43.007 [print] EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:12:43.007 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:12:43.008 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:12:43.008 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/b8a35966-ea81-4b1d-937b-fbeaf005c2a1.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:12:43.008 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.003
11:12:43.011 [print] statuspath TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1
* print 'progresspath ', progresspath 0.000
11:12:43.011 [print] progresspath  TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
Given path progresspath 0.000
When method GET 0.529
11:12:43.012 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:43.541 response time in milliseconds: 528.57
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:12:43 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)","28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies","28.10.2020 11:12:19 - Preparing 1 Test Task:","28.10.2020 11:12:19 -  TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)","28.10.2020 11:12:19 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:12:19 -  with parameters: ","28.10.2020 11:12:19 - etf.testcases = *","28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:12:19 - Setting state to CREATED","28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING","28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z","28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:12:21 - Project Properties: ","28.10.2020 11:12:21 - etf.testcases - * ","28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:12:21 - username -  ","28.10.2020 11:12:21 - authUser -  ","28.10.2020 11:12:21 - authMethod - basic ","28.10.2020 11:12:21 - TestRunTask initialized","28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:12:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:28 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:12:43.541 [print] {
  "val": "148",
  "max": "149",
  "log": [
    "28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)",
    "28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:12:19 - Preparing 1 Test Task:",
    "28.10.2020 11:12:19 -  TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)",
    "28.10.2020 11:12:19 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:12:19 -  with parameters: ",
    "28.10.2020 11:12:19 - etf.testcases = *",
    "28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:12:19 - Setting state to CREATED",
    "28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z",
    "28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:12:21 - Project Properties: ",
    "28.10.2020 11:12:21 - etf.testcases - * ",
    "28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:12:21 - username -  ",
    "28.10.2020 11:12:21 - authUser -  ",
    "28.10.2020 11:12:21 - authMethod - basic ",
    "28.10.2020 11:12:21 - TestRunTask initialized",
    "28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes",
    "28.10.2020 11:12:25 ERROR Assertion failed with error 'TR.unexpectedHtml'",
    "28.10.2020 11:12:27 ERROR Assertion failed with error 'TR.unexpectedHtml'",
    "28.10.2020 11:12:28 ERROR Assertion failed with error 'TR.uniqueDatasetIdentifiers'",
    "28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingLinkToMetadataRecordForDownloadService'",
    "28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingOneFeedEntryWithDlFile'",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingElement'",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingFeedUpdatedInformation'",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
    "28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingLinkToRegistry'",
    "28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
    "28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:32 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
    "28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes",
    "28.10.2020 11:12:32 ERROR Assertion failed with error 'TR.missingFeedRootElement'"
  ]
}
Given path progresspath 0.000
When method GET 13.064
11:12:43.542 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:44.060 response time in milliseconds: 514.24
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:12:43 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)","28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies","28.10.2020 11:12:19 - Preparing 1 Test Task:","28.10.2020 11:12:19 -  TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)","28.10.2020 11:12:19 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:12:19 -  with parameters: ","28.10.2020 11:12:19 - etf.testcases = *","28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:12:19 - Setting state to CREATED","28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING","28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z","28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:12:21 - Project Properties: ","28.10.2020 11:12:21 - etf.testcases - * ","28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:12:21 - username -  ","28.10.2020 11:12:21 - authUser -  ","28.10.2020 11:12:21 - authMethod - basic ","28.10.2020 11:12:21 - TestRunTask initialized","28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:12:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:28 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:12:44.060 retry condition not satisfied: response.val == response.max
11:12:44.060 sleeping before retry #1
11:12:49.061 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:49.590 response time in milliseconds: 524.77
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:12:49 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)","28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies","28.10.2020 11:12:19 - Preparing 1 Test Task:","28.10.2020 11:12:19 -  TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)","28.10.2020 11:12:19 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:12:19 -  with parameters: ","28.10.2020 11:12:19 - etf.testcases = *","28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:12:19 - Setting state to CREATED","28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING","28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z","28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:12:21 - Project Properties: ","28.10.2020 11:12:21 - etf.testcases - * ","28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:12:21 - username -  ","28.10.2020 11:12:21 - authUser -  ","28.10.2020 11:12:21 - authMethod - basic ","28.10.2020 11:12:21 - TestRunTask initialized","28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:12:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:28 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:12:49.590 retry condition not satisfied: response.val == response.max
11:12:49.590 sleeping before retry #2
11:12:54.591 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:56.605 response time in milliseconds: 2014.34
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:12:56 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:12:56.606 retry condition satisfied
* print response 0.000
11:12:56.606 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 8.184
11:12:56.607 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:04.790 response time in milliseconds: 8183.26
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:13:04 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:12:47 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:13:04.791 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:13:04.792 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.427
* print "testing url:" + metadata.url 0.000
11:13:07.696 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml
Given url metadata.url 0.000
When method HEAD 0.427
11:13:07.697 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:08.124 response time in milliseconds: 427.20
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4237
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:13:08 GMT
1 < Etag: "0d9adcb43d973daed7753314ef78d57b-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:11:44 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223A0285E3AA3
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
0.450
Given url metadata.url 0.000
When method HEAD 0.449
11:13:08.128 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:08.577 response time in milliseconds: 448.87
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 4237
1 < Content-Security-Policy: block-all-mixed-content
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:13:08 GMT
1 < Etag: "0d9adcb43d973daed7753314ef78d57b-1"
1 < Last-Modified: Fri, 01 Nov 2019 09:11:44 GMT
1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z
1 < Vary: Origin
1 < X-Amz-Bucket-Region: Amsterdam
1 < X-Amz-Request-Id: 164223A0437BE57D
1 < X-Cnection: [close, close]
1 < X-Xss-Protection: 1; mode=block
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
3.641
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.002
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:05.158 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.638
11:15:05.160 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities"}}}

11:15:08.796 response time in milliseconds: 3530.74
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883708622","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:08.797 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.441
* print "testing url:" + metadata.url 0.000
11:09:15.491 [print] testing url:https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.441
11:09:15.492 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:15.933 response time in milliseconds: 440.96
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:15 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.440
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.440
11:09:15.947 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:16.385 response time in milliseconds: 438.14
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:09:15 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:16.386 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.407
* print "testing url:" + metadata.url 0.000
11:15:27.024 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.407
11:15:27.025 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:27.431 response time in milliseconds: 405.51
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:27 GMT
1 < ETag: "1ac36-5af58ad513207-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.402
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.402
11:15:27.446 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:27.848 response time in milliseconds: 401.46
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:27 GMT
1 < ETag: "1ac36-5af58a651212b-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:27.848 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:57.856
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:45.132 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 11.552
11:10:45.133 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:10:56.682 response time in milliseconds: 10807.96
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:55 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:10:53 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e8cfdb4c-4f88-409f-881d-d9b4d6cc358d.json","testRuns":{"TestRun":{"id":"EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:52.738Z","testTasks":{"TestTask":{"id":"EIDb5246905-19de-4968-ad10-974f76c9d953","parent":{"ref":"EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID9d4b4342-3760-40ba-928a-aaf25fd9e405"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID9d4b4342-3760-40ba-928a-aaf25fd9e405","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:10:45.572Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:49.387Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:10:56.685 [print] EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:10:56.685 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:10:56.685 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:10:56.685 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e8cfdb4c-4f88-409f-881d-d9b4d6cc358d.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:10:56.685 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:10:56.685 [print] statuspath TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d
* print 'progresspath ', progresspath 0.000
11:10:56.685 [print] progresspath  TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
Given path progresspath 0.000
When method GET 0.731
11:10:56.686 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:57.416 response time in milliseconds: 729.93
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:10:57 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:10:57.417 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)",
    "28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:10:52 - Preparing 1 Test Task:",
    "28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)",
    "28.10.2020 11:10:52 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:10:52 -  with parameters: ",
    "28.10.2020 11:10:52 - etf.testcases = *",
    "28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:10:52 - Setting state to CREATED",
    "28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z",
    "28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:10:55 - Project Properties: ",
    "28.10.2020 11:10:55 - etf.testcases - * ",
    "28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:10:55 - username -  ",
    "28.10.2020 11:10:55 - authUser -  ",
    "28.10.2020 11:10:55 - authMethod - basic ",
    "28.10.2020 11:10:55 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:45.572
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
11:10:57.418 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:10:57.930 response time in milliseconds: 507.74
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:10:57 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized"]}

11:10:57.930 retry condition not satisfied: response.val == response.max
11:10:57.930 sleeping before retry #1
11:11:02.931 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:03.552 response time in milliseconds: 620.12
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:11:03 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:11:03.552 retry condition not satisfied: response.val == response.max
11:11:03.552 sleeping before retry #2
11:11:08.553 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:09.068 response time in milliseconds: 514.78
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:11:09 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"86","max":"87","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:11:09.068 retry condition not satisfied: response.val == response.max
11:11:09.068 sleeping before retry #3
11:11:14.069 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:14.603 response time in milliseconds: 532.64
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:11:14 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"167","max":"168","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:14.603 retry condition not satisfied: response.val == response.max
11:11:14.603 sleeping before retry #4
11:11:19.604 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:20.118 response time in milliseconds: 513.10
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:11:20 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:20.118 retry condition not satisfied: response.val == response.max
11:11:20.118 sleeping before retry #5
11:11:25.119 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:25.641 response time in milliseconds: 520.61
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:11:25 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:25.641 retry condition not satisfied: response.val == response.max
11:11:25.641 sleeping before retry #6
11:11:30.642 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:31.159 response time in milliseconds: 515.72
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:11:31 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:31.159 retry condition not satisfied: response.val == response.max
11:11:31.159 sleeping before retry #7
11:11:36.160 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:36.670 response time in milliseconds: 509.76
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:11:36 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:36.670 retry condition not satisfied: response.val == response.max
11:11:36.670 sleeping before retry #8
11:11:41.671 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:42.200 response time in milliseconds: 528.47
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:11:42 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:42.200 retry condition not satisfied: response.val == response.max
11:11:42.200 sleeping before retry #9
11:11:47.201 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:47.764 response time in milliseconds: 558.11
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:11:47 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:47.764 retry condition not satisfied: response.val == response.max
11:11:47.764 sleeping before retry #10
11:11:52.765 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:53.283 response time in milliseconds: 517.69
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:11:53 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:53.284 retry condition not satisfied: response.val == response.max
11:11:53.284 sleeping before retry #11
11:11:58.285 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:11:58.800 response time in milliseconds: 514.77
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:11:58 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:11:58.804 retry condition not satisfied: response.val == response.max
11:11:58.807 sleeping before retry #12
11:12:03.808 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:04.328 response time in milliseconds: 519.39
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:12:04 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:12:04.334 retry condition not satisfied: response.val == response.max
11:12:04.335 sleeping before retry #13
11:12:09.336 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:09.855 response time in milliseconds: 519.19
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:12:09 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:12:09.863 retry condition not satisfied: response.val == response.max
11:12:09.863 sleeping before retry #14
11:12:14.864 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:15.387 response time in milliseconds: 522.39
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:12:15 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:12:15.387 retry condition not satisfied: response.val == response.max
11:12:15.387 sleeping before retry #15
11:12:20.388 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:20.908 response time in milliseconds: 519.67
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:12:20 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:12:20.909 retry condition not satisfied: response.val == response.max
11:12:20.909 sleeping before retry #16
11:12:25.910 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:26.421 response time in milliseconds: 510.54
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:12:26 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:12:26.423 retry condition not satisfied: response.val == response.max
11:12:26.423 sleeping before retry #17
11:12:31.424 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:31.937 response time in milliseconds: 512.24
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:12:31 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:12:31.937 retry condition not satisfied: response.val == response.max
11:12:31.938 sleeping before retry #18
11:12:36.938 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:37.448 response time in milliseconds: 509.10
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:12:37 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:12:37.449 retry condition not satisfied: response.val == response.max
11:12:37.450 sleeping before retry #19
11:12:42.450 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:42.986 response time in milliseconds: 528.85
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:12:42 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 -  TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 -  with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username -  ","28.10.2020 11:10:55 - authUser -  ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:12:42.989 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.424
* print "testing url:" + metadata.url 0.000
11:14:37.702 [print] testing url:https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.424
11:14:37.702 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:38.126 response time in milliseconds: 423.85
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:38 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.400
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.400
11:14:38.140 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:38.537 response time in milliseconds: 396.72
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:38 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:38.539 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.439
* print "testing url:" + metadata.url 0.003
11:06:15.885 [print] testing url:https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.436
11:06:15.890 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:16.321 response time in milliseconds: 431.11
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:16 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.406
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.405
11:06:16.330 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:06:16.734 response time in milliseconds: 404.00
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:16 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:16.735 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.418
* print "testing url:" + metadata.url 0.000
11:12:23.171 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.417
11:12:23.172 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:23.589 response time in milliseconds: 417.15
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:23 GMT
1 < ETag: "19224-5af58a6546906-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.393
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.392
11:12:23.593 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:23.985 response time in milliseconds: 390.95
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:12:23 GMT
1 < ETag: "19224-5af58ad5383c6-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:23.986 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.397
* print "testing url:" + metadata.url 0.000
11:12:43.016 [print] testing url:https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml
Given url metadata.url 0.000
When method HEAD 0.397
11:12:43.017 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:43.413 response time in milliseconds: 396.66
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 1855
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:43 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.398
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.397
11:12:43.417 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:43.814 response time in milliseconds: 397.36
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 1855
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:42 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:23 - assert evaluated to false: filesize > 2000
11:12:43.815 assertion failed: assert evaluated to false: filesize > 2000
1.622
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:07:01.727 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.621
11:07:01.728 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS"}}}

11:07:03.349 response time in milliseconds: 1513.97
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:07:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883223174","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:07:03.349 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:5.051
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:08:50.597 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 22.618
11:08:50.598 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}}}

11:09:13.212 response time in milliseconds: 21755.69
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:12 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:09:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/0cdf8b5d-ca33-49bd-8367-8ee9e817ed25.json","testRuns":{"TestRun":{"id":"EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:59.749Z","testTasks":{"TestTask":{"id":"EID8f6444f6-34f3-44bf-bb93-f5a6613d95c1","parent":{"ref":"EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0fe52367-8f18-410b-b21e-e5376be4a60c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0fe52367-8f18-410b-b21e-e5376be4a60c","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:51.04Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:56.83Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:09:13.216 [print] EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:09:13.216 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:09:13.216 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:09:13.217 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/0cdf8b5d-ca33-49bd-8367-8ee9e817ed25.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:09:13.217 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:09:13.217 [print] statuspath TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25
* print 'progresspath ', progresspath 0.000
11:09:13.218 [print] progresspath  TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
Given path progresspath 0.000
When method GET 0.520
11:09:13.218 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:13.738 response time in milliseconds: 513.73
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:09:13 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)","28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:59 - Preparing 1 Test Task:","28.10.2020 11:08:59 -  TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)","28.10.2020 11:08:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:59 -  with parameters: ","28.10.2020 11:08:59 - etf.testcases = *","28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:59 - Setting state to CREATED","28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z","28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:01 - Project Properties: ","28.10.2020 11:09:01 - etf.testcases - * ","28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","28.10.2020 11:09:01 - username -  ","28.10.2020 11:09:01 - authUser -  ","28.10.2020 11:09:01 - authMethod - basic ","28.10.2020 11:09:01 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.001
11:09:13.740 [print] {
  "val": "141",
  "max": "142",
  "log": [
    "28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)",
    "28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:08:59 - Preparing 1 Test Task:",
    "28.10.2020 11:08:59 -  TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)",
    "28.10.2020 11:08:59 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:08:59 -  with parameters: ",
    "28.10.2020 11:08:59 - etf.testcases = *",
    "28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:08:59 - Setting state to CREATED",
    "28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z",
    "28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:09:01 - Project Properties: ",
    "28.10.2020 11:09:01 - etf.testcases - * ",
    "28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ",
    "28.10.2020 11:09:01 - username -  ",
    "28.10.2020 11:09:01 - authUser -  ",
    "28.10.2020 11:09:01 - authMethod - basic ",
    "28.10.2020 11:09:01 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 11.561
11:09:13.741 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:14.254 response time in milliseconds: 513.09
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:09:14 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"149","max":"150","log":["28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)","28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:59 - Preparing 1 Test Task:","28.10.2020 11:08:59 -  TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)","28.10.2020 11:08:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:59 -  with parameters: ","28.10.2020 11:08:59 - etf.testcases = *","28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:59 - Setting state to CREATED","28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z","28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:01 - Project Properties: ","28.10.2020 11:09:01 - etf.testcases - * ","28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","28.10.2020 11:09:01 - username -  ","28.10.2020 11:09:01 - authUser -  ","28.10.2020 11:09:01 - authMethod - basic ","28.10.2020 11:09:01 - TestRunTask initialized"]}

11:09:14.254 retry condition not satisfied: response.val == response.max
11:09:14.254 sleeping before retry #1
11:09:19.255 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:19.768 response time in milliseconds: 511.96
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:09:19 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)","28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:59 - Preparing 1 Test Task:","28.10.2020 11:08:59 -  TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)","28.10.2020 11:08:59 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:59 -  with parameters: ","28.10.2020 11:08:59 - etf.testcases = *","28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:59 - Setting state to CREATED","28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z","28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:01 - Project Properties: ","28.10.2020 11:09:01 - etf.testcases - * ","28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","28.10.2020 11:09:01 - username -  ","28.10.2020 11:09:01 - authUser -  ","28.10.2020 11:09:01 - authMethod - basic ","28.10.2020 11:09:01 - TestRunTask initialized","28.10.2020 11:09:16 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:16 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:16 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:17 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:17 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:09:19.776 retry condition not satisfied: response.val == response.max
11:09:19.776 sleeping before retry #2
11:09:24.777 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:25.298 response time in milliseconds: 519.83
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:09:25 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

11:09:25.301 retry condition satisfied
* print response 0.000
11:09:25.302 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 30.347
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:67 - 
java.net.SocketTimeoutException: Read timed out
11:09:25.304 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:55.649 java.net.SocketTimeoutException: Read timed out, http call failed after 30345 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25
11:09:55.649 http request failed: 
java.net.SocketTimeoutException: Read timed out
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1.093
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:02.022 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.092
11:09:02.023 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

11:09:03.109 response time in milliseconds: 1081.80
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883343040","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:03.116 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.412
* print "testing url:" + metadata.url 0.000
11:12:14.512 [print] testing url:https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.412
11:12:14.513 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:14.925 response time in milliseconds: 411.59
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:14 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.392
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.388
11:12:14.929 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:15.317 response time in milliseconds: 387.92
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:15 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.003
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:12:15.321 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.876
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:21.908 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.875
11:15:21.909 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 292
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS"}}}

11:15:23.783 response time in milliseconds: 1767.14
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:23 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883723611","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:23.784 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
5.463
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:50.189 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.463
11:13:50.190 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 278
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities"}}}

11:13:55.653 response time in milliseconds: 5357.72
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:55 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883635475","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:55.653 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.398
* print "testing url:" + metadata.url 0.000
11:09:13.823 [print] testing url:https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.398
11:09:13.824 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:14.222 response time in milliseconds: 397.63
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:14 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.407
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.406
11:09:14.226 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:09:14.632 response time in milliseconds: 406.01
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:14 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:09:14.633 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
30.653
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:11.018 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.597
11:14:11.019 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:14:20.614 response time in milliseconds: 8941.15
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:19 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:18 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d9fef969-5b8f-46c1-8908-0edaeda2d011.json","testRuns":{"TestRun":{"id":"EIDd9fef969-5b8f-46c1-8908-0edaeda2d011","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:16.91Z","testTasks":{"TestTask":{"id":"EID8c92464b-13cd-497e-b3f5-cc232f7c9557","parent":{"ref":"EIDd9fef969-5b8f-46c1-8908-0edaeda2d011"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID8718e970-ccb3-483f-bd3b-bf0f69d6ba6a"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID8718e970-ccb3-483f-bd3b-bf0f69d6ba6a","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:11.462Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:13.961Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.019
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:20.636 [print] EIDd9fef969-5b8f-46c1-8908-0edaeda2d011
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:20.636 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:20.636 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:20.636 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d9fef969-5b8f-46c1-8908-0edaeda2d011.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:20.636 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:20.636 [print] statuspath TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011
* print 'progresspath ', progresspath 0.000
11:14:20.636 [print] progresspath  TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/progress
Given path progresspath 0.000
When method GET 0.519
11:14:20.637 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:21.156 response time in milliseconds: 515.60
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:21 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:16 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:16 UTC 2020)","28.10.2020 11:14:16 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:16 - Preparing 1 Test Task:","28.10.2020 11:14:16 -  TestTask 1 (8c92464b-13cd-497e-b3f5-cc232f7c9557)","28.10.2020 11:14:16 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:16 -  with parameters: ","28.10.2020 11:14:16 - etf.testcases = *","28.10.2020 11:14:16 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:16 - Setting state to CREATED","28.10.2020 11:14:16 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:18 - Starting TestRun.d9fef969-5b8f-46c1-8908-0edaeda2d011 at 2020-10-28T11:14:19Z","28.10.2020 11:14:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:19 - Project Properties: ","28.10.2020 11:14:19 - etf.testcases - * ","28.10.2020 11:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:19 - username -  ","28.10.2020 11:14:19 - authUser -  ","28.10.2020 11:14:19 - authMethod - basic ","28.10.2020 11:14:19 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:14:21.157 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "28.10.2020 11:14:16 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:16 UTC 2020)",
    "28.10.2020 11:14:16 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:14:16 - Preparing 1 Test Task:",
    "28.10.2020 11:14:16 -  TestTask 1 (8c92464b-13cd-497e-b3f5-cc232f7c9557)",
    "28.10.2020 11:14:16 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:14:16 -  with parameters: ",
    "28.10.2020 11:14:16 - etf.testcases = *",
    "28.10.2020 11:14:16 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:14:16 - Setting state to CREATED",
    "28.10.2020 11:14:16 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:18 - Starting TestRun.d9fef969-5b8f-46c1-8908-0edaeda2d011 at 2020-10-28T11:14:19Z",
    "28.10.2020 11:14:19 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:19 - Project Properties: ",
    "28.10.2020 11:14:19 - etf.testcases - * ",
    "28.10.2020 11:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:14:19 - username -  ",
    "28.10.2020 11:14:19 - authUser -  ",
    "28.10.2020 11:14:19 - authMethod - basic ",
    "28.10.2020 11:14:19 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 17.218
11:14:21.157 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:21.675 response time in milliseconds: 517.78
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:21 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:14:16 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:16 UTC 2020)","28.10.2020 11:14:16 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:16 - Preparing 1 Test Task:","28.10.2020 11:14:16 -  TestTask 1 (8c92464b-13cd-497e-b3f5-cc232f7c9557)","28.10.2020 11:14:16 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:16 -  with parameters: ","28.10.2020 11:14:16 - etf.testcases = *","28.10.2020 11:14:16 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:16 - Setting state to CREATED","28.10.2020 11:14:16 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:18 - Starting TestRun.d9fef969-5b8f-46c1-8908-0edaeda2d011 at 2020-10-28T11:14:19Z","28.10.2020 11:14:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:19 - Project Properties: ","28.10.2020 11:14:19 - etf.testcases - * ","28.10.2020 11:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:19 - username -  ","28.10.2020 11:14:19 - authUser -  ","28.10.2020 11:14:19 - authMethod - basic ","28.10.2020 11:14:19 - TestRunTask initialized"]}

11:14:21.681 retry condition not satisfied: response.val == response.max
11:14:21.681 sleeping before retry #1
11:14:26.682 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:27.199 response time in milliseconds: 515.94
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:27 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"85","max":"86","log":["28.10.2020 11:14:16 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:16 UTC 2020)","28.10.2020 11:14:16 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:16 - Preparing 1 Test Task:","28.10.2020 11:14:16 -  TestTask 1 (8c92464b-13cd-497e-b3f5-cc232f7c9557)","28.10.2020 11:14:16 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:16 -  with parameters: ","28.10.2020 11:14:16 - etf.testcases = *","28.10.2020 11:14:16 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:16 - Setting state to CREATED","28.10.2020 11:14:16 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:18 - Starting TestRun.d9fef969-5b8f-46c1-8908-0edaeda2d011 at 2020-10-28T11:14:19Z","28.10.2020 11:14:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:19 - Project Properties: ","28.10.2020 11:14:19 - etf.testcases - * ","28.10.2020 11:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:19 - username -  ","28.10.2020 11:14:19 - authUser -  ","28.10.2020 11:14:19 - authMethod - basic ","28.10.2020 11:14:19 - TestRunTask initialized","28.10.2020 11:14:22 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:14:22 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:24 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:26 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:14:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:27.199 retry condition not satisfied: response.val == response.max
11:14:27.199 sleeping before retry #2
11:14:32.201 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:32.727 response time in milliseconds: 515.39
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:14:32 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:14:16 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:16 UTC 2020)","28.10.2020 11:14:16 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:16 - Preparing 1 Test Task:","28.10.2020 11:14:16 -  TestTask 1 (8c92464b-13cd-497e-b3f5-cc232f7c9557)","28.10.2020 11:14:16 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:16 -  with parameters: ","28.10.2020 11:14:16 - etf.testcases = *","28.10.2020 11:14:16 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:16 - Setting state to CREATED","28.10.2020 11:14:16 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:18 - Starting TestRun.d9fef969-5b8f-46c1-8908-0edaeda2d011 at 2020-10-28T11:14:19Z","28.10.2020 11:14:19 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:19 - Project Properties: ","28.10.2020 11:14:19 - etf.testcases - * ","28.10.2020 11:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:19 - username -  ","28.10.2020 11:14:19 - authUser -  ","28.10.2020 11:14:19 - authMethod - basic ","28.10.2020 11:14:19 - TestRunTask initialized","28.10.2020 11:14:22 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:14:22 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:24 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:26 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:14:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:27 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:27 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:27 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:27 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:27 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:27 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:27 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:14:27 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:27 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:27 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:27 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:28 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:28 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:14:28 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:28 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:28 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:28 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:14:28 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:14:28 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:28 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:14:28 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:14:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:14:32.727 retry condition not satisfied: response.val == response.max
11:14:32.727 sleeping before retry #3
11:14:37.728 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:38.375 response time in milliseconds: 646.22
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:14:38 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

11:14:38.375 retry condition satisfied
* print response 0.000
11:14:38.375 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 3.272
11:14:38.376 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:41.644 response time in milliseconds: 2298.89
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:14:40 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:14:37 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d9fef969-5b8f-46c1-8908-0edaeda2d011.json","testRuns":{"TestRun":{"id":"EIDd9fef969-5b8f-46c1-8908-0edaeda2d011","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:16.91Z","testTasks":{"TestTask":{"id":"EID8c92464b-13cd-497e-b3f5-cc232f7c9557","parent":{"ref":"EIDd9fef969-5b8f-46c1-8908-0edaeda2d011"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID8718e970-ccb3-483f-bd3b-bf0f69d6ba6a"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID39d8aeff-8346-4ae0-856c-c6ed4555b479"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID8718e970-ccb3-483f-bd3b-bf0f69d6ba6a","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:11.462Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:13.961Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID39d8aeff-8346-4ae0-856c-c6ed4555b479","testObject":{"ref":"EID8718e970-ccb3-483f-bd3b-bf0f69d6ba6a"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eea7127-0175-1000-9acf-5163616b9f4e","testCaseResults":{"TestCaseResult":[{"id":"EID6eea7127-0175-1000-2af1-b96cbc5d85ca","testStepResults":{"TestStepResult":[{"id":"EID6eea7128-0175-1000-6478-7c607645efaf","parent":{"ref":"EID6eea7127-0175-1000-2af1-b96cbc5d85ca"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:14:19Z","duration":31,"status":"PASSED"},{"id":"EID6eea7148-0175-1000-492c-27825c4766de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7230-0175-1000-8335-e1436a78eba5","parent":{"ref":"EID6eea7148-0175-1000-492c-27825c4766de"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7230-0175-1000-bab6-b2f09ca5eb46","parent":{"ref":"EID6eea7148-0175-1000-492c-27825c4766de"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7230-0175-1000-a6b1-e6defbf77093","parent":{"ref":"EID6eea7148-0175-1000-492c-27825c4766de"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6eea7230-0175-1000-5037-32e8f36b4c72","parent":{"ref":"EID6eea7148-0175-1000-492c-27825c4766de"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4e438173-b172-4f2d-8600-3b7c59fe2da8"},{"ref":"EIDbeee7628-3b4b-490c-8b37-c3f9291ae597"},{"ref":"EIDa16e14e2-b77d-4dbc-b2d8-c3f38dee856a"}]},"parent":{"ref":"EID6eea7127-0175-1000-2af1-b96cbc5d85ca"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:14:19Z","duration":108,"status":"PASSED"}]},"parent":{"ref":"EID6eea7127-0175-1000-9acf-5163616b9f4e"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:14:19Z","duration":265,"status":"PASSED"},{"id":"EID6eea7230-0175-1000-a513-2d71b454dd4f","testStepResults":{"TestStepResult":{"id":"EID6eea7231-0175-1000-8bdd-5b51cbe547c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea72f2-0175-1000-dac3-0f4ed70d2ff4","parent":{"ref":"EID6eea7231-0175-1000-8bdd-5b51cbe547c3"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea72f3-0175-1000-3853-e81152fba282","parent":{"ref":"EID6eea7231-0175-1000-8bdd-5b51cbe547c3"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea72f3-0175-1000-8889-07bba3d0acf7","parent":{"ref":"EID6eea7231-0175-1000-8bdd-5b51cbe547c3"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID47da14c0-ded1-45b1-a90f-e9dfcf97566b"},{"ref":"EID601da86e-256f-4bdc-85a7-ad1e4b6455a9"},{"ref":"EIDdb389122-5209-4bbf-bd42-a89018c6cfb6"}]},"parent":{"ref":"EID6eea7230-0175-1000-a513-2d71b454dd4f"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:14:19Z","duration":116,"status":"PASSED"}},"parent":{"ref":"EID6eea7127-0175-1000-9acf-5163616b9f4e"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:14:19Z","duration":195,"status":"PASSED"}]},"parent":{"ref":"EID39d8aeff-8346-4ae0-856c-c6ed4555b479"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:14:19Z","duration":460,"status":"PASSED"},{"id":"EID6eea72f3-0175-1000-f982-b88a543e7914","testCaseResults":{"TestCaseResult":[{"id":"EID6eea72f3-0175-1000-e9bb-241cd3fa6378","testStepResults":{"TestStepResult":[{"id":"EID6eea72f3-0175-1000-0858-9f66002dcd6b","parent":{"ref":"EID6eea72f3-0175-1000-e9bb-241cd3fa6378"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":116,"status":"PASSED"},{"id":"EID6eea72f3-0175-1000-d5a1-e350b4fa22da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea73ef-0175-1000-60fb-ea960cc708c0","parent":{"ref":"EID6eea72f3-0175-1000-d5a1-e350b4fa22da"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea73ef-0175-1000-6830-275b3cefb595","parent":{"ref":"EID6eea72f3-0175-1000-d5a1-e350b4fa22da"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea73ef-0175-1000-132c-e79658fc647e","parent":{"ref":"EID6eea72f3-0175-1000-d5a1-e350b4fa22da"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea73ef-0175-1000-3d16-1d44ac3e754a","parent":{"ref":"EID6eea72f3-0175-1000-d5a1-e350b4fa22da"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea73ef-0175-1000-7f95-e7f58d856e81","parent":{"ref":"EID6eea72f3-0175-1000-d5a1-e350b4fa22da"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda391eb0-62d0-447c-9be5-740af56ce405"},{"ref":"EID86348430-da4e-49ed-a045-d2f12ebaffcf"},{"ref":"EID9c03f891-9bd7-444a-8562-f52b4b5bed98"}]},"parent":{"ref":"EID6eea72f3-0175-1000-e9bb-241cd3fa6378"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:14:20Z","duration":98,"status":"PASSED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:14:20Z","duration":261,"status":"PASSED"},{"id":"EID6eea73f8-0175-1000-3740-3f3fcbbd8c17","testStepResults":{"TestStepResult":[{"id":"EID6eea73f8-0175-1000-3e78-8a1510b71c7f","attachments":{"attachment":[{"ref":"EIDa7ef8293-cf95-46ba-927b-987c124ccdf8"},{"ref":"EID17d84fb4-fed0-4899-a76a-6a5e8edc6897"}]},"parent":{"ref":"EID6eea73f8-0175-1000-3740-3f3fcbbd8c17"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":133,"status":"PASSED"},{"id":"EID6eea74a7-0175-1000-fc41-d5103c9a772c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7530-0175-1000-5ce0-4a2eab0522c6","parent":{"ref":"EID6eea74a7-0175-1000-fc41-d5103c9a772c"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7530-0175-1000-393c-96a612489e9e","parent":{"ref":"EID6eea74a7-0175-1000-fc41-d5103c9a772c"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7530-0175-1000-f97e-9f9a05b58227","parent":{"ref":"EID6eea74a7-0175-1000-fc41-d5103c9a772c"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea7530-0175-1000-5bcd-550d9932167b","parent":{"ref":"EID6eea74a7-0175-1000-fc41-d5103c9a772c"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4777d509-cb75-4286-b061-2c2c5efa6f7c"},{"ref":"EID74fb9cf0-4c90-451d-ab46-a8b75af7e1d4"},{"ref":"EID88c5e263-0978-4a86-930b-4e675ae9f20b"}]},"parent":{"ref":"EID6eea73f8-0175-1000-3740-3f3fcbbd8c17"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:14:20Z","duration":35,"status":"PASSED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:14:20Z","duration":312,"status":"PASSED"},{"id":"EID6eea7530-0175-1000-01d5-2a4b886a8132","testStepResults":{"TestStepResult":[{"id":"EID6eea7530-0175-1000-af9f-cd8a9b8add1d","attachments":{"attachment":[{"ref":"EIDe2793812-bfc3-4df3-adb2-8e5ea37c59ac"},{"ref":"EIDf779d5ed-f4fc-42db-9152-53a1288ec0a2"}]},"parent":{"ref":"EID6eea7530-0175-1000-01d5-2a4b886a8132"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":171,"status":"PASSED"},{"id":"EID6eea7602-0175-1000-9796-b4a043b684a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea76a8-0175-1000-36ca-0aff19e92ac3","parent":{"ref":"EID6eea7602-0175-1000-9796-b4a043b684a2"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea76a8-0175-1000-3570-0d5882307b1b","parent":{"ref":"EID6eea7602-0175-1000-9796-b4a043b684a2"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea76a8-0175-1000-2a31-f98f8c5aa65d","parent":{"ref":"EID6eea7602-0175-1000-9796-b4a043b684a2"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea76a8-0175-1000-fdf5-fde62db6d012","parent":{"ref":"EID6eea7602-0175-1000-9796-b4a043b684a2"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6eea76a8-0175-1000-ce46-1087b3d793a6","parent":{"ref":"EID6eea7602-0175-1000-9796-b4a043b684a2"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd357c1d0-350c-4ca6-b269-751daed1689f"},{"ref":"EIDbb2ec87d-35a7-4504-838e-b09076af86c6"},{"ref":"EID424d06af-49d3-4758-a694-bd345a67226e"}]},"parent":{"ref":"EID6eea7530-0175-1000-01d5-2a4b886a8132"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:14:20Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:14:20Z","duration":376,"status":"PASSED"},{"id":"EID6eea76bc-0175-1000-3785-e0e68efa1a0b","testStepResults":{"TestStepResult":[{"id":"EID6eea76bc-0175-1000-497c-367d78724e78","attachments":{"attachment":[{"ref":"EID954c313f-d143-4ea0-89e0-e7a5fe62eccc"},{"ref":"EID82de7513-3f8f-461f-ac1a-083199d647b4"}]},"parent":{"ref":"EID6eea76bc-0175-1000-3785-e0e68efa1a0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:14:20Z","duration":96,"status":"PASSED"},{"id":"EID6eea7746-0175-1000-18ba-9cef9947f80a","parent":{"ref":"EID6eea76bc-0175-1000-3785-e0e68efa1a0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7746-0175-1000-eb98-43b087b2a75b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea77ce-0175-1000-faf0-078c3721d243","parent":{"ref":"EID6eea7746-0175-1000-eb98-43b087b2a75b"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ce-0175-1000-f8ed-c6bb7571f55e","parent":{"ref":"EID6eea7746-0175-1000-eb98-43b087b2a75b"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ce-0175-1000-576a-f4831cb27213","parent":{"ref":"EID6eea7746-0175-1000-eb98-43b087b2a75b"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea77ce-0175-1000-99e6-ef663185f12a","parent":{"ref":"EID6eea7746-0175-1000-eb98-43b087b2a75b"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d97f5d4-63b4-46b0-93d3-c0ff180a32d1"},{"ref":"EID35ae6883-0a17-48a4-a371-eeff0410fd85"},{"ref":"EIDfcc20b08-b5bf-4e50-8a54-a21d0a9594d3"}]},"parent":{"ref":"EID6eea76bc-0175-1000-3785-e0e68efa1a0b"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:14:21Z","duration":36,"status":"PASSED"},{"id":"EID6eea77ce-0175-1000-b05c-755eeef0a533","attachments":{"attachment":{"ref":"EID4390399e-c39a-485d-85b7-7cd1f7ef2414"}},"parent":{"ref":"EID6eea76bc-0175-1000-3785-e0e68efa1a0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":1,"status":"PASSED"},{"id":"EID6eea77dc-0175-1000-2f54-c3d832d5ad53","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea78c1-0175-1000-855b-0d2cf06c602a","parent":{"ref":"EID6eea77dc-0175-1000-2f54-c3d832d5ad53"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea78c1-0175-1000-8dab-03f5d6553ff1","parent":{"ref":"EID6eea77dc-0175-1000-2f54-c3d832d5ad53"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea78c1-0175-1000-8b54-dc8072a71403","parent":{"ref":"EID6eea77dc-0175-1000-2f54-c3d832d5ad53"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea78c1-0175-1000-b68c-5f070319f16f","parent":{"ref":"EID6eea77dc-0175-1000-2f54-c3d832d5ad53"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea78c1-0175-1000-aeaa-09b98baf2b40","parent":{"ref":"EID6eea77dc-0175-1000-2f54-c3d832d5ad53"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa80cd4a7-c4c4-4eb1-8ceb-31253775a05a"},{"ref":"EIDeeb04b6c-178c-4823-b692-de3d48f5a93a"},{"ref":"EIDcae8cb65-f833-4e58-ba18-ef4607c43855"}]},"parent":{"ref":"EID6eea76bc-0175-1000-3785-e0e68efa1a0b"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:14:21Z","duration":86,"status":"PASSED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:14:20Z","duration":528,"status":"PASSED"},{"id":"EID6eea78cc-0175-1000-a731-df97258204a2","testStepResults":{"TestStepResult":[{"id":"EID6eea78cc-0175-1000-8b4e-e98dbec1e20e","attachments":{"attachment":[{"ref":"EID0b69f150-4f56-432a-8e30-7916bc301dd8"},{"ref":"EIDa0c3fb90-4103-405f-8861-05097c6d6aff"}]},"parent":{"ref":"EID6eea78cc-0175-1000-a731-df97258204a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:14:21Z","duration":185,"status":"PASSED"},{"id":"EID6eea79ef-0175-1000-f582-b19d4f886c1d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7aaf-0175-1000-66c9-abbf9335edb9","parent":{"ref":"EID6eea79ef-0175-1000-f582-b19d4f886c1d"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7aaf-0175-1000-db5f-a6dfa50e00c2","parent":{"ref":"EID6eea79ef-0175-1000-f582-b19d4f886c1d"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7aaf-0175-1000-bad7-902f6224a761","parent":{"ref":"EID6eea79ef-0175-1000-f582-b19d4f886c1d"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"},{"id":"EID6eea7aaf-0175-1000-39f8-1d94e5670d9c","parent":{"ref":"EID6eea79ef-0175-1000-f582-b19d4f886c1d"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:14:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6c84a407-c0a9-4d2a-8b41-0f939c6b700f"},{"ref":"EID5e758939-5e2b-4cfc-9e0b-e8752e55df31"},{"ref":"EID778214bb-e2f6-4cbc-9857-f07aeb317069"}]},"parent":{"ref":"EID6eea78cc-0175-1000-a731-df97258204a2"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:14:21Z","duration":68,"status":"PASSED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:14:21Z","duration":484,"status":"PASSED"},{"id":"EID6eea7ab0-0175-1000-b1c1-e813c86eadee","testStepResults":{"TestStepResult":[{"id":"EID6eea7ab0-0175-1000-3434-2d4ca91544ec","attachments":{"attachment":[{"ref":"EID5e937d6f-f46d-4e7d-b28e-f2024d9c75f8"},{"ref":"EIDbfc68394-6d2e-4d90-8a93-316a9e073cd8"}]},"parent":{"ref":"EID6eea7ab0-0175-1000-b1c1-e813c86eadee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":130,"status":"PASSED"},{"id":"EID6eea7b5c-0175-1000-c72b-678c33143341","parent":{"ref":"EID6eea7ab0-0175-1000-b1c1-e813c86eadee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":8,"status":"PASSED"},{"id":"EID6eea7b65-0175-1000-899a-3e0ce8837281","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7ccb-0175-1000-05a2-8b5366a868ab","parent":{"ref":"EID6eea7b65-0175-1000-899a-3e0ce8837281"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7ccb-0175-1000-88d4-6dbe48197f4c","parent":{"ref":"EID6eea7b65-0175-1000-899a-3e0ce8837281"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7ccb-0175-1000-0ace-16d0e32abea2","parent":{"ref":"EID6eea7b65-0175-1000-899a-3e0ce8837281"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7ccb-0175-1000-945c-67c6fc549a33","parent":{"ref":"EID6eea7b65-0175-1000-899a-3e0ce8837281"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID972c0d64-e116-4a18-97b2-a91e5712021e"},{"ref":"EID36ab6a97-c8cc-4262-a26b-24fb99477600"},{"ref":"EIDfc1b9a0d-b873-4d92-8d1d-843f35c21068"}]},"parent":{"ref":"EID6eea7ab0-0175-1000-b1c1-e813c86eadee"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:14:22Z","duration":69,"status":"PASSED"},{"id":"EID6eea7ccb-0175-1000-55d4-ee5ac307ebb1","attachments":{"attachment":{"ref":"EIDe193c055-6eb4-42d6-99f0-ccdb3fd926f5"}},"parent":{"ref":"EID6eea7ab0-0175-1000-b1c1-e813c86eadee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":2,"status":"PASSED"},{"id":"EID6eea7cd9-0175-1000-031a-92f876f89a25","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7e0b-0175-1000-25f2-d1b189afeeb0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea7cd9-0175-1000-031a-92f876f89a25"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:14:22Z","duration":10,"status":"FAILED"},{"id":"EID6eea7e15-0175-1000-fc2f-b9a9622ced6e","parent":{"ref":"EID6eea7cd9-0175-1000-031a-92f876f89a25"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6eea7e15-0175-1000-de3f-bace134d8035","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6eea7cd9-0175-1000-031a-92f876f89a25"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:14:22Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0982e3ce-84e6-49bc-bf77-08f98ab11120"},{"ref":"EID272612c6-f451-4f2e-868d-c9aca92402f9"},{"ref":"EID05c9f700-2f19-4444-853a-141a10dc3a1c"}]},"parent":{"ref":"EID6eea7ab0-0175-1000-b1c1-e813c86eadee"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:14:22Z","duration":245,"status":"FAILED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:14:22Z","duration":869,"status":"FAILED"},{"id":"EID6eea7e16-0175-1000-86ee-902238a8aa4b","testStepResults":{"TestStepResult":[{"id":"EID6eea7e16-0175-1000-07c7-e4e0fefea74a","attachments":{"attachment":[{"ref":"EIDb63097a9-42be-4634-a7fb-587570d2806a"},{"ref":"EID39cf95a3-809f-40b6-a476-d08563f2b691"}]},"parent":{"ref":"EID6eea7e16-0175-1000-86ee-902238a8aa4b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:14:22Z","duration":192,"status":"PASSED"},{"id":"EID6eea7ef9-0175-1000-c87c-bd3d603694c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea7ffa-0175-1000-706e-bf95f6b5655f","parent":{"ref":"EID6eea7ef9-0175-1000-c87c-bd3d603694c1"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea7ffa-0175-1000-95e9-494a77132daa","parent":{"ref":"EID6eea7ef9-0175-1000-c87c-bd3d603694c1"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea7ffa-0175-1000-dbf7-5298cee2ad82","parent":{"ref":"EID6eea7ef9-0175-1000-c87c-bd3d603694c1"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea7ffa-0175-1000-8600-973242341f0f","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea7ef9-0175-1000-c87c-bd3d603694c1"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID9f811034-184b-4293-943c-b73d714382aa"},{"ref":"EID15d6f154-77a4-4e34-9da9-48e0a2057055"},{"ref":"EID8c8702f4-58a6-4e37-9e91-2e66f9454375"}]},"parent":{"ref":"EID6eea7e16-0175-1000-86ee-902238a8aa4b"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:14:23Z","duration":102,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:14:22Z","duration":484,"status":"PASSED_MANUAL"},{"id":"EID6eea7ffb-0175-1000-5930-d55abb7d1acc","testStepResults":{"TestStepResult":{"id":"EID6eea800d-0175-1000-5804-4bddaba999bd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea80f8-0175-1000-a7ee-7f159b181a1e","parent":{"ref":"EID6eea800d-0175-1000-5804-4bddaba999bd"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea80f8-0175-1000-45ef-c7d8aa3f7812","parent":{"ref":"EID6eea800d-0175-1000-5804-4bddaba999bd"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea80f8-0175-1000-915d-d30f62d77b0d","parent":{"ref":"EID6eea800d-0175-1000-5804-4bddaba999bd"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea80f8-0175-1000-0858-1732f78d3a17","parent":{"ref":"EID6eea800d-0175-1000-5804-4bddaba999bd"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8ce071c-f73a-40ce-8e33-e4b10dc390cf"},{"ref":"EIDfe5c8785-d1cc-40dd-afda-8b1675f8c42c"},{"ref":"EID2f3ceeca-f7ff-4c7e-9715-5f0b2faf4480"}]},"parent":{"ref":"EID6eea7ffb-0175-1000-5930-d55abb7d1acc"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:14:23Z","duration":90,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:14:23Z","duration":254,"status":"PASSED"},{"id":"EID6eea80f9-0175-1000-83be-ed1a02569c1a","testStepResults":{"TestStepResult":{"id":"EID6eea80f9-0175-1000-6980-7ba7b5012ed3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8201-0175-1000-d0b6-92631459a626","parent":{"ref":"EID6eea80f9-0175-1000-6980-7ba7b5012ed3"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea8201-0175-1000-232a-f501ac645ede","parent":{"ref":"EID6eea80f9-0175-1000-6980-7ba7b5012ed3"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea8201-0175-1000-42aa-0a6983928b24","parent":{"ref":"EID6eea80f9-0175-1000-6980-7ba7b5012ed3"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6eea8201-0175-1000-e93e-6bbaaa1a0c34","parent":{"ref":"EID6eea80f9-0175-1000-6980-7ba7b5012ed3"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:14:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6fef0ce1-52aa-41b3-b91b-b704922f720d"},{"ref":"EIDdda90015-4b60-489f-b32c-2dd98ce17e85"},{"ref":"EID4e2b722e-0cdf-4be7-9ece-37f4058ef501"}]},"parent":{"ref":"EID6eea80f9-0175-1000-83be-ed1a02569c1a"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:14:23Z","duration":118,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:14:23Z","duration":264,"status":"PASSED"},{"id":"EID6eea8201-0175-1000-4611-044f092abc10","testStepResults":{"TestStepResult":{"id":"EID6eea8201-0175-1000-58d2-61e59036db4b","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID1c45e21b-65ab-4b33-932f-4c153778bad4"},{"ref":"EID7949a676-e0f3-48a2-91b9-6b58ac86123e"},{"ref":"EID7d9f0919-912a-4180-84df-7bd717e7765c"},{"ref":"EID9134a581-d020-4c95-be79-3a6198bcea79"},{"ref":"EIDa9587501-55a0-48a8-8cca-fd0e14151bef"},{"ref":"EID3005e13c-b34c-4c2f-8780-4627f8cbc819"},{"ref":"EIDafe9e74b-d3bc-4af4-8458-659cc6464923"},{"ref":"EIDeb536c6f-2ef5-4abe-be7f-444534b27dba"},{"ref":"EID8826586d-060e-40b2-ad8c-e1385c83a7fe"}]},"parent":{"ref":"EID6eea8201-0175-1000-4611-044f092abc10"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:14:23Z","duration":668,"status":"SKIPPED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:14:23Z","duration":846,"status":"SKIPPED"},{"id":"EID6eea854f-0175-1000-0faa-0c4f605dca1f","testStepResults":{"TestStepResult":{"id":"EID6eea854f-0175-1000-91ca-4e4d8eb8f966","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea860b-0175-1000-2c42-558df6806737","parent":{"ref":"EID6eea854f-0175-1000-91ca-4e4d8eb8f966"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:14:24Z","duration":0,"status":"PASSED"},{"id":"EID6eea860b-0175-1000-7729-05df57ebd42b","parent":{"ref":"EID6eea854f-0175-1000-91ca-4e4d8eb8f966"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:14:24Z","duration":0,"status":"PASSED"},{"id":"EID6eea860b-0175-1000-fa89-dc16349279a0","parent":{"ref":"EID6eea854f-0175-1000-91ca-4e4d8eb8f966"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:14:24Z","duration":0,"status":"PASSED"},{"id":"EID6eea860b-0175-1000-81e6-d743f5973673","parent":{"ref":"EID6eea854f-0175-1000-91ca-4e4d8eb8f966"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:14:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7e5fa6d9-c5b4-4a99-a334-eb27b00a0670"},{"ref":"EID3e09286c-2040-4fc5-b0b4-2a393aaed862"},{"ref":"EID93137f87-ae9e-4199-bcd5-e62744c8ad2c"}]},"parent":{"ref":"EID6eea854f-0175-1000-0faa-0c4f605dca1f"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:14:24Z","duration":62,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:14:24Z","duration":188,"status":"PASSED"},{"id":"EID6eea860b-0175-1000-2f79-231ea63236fc","testStepResults":{"TestStepResult":{"id":"EID6eea860b-0175-1000-319b-3cd0ed42de61","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8733-0175-1000-b25e-138fd4b17a74","parent":{"ref":"EID6eea860b-0175-1000-319b-3cd0ed42de61"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8733-0175-1000-0ff5-48a2d4d4e0b5","parent":{"ref":"EID6eea860b-0175-1000-319b-3cd0ed42de61"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8733-0175-1000-9af9-bec4bb6dca34","parent":{"ref":"EID6eea860b-0175-1000-319b-3cd0ed42de61"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8733-0175-1000-ee0c-2f0616626d61","parent":{"ref":"EID6eea860b-0175-1000-319b-3cd0ed42de61"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8733-0175-1000-b271-0993079ec018","parent":{"ref":"EID6eea860b-0175-1000-319b-3cd0ed42de61"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8733-0175-1000-1f43-9315ff6fc95d","parent":{"ref":"EID6eea860b-0175-1000-319b-3cd0ed42de61"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1769ee7d-31f7-447c-b17c-1ae37b2c2338"},{"ref":"EID1e1b9864-18c3-4723-93b9-ee6c93fbd869"},{"ref":"EID57df87a0-f10f-4b20-99d1-a3bc7ca6f872"}]},"parent":{"ref":"EID6eea860b-0175-1000-2f79-231ea63236fc"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:14:24Z","duration":71,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:14:24Z","duration":296,"status":"PASSED"},{"id":"EID6eea8733-0175-1000-936e-838798d5c9a7","testStepResults":{"TestStepResult":{"id":"EID6eea8733-0175-1000-8315-79a7fe5591b7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8845-0175-1000-f6f3-ee76dba5733f","parent":{"ref":"EID6eea8733-0175-1000-8315-79a7fe5591b7"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8845-0175-1000-d7ce-066a1d4e9bed","parent":{"ref":"EID6eea8733-0175-1000-8315-79a7fe5591b7"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8845-0175-1000-363e-3a32fc95b292","parent":{"ref":"EID6eea8733-0175-1000-8315-79a7fe5591b7"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8845-0175-1000-2263-6747ef13077e","parent":{"ref":"EID6eea8733-0175-1000-8315-79a7fe5591b7"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8845-0175-1000-e706-f898a9ede450","parent":{"ref":"EID6eea8733-0175-1000-8315-79a7fe5591b7"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8845-0175-1000-a556-9210a21a54be","parent":{"ref":"EID6eea8733-0175-1000-8315-79a7fe5591b7"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID800ddd9a-5f4c-4383-98fc-cf6ff3bc4483"},{"ref":"EID1e585f6f-0946-458e-b7bf-3159e0d9e03e"},{"ref":"EID0239f8c7-1746-4456-93eb-a9f9d6af830a"}]},"parent":{"ref":"EID6eea8733-0175-1000-936e-838798d5c9a7"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:14:25Z","duration":89,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:14:25Z","duration":275,"status":"PASSED"},{"id":"EID6eea8846-0175-1000-529a-8dd32e347125","testStepResults":{"TestStepResult":{"id":"EID6eea8846-0175-1000-802f-b85a46e794ea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8986-0175-1000-81ea-a0db56cf4de6","parent":{"ref":"EID6eea8846-0175-1000-802f-b85a46e794ea"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8986-0175-1000-5cf3-95a25060077b","parent":{"ref":"EID6eea8846-0175-1000-802f-b85a46e794ea"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8986-0175-1000-9538-903d892fcb06","parent":{"ref":"EID6eea8846-0175-1000-802f-b85a46e794ea"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"},{"id":"EID6eea8986-0175-1000-a71c-fbb6545db8be","parent":{"ref":"EID6eea8846-0175-1000-802f-b85a46e794ea"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:14:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb7a35471-5c58-47b9-841c-16666fe9d538"},{"ref":"EIDed0f54c3-6b2c-4ff6-bf50-9e847e5ecfa7"},{"ref":"EID5eac6bc3-09c0-43d9-83dd-4d5412b9c40a"}]},"parent":{"ref":"EID6eea8846-0175-1000-529a-8dd32e347125"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:14:25Z","duration":128,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:14:25Z","duration":321,"status":"PASSED"},{"id":"EID6eea8987-0175-1000-056b-ef2200a7674e","testStepResults":{"TestStepResult":[{"id":"EID6eea8987-0175-1000-6a78-41574bb4f5a4","attachments":{"attachment":[{"ref":"EIDd87abb7d-03aa-4403-8c59-088b23fc8b12"},{"ref":"EIDc6ef5c2e-f5c6-411a-b389-0d29631ba3f2"},{"ref":"EID1065d6a0-8711-4330-b286-8cdea56877ad"},{"ref":"EID75845604-b844-4aed-b50d-6d71935f6963"}]},"parent":{"ref":"EID6eea8987-0175-1000-056b-ef2200a7674e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:14:25Z","duration":440,"status":"PASSED"},{"id":"EID6eea8b8f-0175-1000-6be5-4e89c6aa99cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8caf-0175-1000-cdf4-77194cfca8d6","parent":{"ref":"EID6eea8b8f-0175-1000-6be5-4e89c6aa99cd"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8caf-0175-1000-33dd-d6d71a21c70c","parent":{"ref":"EID6eea8b8f-0175-1000-6be5-4e89c6aa99cd"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8caf-0175-1000-f158-868c99d6f50c","parent":{"ref":"EID6eea8b8f-0175-1000-6be5-4e89c6aa99cd"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8caf-0175-1000-9a68-7590a7b7d586","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6eea8b8f-0175-1000-6be5-4e89c6aa99cd"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:14:26Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3575437d-05c6-40de-9ce6-77b7b2ba2506"},{"ref":"EIDf60745ff-d22f-4c74-877f-70e0b87fec3b"},{"ref":"EID9b9fb38d-a12e-45f6-8f21-5ea285de4b27"}]},"parent":{"ref":"EID6eea8987-0175-1000-056b-ef2200a7674e"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:14:26Z","duration":114,"status":"FAILED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:14:25Z","duration":817,"status":"FAILED"},{"id":"EID6eea8cb8-0175-1000-f308-9fa20478a09f","testStepResults":{"TestStepResult":{"id":"EID6eea8cb8-0175-1000-1831-a366e0191556","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8d6d-0175-1000-deea-98473803265c","parent":{"ref":"EID6eea8cb8-0175-1000-1831-a366e0191556"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8d6d-0175-1000-7667-0673890c6f32","parent":{"ref":"EID6eea8cb8-0175-1000-1831-a366e0191556"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8d6d-0175-1000-f73e-2255632e7f9a","parent":{"ref":"EID6eea8cb8-0175-1000-1831-a366e0191556"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8d6d-0175-1000-a700-74c3367c0e97","parent":{"ref":"EID6eea8cb8-0175-1000-1831-a366e0191556"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd62d6f72-fd49-4161-9ed8-5a6e59a94650"},{"ref":"EID0a0bad58-61a5-4770-ad3c-d5dd753db844"},{"ref":"EID3fb827f9-c917-4bcf-bdc1-c5cdd8a744f6"}]},"parent":{"ref":"EID6eea8cb8-0175-1000-f308-9fa20478a09f"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:14:26Z","duration":74,"status":"PASSED"}},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:14:26Z","duration":181,"status":"PASSED"},{"id":"EID6eea8d6d-0175-1000-0627-fbab96fcfb8e","testStepResults":{"TestStepResult":[{"id":"EID6eea8d6d-0175-1000-0438-1b14f821fb45","parent":{"ref":"EID6eea8d6d-0175-1000-0627-fbab96fcfb8e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8d6d-0175-1000-70fd-7c9adc04b7dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8e2a-0175-1000-e397-cbe13ae055ee","parent":{"ref":"EID6eea8d6d-0175-1000-70fd-7c9adc04b7dd"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8e2a-0175-1000-7f50-2885657f8e72","parent":{"ref":"EID6eea8d6d-0175-1000-70fd-7c9adc04b7dd"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8e2a-0175-1000-badd-ba9a99142c2a","parent":{"ref":"EID6eea8d6d-0175-1000-70fd-7c9adc04b7dd"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"PASSED"},{"id":"EID6eea8e2a-0175-1000-758f-24c04b0b8c91","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eea8d6d-0175-1000-70fd-7c9adc04b7dd"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:14:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1f8c0e34-e6c1-4a09-969d-3c0d5893ecb8"},{"ref":"EID944d28f3-d222-4697-8e49-04bb273c878e"},{"ref":"EID699c8b82-f473-4c92-aa39-68ff6b67303e"}]},"parent":{"ref":"EID6eea8d6d-0175-1000-0627-fbab96fcfb8e"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:14:26Z","duration":45,"status":"FAILED"}]},"parent":{"ref":"EID6eea72f3-0175-1000-f982-b88a543e7914"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:14:26Z","duration":208,"status":"FAILED"}]},"parent":{"ref":"EID39d8aeff-8346-4ae0-856c-c6ed4555b479"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:14:20Z","duration":6986,"status":"FAILED"},{"id":"EID6eea8e3d-0175-1000-405b-273946ad17ad","testCaseResults":{"TestCaseResult":[{"id":"EID6eea8e3e-0175-1000-b00e-b9c00e13472c","testStepResults":{"TestStepResult":[{"id":"EID6eea8e3e-0175-1000-8993-bdf18bc31cba","parent":{"ref":"EID6eea8e3e-0175-1000-b00e-b9c00e13472c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea8e3e-0175-1000-25a4-4273b776a075","parent":{"ref":"EID6eea8e3e-0175-1000-b00e-b9c00e13472c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:14:27Z","duration":74,"status":"PASSED"},{"id":"EID6eea8e3e-0175-1000-ca0c-af47ae077bda","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8eca-0175-1000-9307-2def3281d2b4","parent":{"ref":"EID6eea8e3e-0175-1000-ca0c-af47ae077bda"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea8eca-0175-1000-d5a6-c44806046ac9","parent":{"ref":"EID6eea8e3e-0175-1000-ca0c-af47ae077bda"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea8eca-0175-1000-e00d-f74b6cc9d459","parent":{"ref":"EID6eea8e3e-0175-1000-ca0c-af47ae077bda"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c1be1a3-32be-4caf-85ac-c531642f468f"},{"ref":"EID57c44f4f-31d3-45d0-a4e6-b8a9c81fa20b"},{"ref":"EID65c261e5-4ee3-4ec6-bb41-961207904e9b"}]},"parent":{"ref":"EID6eea8e3e-0175-1000-b00e-b9c00e13472c"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:14:27Z","duration":43,"status":"PASSED"},{"id":"EID6eea8eca-0175-1000-4dce-f31043eae8b1","attachments":{"attachment":{"ref":"EIDf9255820-0fe0-4f49-8256-d6e1be644b87"}},"parent":{"ref":"EID6eea8e3e-0175-1000-b00e-b9c00e13472c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea8ed7-0175-1000-0fe8-37c9bc626955","parent":{"ref":"EID6eea8e3e-0175-1000-b00e-b9c00e13472c"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:14:27Z","duration":59,"status":"PASSED"}]},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:14:27Z","duration":213,"status":"PASSED"},{"id":"EID6eea8f13-0175-1000-8b85-379207ed219a","testStepResults":{"TestStepResult":[{"id":"EID6eea8f13-0175-1000-9be5-373cc05375a4","parent":{"ref":"EID6eea8f13-0175-1000-8b85-379207ed219a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:14:27Z","duration":116,"status":"PASSED"},{"id":"EID6eea8f13-0175-1000-11f1-b4958f17151f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea8f8a-0175-1000-7768-9ea8cf78652e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea8f13-0175-1000-11f1-b4958f17151f"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:14:27Z","duration":11,"status":"FAILED"},{"id":"EID6eea8f95-0175-1000-0a3c-6104e67e7465","parent":{"ref":"EID6eea8f13-0175-1000-11f1-b4958f17151f"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea8f95-0175-1000-11a5-3125a14dbccf","parent":{"ref":"EID6eea8f13-0175-1000-11f1-b4958f17151f"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea8f95-0175-1000-e9db-c562a6bdeb49","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6eea8f13-0175-1000-11f1-b4958f17151f"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"FAILED"},{"id":"EID6eea8f95-0175-1000-80cf-af0a07de28b4","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6eea8f13-0175-1000-11f1-b4958f17151f"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8da7767b-6f15-4f21-8afa-fd2701a148c3"},{"ref":"EID6966b901-f058-44db-8618-e01bdb6dd196"},{"ref":"EID24602bc2-6c22-4f59-9b5c-40710fffc7f7"}]},"parent":{"ref":"EID6eea8f13-0175-1000-8b85-379207ed219a"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:14:27Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:14:27Z","duration":130,"status":"FAILED"},{"id":"EID6eea8f95-0175-1000-a4d3-8d9ce83f48d8","testStepResults":{"TestStepResult":{"id":"EID6eea8f95-0175-1000-08fa-4746c3419be8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea9057-0175-1000-65a3-f303e11b3b03","parent":{"ref":"EID6eea8f95-0175-1000-08fa-4746c3419be8"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:14:27Z","duration":1,"status":"PASSED"},{"id":"EID6eea9058-0175-1000-78eb-3b10f336552e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea8f95-0175-1000-08fa-4746c3419be8"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:14:27Z","duration":13,"status":"FAILED"},{"id":"EID6eea9066-0175-1000-b137-4299568c9193","parent":{"ref":"EID6eea8f95-0175-1000-08fa-4746c3419be8"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID032296be-0629-4fd2-8704-3cd75ff741ab"},{"ref":"EID8ee30a0f-38e9-4916-a161-432fa2169735"},{"ref":"EID18e9885c-cb06-45f6-9743-1c3c6bbe89fa"}]},"parent":{"ref":"EID6eea8f95-0175-1000-a4d3-8d9ce83f48d8"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:14:27Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:14:27Z","duration":219,"status":"FAILED"},{"id":"EID6eea9070-0175-1000-5747-97c2cb84dd10","testStepResults":{"TestStepResult":{"id":"EID6eea9070-0175-1000-9e2b-0389d9603c5a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea90d7-0175-1000-ac95-2b02a15d5138","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eea9070-0175-1000-9e2b-0389d9603c5a"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"FAILED"},{"id":"EID6eea90d7-0175-1000-a0a6-81fc35aa78ab","parent":{"ref":"EID6eea9070-0175-1000-9e2b-0389d9603c5a"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea90d7-0175-1000-d925-15236bed90fd","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea9070-0175-1000-9e2b-0389d9603c5a"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:14:27Z","duration":14,"status":"FAILED"},{"id":"EID6eea90e6-0175-1000-a6c8-c20ad59ce20b","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6eea9070-0175-1000-9e2b-0389d9603c5a"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID985f4603-8f27-439d-8304-07393d0a8316"},{"ref":"EID3f2a2c7f-debd-475f-a8d1-a21a1f6cef7d"},{"ref":"EID34e85847-e5c3-45ab-91b8-b3a36f8a3593"}]},"parent":{"ref":"EID6eea9070-0175-1000-5747-97c2cb84dd10"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:14:27Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:14:27Z","duration":118,"status":"FAILED"},{"id":"EID6eea90e6-0175-1000-7b2a-9dca7e551f40","testStepResults":{"TestStepResult":{"id":"EID6eea90e6-0175-1000-69d4-1f0e4ce05a27","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea914f-0175-1000-f758-2ed2be14cd79","parent":{"ref":"EID6eea90e6-0175-1000-69d4-1f0e4ce05a27"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea914f-0175-1000-fdde-1b1f4090fc09","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea90e6-0175-1000-69d4-1f0e4ce05a27"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:14:27Z","duration":13,"status":"FAILED"},{"id":"EID6eea915c-0175-1000-e796-99746465840c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6eea90e6-0175-1000-69d4-1f0e4ce05a27"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID07e28404-c914-4cbb-9468-53657893e486"},{"ref":"EID28a555fb-44f8-4c22-95e6-087a29eea2c5"},{"ref":"EIDa62ebd1d-1ad4-46ea-906b-8d8b338c7ffc"}]},"parent":{"ref":"EID6eea90e6-0175-1000-7b2a-9dca7e551f40"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:14:27Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:14:27Z","duration":119,"status":"FAILED"},{"id":"EID6eea915d-0175-1000-a12e-22da47298e86","testStepResults":{"TestStepResult":{"id":"EID6eea915d-0175-1000-1609-09a183c2bbe1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea91b9-0175-1000-6dde-4962be8f29fb","parent":{"ref":"EID6eea915d-0175-1000-1609-09a183c2bbe1"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6eea91b9-0175-1000-f0d2-4bb3faaa7d33","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea915d-0175-1000-1609-09a183c2bbe1"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:14:27Z","duration":10,"status":"FAILED"},{"id":"EID6eea91c3-0175-1000-f7fd-40ad7c450538","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eea915d-0175-1000-1609-09a183c2bbe1"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:14:27Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID69396b64-7b97-4402-bcf2-2765df75af35"},{"ref":"EID6a0fefba-7776-4f58-9438-34706cf800b5"},{"ref":"EID49eb7e1d-3727-4ada-88f8-0bdc3e519ab3"}]},"parent":{"ref":"EID6eea915d-0175-1000-a12e-22da47298e86"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:14:27Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:14:27Z","duration":102,"status":"FAILED"},{"id":"EID6eea91c4-0175-1000-a336-48462a5df7a7","testStepResults":{"TestStepResult":{"id":"EID6eea91c4-0175-1000-b0a1-11fa5fdb9dbb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea9236-0175-1000-74fc-da60018b079f","parent":{"ref":"EID6eea91c4-0175-1000-b0a1-11fa5fdb9dbb"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea9236-0175-1000-7f4e-5a9d612daf20","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea91c4-0175-1000-b0a1-11fa5fdb9dbb"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:14:28Z","duration":14,"status":"FAILED"},{"id":"EID6eea9244-0175-1000-57a9-63d590783cd0","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6eea91c4-0175-1000-b0a1-11fa5fdb9dbb"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"FAILED"},{"id":"EID6eea9245-0175-1000-cf10-11069630add8","parent":{"ref":"EID6eea91c4-0175-1000-b0a1-11fa5fdb9dbb"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea9245-0175-1000-e46c-c3f123d23611","parent":{"ref":"EID6eea91c4-0175-1000-b0a1-11fa5fdb9dbb"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf6aa2311-7b10-4c03-906d-a89bed0f9968"},{"ref":"EIDeafc9821-3f8a-46cc-95bd-5c63ad86d224"},{"ref":"EID12db92bb-e001-493a-b2a8-99f297034ce8"}]},"parent":{"ref":"EID6eea91c4-0175-1000-a336-48462a5df7a7"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:14:27Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:14:27Z","duration":129,"status":"FAILED"},{"id":"EID6eea9245-0175-1000-f7d8-15ffb645b919","testStepResults":{"TestStepResult":{"id":"EID6eea9245-0175-1000-a3ed-944d95d26676","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea929a-0175-1000-a781-1633de533815","parent":{"ref":"EID6eea9245-0175-1000-a3ed-944d95d26676"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea929a-0175-1000-945c-d0064064979d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea9245-0175-1000-a3ed-944d95d26676"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:14:28Z","duration":12,"status":"FAILED"},{"id":"EID6eea92a6-0175-1000-ac4e-7ff048be966d","parent":{"ref":"EID6eea9245-0175-1000-a3ed-944d95d26676"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb23e2df2-c2b1-47fe-8690-e15bbb14c5f9"},{"ref":"EIDb05ecf47-192d-497c-bc78-deea6a7a103b"},{"ref":"EID42fef613-5eb6-4ed3-9083-dd5402a1e518"}]},"parent":{"ref":"EID6eea9245-0175-1000-f7d8-15ffb645b919"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:14:28Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:14:28Z","duration":97,"status":"FAILED"},{"id":"EID6eea92a6-0175-1000-310b-490f6f71bd47","testStepResults":{"TestStepResult":{"id":"EID6eea92a6-0175-1000-3d4f-912d81e0d3e8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea9312-0175-1000-1316-8fe0e5cbee29","parent":{"ref":"EID6eea92a6-0175-1000-3d4f-912d81e0d3e8"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea9312-0175-1000-cfd6-c1cd8407db5f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea92a6-0175-1000-3d4f-912d81e0d3e8"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:14:28Z","duration":13,"status":"FAILED"},{"id":"EID6eea9320-0175-1000-d30a-315b92a09604","parent":{"ref":"EID6eea92a6-0175-1000-3d4f-912d81e0d3e8"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID362b0116-b718-4b2c-8ec8-66bf77adb206"},{"ref":"EID003cb91d-65cc-4530-a938-b94f017067cf"},{"ref":"EID1772396e-a482-46e6-aaa7-5bc0884ceba8"}]},"parent":{"ref":"EID6eea92a6-0175-1000-310b-490f6f71bd47"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:14:28Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:14:28Z","duration":122,"status":"FAILED"},{"id":"EID6eea9320-0175-1000-7487-0e2670c1d4fc","testStepResults":{"TestStepResult":{"id":"EID6eea9320-0175-1000-79bc-6ee7e61334f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea93b2-0175-1000-1e8c-e5bc1f4ee7a3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea9320-0175-1000-79bc-6ee7e61334f3"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:14:28Z","duration":14,"status":"FAILED"},{"id":"EID6eea93c0-0175-1000-497b-d4dccaf44003","parent":{"ref":"EID6eea9320-0175-1000-79bc-6ee7e61334f3"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea93c0-0175-1000-a4b0-c250f4e91daf","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea9320-0175-1000-79bc-6ee7e61334f3"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"FAILED"},{"id":"EID6eea93c0-0175-1000-5a15-53257eacf708","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6eea9320-0175-1000-79bc-6ee7e61334f3"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa32614ba-cf13-4216-8f46-07e3fb518710"},{"ref":"EID3ee3234f-be2d-46bf-aef0-64f64f07ff86"},{"ref":"EID996c612b-863e-4546-9d39-0805f8260e6d"}]},"parent":{"ref":"EID6eea9320-0175-1000-7487-0e2670c1d4fc"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:14:28Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:14:28Z","duration":160,"status":"FAILED"},{"id":"EID6eea93c0-0175-1000-8a4d-ab21ea5960e1","testStepResults":{"TestStepResult":{"id":"EID6eea93c0-0175-1000-b090-bc1fb8b243ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea944f-0175-1000-fe16-2868ee4bc194","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea93c0-0175-1000-b090-bc1fb8b243ae"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:14:28Z","duration":12,"status":"FAILED"},{"id":"EID6eea945b-0175-1000-90fb-cdc68d5df5ce","parent":{"ref":"EID6eea93c0-0175-1000-b090-bc1fb8b243ae"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea945b-0175-1000-1236-6b291c447d35","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea93c0-0175-1000-b090-bc1fb8b243ae"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"FAILED"},{"id":"EID6eea945b-0175-1000-937a-2912862ef102","parent":{"ref":"EID6eea93c0-0175-1000-b090-bc1fb8b243ae"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda826c2b-56f4-4695-a692-30e54535a0c1"},{"ref":"EIDb837fc45-f24b-4524-91dc-89b0071cbbcc"},{"ref":"EID7b8e2e13-4735-429b-9cdb-98ccc5740999"}]},"parent":{"ref":"EID6eea93c0-0175-1000-8a4d-ab21ea5960e1"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:14:28Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:14:28Z","duration":155,"status":"FAILED"},{"id":"EID6eea945b-0175-1000-150a-ad2b583a77f3","testStepResults":{"TestStepResult":[{"id":"EID6eea945c-0175-1000-f852-db9eb0661f7b","parent":{"ref":"EID6eea945b-0175-1000-150a-ad2b583a77f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea945c-0175-1000-7f8d-0d428df31db2","parent":{"ref":"EID6eea945b-0175-1000-150a-ad2b583a77f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:14:28Z","duration":214,"status":"PASSED"},{"id":"EID6eea945c-0175-1000-271a-5f8c1bff3e11","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea94f9-0175-1000-070e-6bd71486de44","parent":{"ref":"EID6eea945c-0175-1000-271a-5f8c1bff3e11"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea94f9-0175-1000-ada2-35a3fd61d59b","parent":{"ref":"EID6eea945c-0175-1000-271a-5f8c1bff3e11"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea94f9-0175-1000-a702-0ba0f934b8da","parent":{"ref":"EID6eea945c-0175-1000-271a-5f8c1bff3e11"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea94f9-0175-1000-5245-7dc17d17f580","parent":{"ref":"EID6eea945c-0175-1000-271a-5f8c1bff3e11"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9890a07d-ed07-4c96-a10a-4f50b7919921"},{"ref":"EID02830d0a-d1ce-4747-b26a-e4fea31d7705"},{"ref":"EIDe8b6341a-791b-48f5-a938-51d2b64e6b56"}]},"parent":{"ref":"EID6eea945b-0175-1000-150a-ad2b583a77f3"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:14:28Z","duration":35,"status":"PASSED"},{"id":"EID6eea94f9-0175-1000-95db-fab35c1e8ab8","attachments":{"attachment":{"ref":"EIDd4d29495-3be5-4ed0-a466-6f53e9025f12"}},"parent":{"ref":"EID6eea945b-0175-1000-150a-ad2b583a77f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:14:28Z","duration":3,"status":"PASSED"},{"id":"EID6eea951a-0175-1000-64bc-316f2f9d838e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea958f-0175-1000-f97e-87baacef1528","parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea958f-0175-1000-cf14-e4d03d343509","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:14:28Z","duration":13,"status":"FAILED"},{"id":"EID6eea959c-0175-1000-44b3-4787c005eeb0","parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea959c-0175-1000-080f-31bfcbd58507","parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea959c-0175-1000-a3f0-6ecc25d4d386","parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea959c-0175-1000-df0f-3138351d3bfb","parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea959c-0175-1000-fc73-842358dd0943","parent":{"ref":"EID6eea951a-0175-1000-64bc-316f2f9d838e"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfbf7cf80-11fb-4fa9-8dda-dab963049f14"},{"ref":"EIDf74d2282-8ddb-4e83-b599-f707744b71d1"},{"ref":"EIDf76ad23a-fdf2-470d-973a-246544aaa276"}]},"parent":{"ref":"EID6eea945b-0175-1000-150a-ad2b583a77f3"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:14:28Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:14:28Z","duration":321,"status":"FAILED"},{"id":"EID6eea959c-0175-1000-ba84-a6f6bc9c5c8e","testStepResults":{"TestStepResult":[{"id":"EID6eea959c-0175-1000-39c6-ae53a272c9d7","parent":{"ref":"EID6eea959c-0175-1000-ba84-a6f6bc9c5c8e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6eea959c-0175-1000-c226-c35db1ad89b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea9686-0175-1000-fb56-22d49e57e9bd","parent":{"ref":"EID6eea959c-0175-1000-c226-c35db1ad89b5"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea9686-0175-1000-290f-9f9b57e139ff","parent":{"ref":"EID6eea959c-0175-1000-c226-c35db1ad89b5"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea9686-0175-1000-ea0f-7894189e2d6e","parent":{"ref":"EID6eea959c-0175-1000-c226-c35db1ad89b5"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea9686-0175-1000-5ed0-d80a5ba94c2e","parent":{"ref":"EID6eea959c-0175-1000-c226-c35db1ad89b5"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a61f74f-2095-49a3-861e-f4b057047e79"},{"ref":"EIDe7ad8a43-ec2c-4a56-98b8-1432120227ff"},{"ref":"EID6358a653-8887-49e1-9c08-0ecbdb71ae49"}]},"parent":{"ref":"EID6eea959c-0175-1000-ba84-a6f6bc9c5c8e"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:14:28Z","duration":143,"status":"PASSED"},{"id":"EID6eea9686-0175-1000-dd5c-e2f46355021a","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eea96a8-0175-1000-8159-718476b14789","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea97bc-0175-1000-e95e-da0277ed5669","parent":{"ref":"EID6eea96a8-0175-1000-8159-718476b14789"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea97bc-0175-1000-0179-942152d376a3","parent":{"ref":"EID6eea96a8-0175-1000-8159-718476b14789"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea97bc-0175-1000-46b3-9740813547f2","parent":{"ref":"EID6eea96a8-0175-1000-8159-718476b14789"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdf832f88-ecc7-4512-885a-a63de10b1355"},{"ref":"EIDd4e67911-62ee-4862-b1df-d9a8a15a3431"},{"ref":"EIDeaa3a5d8-c171-4d3f-8181-35afb3224ede"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:29Z","duration":162,"status":"PASSED"},{"id":"EID6eea97bf-0175-1000-642f-78f3fa4a885c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea9890-0175-1000-8ee6-f06535101c7c","parent":{"ref":"EID6eea97bf-0175-1000-642f-78f3fa4a885c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea9890-0175-1000-10e0-50002f58efe8","parent":{"ref":"EID6eea97bf-0175-1000-642f-78f3fa4a885c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea9890-0175-1000-e381-a564e166816c","parent":{"ref":"EID6eea97bf-0175-1000-642f-78f3fa4a885c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9de16cee-661b-4ff1-8a51-ba06f4adb409"},{"ref":"EIDc6c10e9b-33b5-478e-bdb7-bee9498b083a"},{"ref":"EID52fef296-e023-4350-92e3-d3e0f814b78e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:29Z","duration":156,"status":"PASSED"},{"id":"EID6eea9892-0175-1000-4b16-5659e0a49b11","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea995d-0175-1000-4404-e923c005a276","parent":{"ref":"EID6eea9892-0175-1000-4b16-5659e0a49b11"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea995d-0175-1000-621c-f9bb4e559c7e","parent":{"ref":"EID6eea9892-0175-1000-4b16-5659e0a49b11"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea995d-0175-1000-7de6-aa343d5b9627","parent":{"ref":"EID6eea9892-0175-1000-4b16-5659e0a49b11"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcf052814-9641-4c46-9bb1-df4d2a1e3b34"},{"ref":"EIDda4ce89d-16a2-4609-b69e-b8a778214284"},{"ref":"EID9298fece-c3d1-412a-b4ca-b1c7740fdc59"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:14:29Z","duration":152,"status":"PASSED"}]},"parent":{"ref":"EID6eea959c-0175-1000-ba84-a6f6bc9c5c8e"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:14:29Z","duration":728,"status":"PASSED"},{"id":"EID6eea995f-0175-1000-fc4c-e8d69350d109","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea99c1-0175-1000-8b6a-9914e98d8d95","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea995f-0175-1000-fc4c-e8d69350d109"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:14:29Z","duration":11,"status":"FAILED"},{"id":"EID6eea99cc-0175-1000-4fb7-30e6ffc61e70","parent":{"ref":"EID6eea995f-0175-1000-fc4c-e8d69350d109"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"},{"id":"EID6eea99cc-0175-1000-5ac4-ed579e7b498f","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea995f-0175-1000-fc4c-e8d69350d109"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"FAILED"},{"id":"EID6eea99cc-0175-1000-24d6-bef86a8a7fb0","parent":{"ref":"EID6eea995f-0175-1000-fc4c-e8d69350d109"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:14:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6823fcc0-cb17-4578-a8cc-32ac974416a5"},{"ref":"EID0bcf83c2-17ee-4d09-8b4c-514d51d06059"},{"ref":"EIDb3a417d1-6689-4574-b8ee-1e4fb573a246"}]},"parent":{"ref":"EID6eea959c-0175-1000-ba84-a6f6bc9c5c8e"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:14:29Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:14:28Z","duration":1081,"status":"FAILED"},{"id":"EID6eea99d5-0175-1000-5f41-d92151269e08","testStepResults":{"TestStepResult":{"id":"EID6eea99de-0175-1000-d9c6-4d062f7c1718","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eea9a58-0175-1000-f211-00defa8a2f02","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eea99de-0175-1000-d9c6-4d062f7c1718"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:14:30Z","duration":13,"status":"FAILED"},{"id":"EID6eea9a65-0175-1000-af2e-0df01f63c4cc","parent":{"ref":"EID6eea99de-0175-1000-d9c6-4d062f7c1718"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"PASSED"},{"id":"EID6eea9a65-0175-1000-48f9-7448d44ad177","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eea99de-0175-1000-d9c6-4d062f7c1718"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"FAILED"},{"id":"EID6eea9a65-0175-1000-239a-315b6c7a26d8","parent":{"ref":"EID6eea99de-0175-1000-d9c6-4d062f7c1718"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe3cb6b8f-4298-47dd-9666-5de251eb6dcd"},{"ref":"EID1a32c5d1-4698-4cd7-bfaf-7d8044b2f6d1"},{"ref":"EID8dd4d85e-24eb-4461-a73b-408b0e3c2702"}]},"parent":{"ref":"EID6eea99d5-0175-1000-5f41-d92151269e08"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:14:29Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6eea8e3d-0175-1000-405b-273946ad17ad"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:14:29Z","duration":144,"status":"FAILED"}]},"parent":{"ref":"EID39d8aeff-8346-4ae0-856c-c6ed4555b479"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:14:27Z","duration":3112,"status":"FAILED"},{"id":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d","testCaseResults":{"TestCaseResult":[{"id":"EID6eea9a65-0175-1000-c65b-41d609b40688","testStepResults":{"TestStepResult":{"id":"EID6eea9a65-0175-1000-5a0a-9cdce12cc407","parent":{"ref":"EID6eea9a65-0175-1000-c65b-41d609b40688"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"SKIPPED"},{"id":"EID6eea9a65-0175-1000-658b-c13f31d7c6f6","testStepResults":{"TestStepResult":{"id":"EID6eea9a65-0175-1000-8bea-a7dc732644ff","parent":{"ref":"EID6eea9a65-0175-1000-658b-c13f31d7c6f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"SKIPPED"},{"id":"EID6eea9a65-0175-1000-8ea8-a7642162a8e3","testStepResults":{"TestStepResult":{"id":"EID6eea9a6e-0175-1000-003a-10776bf875d2","parent":{"ref":"EID6eea9a65-0175-1000-8ea8-a7642162a8e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:14:30Z","duration":9,"status":"SKIPPED"},{"id":"EID6eea9a6e-0175-1000-afe0-a6ebb75df7ca","testStepResults":{"TestStepResult":{"id":"EID6eea9a6e-0175-1000-dda0-17a1473d905a","parent":{"ref":"EID6eea9a6e-0175-1000-afe0-a6ebb75df7ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"SKIPPED"},{"id":"EID6eea9a6e-0175-1000-8c18-5c784ab17432","testStepResults":{"TestStepResult":{"id":"EID6eea9a6e-0175-1000-d75c-bc7091585562","parent":{"ref":"EID6eea9a6e-0175-1000-8c18-5c784ab17432"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:14:30Z","duration":1,"status":"SKIPPED"},{"id":"EID6eea9a6f-0175-1000-52df-cc03bc818f44","testStepResults":{"TestStepResult":{"id":"EID6eea9a6f-0175-1000-ed5f-122485ee4456","parent":{"ref":"EID6eea9a6f-0175-1000-52df-cc03bc818f44"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"SKIPPED"},{"id":"EID6eea9a6f-0175-1000-5a77-d092b1fd4b9c","testStepResults":{"TestStepResult":{"id":"EID6eea9a6f-0175-1000-1c5c-72692fa11a3a","parent":{"ref":"EID6eea9a6f-0175-1000-5a77-d092b1fd4b9c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:14:30Z","duration":446,"status":"SKIPPED"}},"parent":{"ref":"EID6eea9a65-0175-1000-137c-aee8a4c55b8d"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:14:30Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID39d8aeff-8346-4ae0-856c-c6ed4555b479"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:14:30Z","duration":10,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID57c44f4f-31d3-45d0-a4e6-b8a9c81fa20b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID57c44f4f-31d3-45d0-a4e6-b8a9c81fa20b"}},{"type":"ServiceResponse","id":"EID6a0fefba-7776-4f58-9438-34706cf800b5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID6a0fefba-7776-4f58-9438-34706cf800b5"}},{"type":"ServiceResponse","id":"EIDf60745ff-d22f-4c74-877f-70e0b87fec3b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDf60745ff-d22f-4c74-877f-70e0b87fec3b"}},{"type":"Error","id":"EID06d61df1-386c-420b-862a-a031b1f4776a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID06d61df1-386c-420b-862a-a031b1f4776a"}},{"type":"ServiceEndpoint","id":"EID8da7767b-6f15-4f21-8afa-fd2701a148c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID5eac6bc3-09c0-43d9-83dd-4d5412b9c40a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7b8e2e13-4735-429b-9cdb-98ccc5740999","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID1769ee7d-31f7-447c-b17c-1ae37b2c2338","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID9134a581-d020-4c95-be79-3a6198bcea79","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID9134a581-d020-4c95-be79-3a6198bcea79"}},{"type":"ServiceResponse","id":"EIDdda90015-4b60-489f-b32c-2dd98ce17e85","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDdda90015-4b60-489f-b32c-2dd98ce17e85"}},{"type":"GetParameter","id":"EID42fef613-5eb6-4ed3-9083-dd5402a1e518","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID9890a07d-ed07-4c96-a10a-4f50b7919921","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID7949a676-e0f3-48a2-91b9-6b58ac86123e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID7949a676-e0f3-48a2-91b9-6b58ac86123e"}},{"type":"ServiceResponse","id":"EID601da86e-256f-4bdc-85a7-ad1e4b6455a9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID601da86e-256f-4bdc-85a7-ad1e4b6455a9"}},{"type":"ServiceEndpoint","id":"EID3575437d-05c6-40de-9ce6-77b7b2ba2506","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID9bcb5b12-d1d0-449a-8da1-b08d7f8a7619","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID9bcb5b12-d1d0-449a-8da1-b08d7f8a7619"}},{"type":"Message","id":"EIDeb536c6f-2ef5-4abe-be7f-444534b27dba","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDeb536c6f-2ef5-4abe-be7f-444534b27dba"}},{"type":"GetParameter","id":"EID0239f8c7-1746-4456-93eb-a9f9d6af830a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID34e85847-e5c3-45ab-91b8-b3a36f8a3593","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDb05ecf47-192d-497c-bc78-deea6a7a103b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDb05ecf47-192d-497c-bc78-deea6a7a103b"}},{"type":"ServiceResponse","id":"EIDed0f54c3-6b2c-4ff6-bf50-9e847e5ecfa7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDed0f54c3-6b2c-4ff6-bf50-9e847e5ecfa7"}},{"type":"ServiceEndpoint","id":"EIDcf052814-9641-4c46-9bb1-df4d2a1e3b34","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDbeee7628-3b4b-490c-8b37-c3f9291ae597","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDbeee7628-3b4b-490c-8b37-c3f9291ae597"}},{"type":"ServiceEndpoint","id":"EIDfbf7cf80-11fb-4fa9-8dda-dab963049f14","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6358a653-8887-49e1-9c08-0ecbdb71ae49","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID65c261e5-4ee3-4ec6-bb41-961207904e9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID1c45e21b-65ab-4b33-932f-4c153778bad4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID1c45e21b-65ab-4b33-932f-4c153778bad4"}},{"type":"ServiceResponse","id":"EID15d6f154-77a4-4e34-9da9-48e0a2057055","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID15d6f154-77a4-4e34-9da9-48e0a2057055"}},{"type":"ServiceEndpoint","id":"EID362b0116-b718-4b2c-8ec8-66bf77adb206","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDb3a417d1-6689-4574-b8ee-1e4fb573a246","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID1065d6a0-8711-4330-b286-8cdea56877ad","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID1065d6a0-8711-4330-b286-8cdea56877ad"}},{"type":"ServiceEndpoint","id":"EID032296be-0629-4fd2-8704-3cd75ff741ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID9b9fb38d-a12e-45f6-8f21-5ea285de4b27","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9298fece-c3d1-412a-b4ca-b1c7740fdc59","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDb7a35471-5c58-47b9-841c-16666fe9d538","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf6aa2311-7b10-4c03-906d-a89bed0f9968","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID2f3ceeca-f7ff-4c7e-9715-5f0b2faf4480","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EIDf66ccdee-9b9c-489b-9607-ad5c98cb186b","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDf66ccdee-9b9c-489b-9607-ad5c98cb186b"}},{"type":"GetParameter","id":"EID424d06af-49d3-4758-a694-bd345a67226e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf74d2282-8ddb-4e83-b599-f707744b71d1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDf74d2282-8ddb-4e83-b599-f707744b71d1"}},{"type":"GetParameter","id":"EIDdb389122-5209-4bbf-bd42-a89018c6cfb6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID24602bc2-6c22-4f59-9b5c-40710fffc7f7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID0982e3ce-84e6-49bc-bf77-08f98ab11120","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID49eb7e1d-3727-4ada-88f8-0bdc3e519ab3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID18e9885c-cb06-45f6-9743-1c3c6bbe89fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDeafc9821-3f8a-46cc-95bd-5c63ad86d224","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDeafc9821-3f8a-46cc-95bd-5c63ad86d224"}},{"type":"GetParameter","id":"EID8dd4d85e-24eb-4461-a73b-408b0e3c2702","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf76ad23a-fdf2-470d-973a-246544aaa276","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDf9255820-0fe0-4f49-8256-d6e1be644b87","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDf9255820-0fe0-4f49-8256-d6e1be644b87"}},{"type":"ServiceEndpoint","id":"EIDa80cd4a7-c4c4-4eb1-8ceb-31253775a05a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDb63097a9-42be-4634-a7fb-587570d2806a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDb63097a9-42be-4634-a7fb-587570d2806a"}},{"type":"ServiceEndpoint","id":"EID4777d509-cb75-4286-b061-2c2c5efa6f7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID74fb9cf0-4c90-451d-ab46-a8b75af7e1d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID74fb9cf0-4c90-451d-ab46-a8b75af7e1d4"}},{"type":"ServiceEndpoint","id":"EID985f4603-8f27-439d-8304-07393d0a8316","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDda826c2b-56f4-4695-a692-30e54535a0c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDda4ce89d-16a2-4609-b69e-b8a778214284","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDda4ce89d-16a2-4609-b69e-b8a778214284"}},{"type":"ServiceResponse","id":"EIDbb2ec87d-35a7-4504-838e-b09076af86c6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDbb2ec87d-35a7-4504-838e-b09076af86c6"}},{"type":"GetParameter","id":"EID9c03f891-9bd7-444a-8562-f52b4b5bed98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3fb827f9-c917-4bcf-bdc1-c5cdd8a744f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID47da14c0-ded1-45b1-a90f-e9dfcf97566b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4e2b722e-0cdf-4be7-9ece-37f4058ef501","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8ee30a0f-38e9-4916-a161-432fa2169735","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID8ee30a0f-38e9-4916-a161-432fa2169735"}},{"type":"Message","id":"EIDafe9e74b-d3bc-4af4-8458-659cc6464923","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDafe9e74b-d3bc-4af4-8458-659cc6464923"}},{"type":"Message","id":"EIDbfc68394-6d2e-4d90-8a93-316a9e073cd8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDbfc68394-6d2e-4d90-8a93-316a9e073cd8"}},{"type":"ServiceEndpoint","id":"EID4e438173-b172-4f2d-8600-3b7c59fe2da8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4390399e-c39a-485d-85b7-7cd1f7ef2414","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID4390399e-c39a-485d-85b7-7cd1f7ef2414"}},{"type":"ServiceResponse","id":"EIDfe5c8785-d1cc-40dd-afda-8b1675f8c42c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDfe5c8785-d1cc-40dd-afda-8b1675f8c42c"}},{"type":"Message","id":"EID8826586d-060e-40b2-ad8c-e1385c83a7fe","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID8826586d-060e-40b2-ad8c-e1385c83a7fe"}},{"type":"ServiceResponse","id":"EID02830d0a-d1ce-4747-b26a-e4fea31d7705","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID02830d0a-d1ce-4747-b26a-e4fea31d7705"}},{"type":"Message","id":"EID954c313f-d143-4ea0-89e0-e7a5fe62eccc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID954c313f-d143-4ea0-89e0-e7a5fe62eccc"}},{"type":"Error","id":"EID0f8702ad-139d-49b2-ab4f-7abfd35be535","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID0f8702ad-139d-49b2-ab4f-7abfd35be535"}},{"type":"Message","id":"EIDf779d5ed-f4fc-42db-9152-53a1288ec0a2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDf779d5ed-f4fc-42db-9152-53a1288ec0a2"}},{"type":"Error","id":"EIDf71cfb1d-0dcc-4499-a4d6-cbd740df0c3f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDf71cfb1d-0dcc-4499-a4d6-cbd740df0c3f"}},{"type":"ServiceResponse","id":"EID1e1b9864-18c3-4723-93b9-ee6c93fbd869","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID1e1b9864-18c3-4723-93b9-ee6c93fbd869"}},{"type":"Message","id":"EIDd87abb7d-03aa-4403-8c59-088b23fc8b12","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDd87abb7d-03aa-4403-8c59-088b23fc8b12"}},{"type":"ServiceEndpoint","id":"EIDd8ce071c-f73a-40ce-8e33-e4b10dc390cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1f8c0e34-e6c1-4a09-969d-3c0d5893ecb8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID93137f87-ae9e-4199-bcd5-e62744c8ad2c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID3005e13c-b34c-4c2f-8780-4627f8cbc819","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID3005e13c-b34c-4c2f-8780-4627f8cbc819"}},{"type":"ServiceEndpoint","id":"EID07e28404-c914-4cbb-9468-53657893e486","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID6966b901-f058-44db-8618-e01bdb6dd196","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID6966b901-f058-44db-8618-e01bdb6dd196"}},{"type":"GetParameter","id":"EIDe8b6341a-791b-48f5-a938-51d2b64e6b56","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9d97f5d4-63b4-46b0-93d3-c0ff180a32d1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb837fc45-f24b-4524-91dc-89b0071cbbcc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDb837fc45-f24b-4524-91dc-89b0071cbbcc"}},{"type":"ServiceEndpoint","id":"EIDe3cb6b8f-4298-47dd-9666-5de251eb6dcd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDa7ef8293-cf95-46ba-927b-987c124ccdf8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDa7ef8293-cf95-46ba-927b-987c124ccdf8"}},{"type":"Message","id":"EID39cf95a3-809f-40b6-a476-d08563f2b691","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID39cf95a3-809f-40b6-a476-d08563f2b691"}},{"type":"GetParameter","id":"EID699c8b82-f473-4c92-aa39-68ff6b67303e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID2f76804d-fe47-4682-893f-6943be8bb683","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID2f76804d-fe47-4682-893f-6943be8bb683"}},{"type":"ServiceResponse","id":"EIDc6c10e9b-33b5-478e-bdb7-bee9498b083a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDc6c10e9b-33b5-478e-bdb7-bee9498b083a"}},{"type":"ServiceEndpoint","id":"EIDda391eb0-62d0-447c-9be5-740af56ce405","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa0c3fb90-4103-405f-8861-05097c6d6aff","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDa0c3fb90-4103-405f-8861-05097c6d6aff"}},{"type":"Error","id":"EID2e6382ff-0af2-479c-a93f-33a635104b06","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID2e6382ff-0af2-479c-a93f-33a635104b06"}},{"type":"GetParameter","id":"EID996c612b-863e-4546-9d39-0805f8260e6d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDfc1b9a0d-b873-4d92-8d1d-843f35c21068","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID72302526-ce7f-42a8-9e0f-8ebc5b314505","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID72302526-ce7f-42a8-9e0f-8ebc5b314505"}},{"type":"Message","id":"EID82de7513-3f8f-461f-ac1a-083199d647b4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID82de7513-3f8f-461f-ac1a-083199d647b4"}},{"type":"Message","id":"EID75845604-b844-4aed-b50d-6d71935f6963","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID75845604-b844-4aed-b50d-6d71935f6963"}},{"type":"ServiceResponse","id":"EID3e09286c-2040-4fc5-b0b4-2a393aaed862","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID3e09286c-2040-4fc5-b0b4-2a393aaed862"}},{"type":"ServiceResponse","id":"EID86348430-da4e-49ed-a045-d2f12ebaffcf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID86348430-da4e-49ed-a045-d2f12ebaffcf"}},{"type":"Message","id":"EID0b69f150-4f56-432a-8e30-7916bc301dd8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID0b69f150-4f56-432a-8e30-7916bc301dd8"}},{"type":"ServiceEndpoint","id":"EIDd62d6f72-fd49-4161-9ed8-5a6e59a94650","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcae8cb65-f833-4e58-ba18-ef4607c43855","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EID7d9f0919-912a-4180-84df-7bd717e7765c","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID7d9f0919-912a-4180-84df-7bd717e7765c"}},{"type":"ServiceResponse","id":"EIDe7ad8a43-ec2c-4a56-98b8-1432120227ff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDe7ad8a43-ec2c-4a56-98b8-1432120227ff"}},{"type":"ServiceEndpoint","id":"EID69396b64-7b97-4402-bcf2-2765df75af35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID6fef0ce1-52aa-41b3-b91b-b704922f720d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID944d28f3-d222-4697-8e49-04bb273c878e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID944d28f3-d222-4697-8e49-04bb273c878e"}},{"type":"ServiceEndpoint","id":"EIDdf832f88-ecc7-4512-885a-a63de10b1355","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID6823fcc0-cb17-4578-a8cc-32ac974416a5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID6c84a407-c0a9-4d2a-8b41-0f939c6b700f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID35ae6883-0a17-48a4-a371-eeff0410fd85","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID35ae6883-0a17-48a4-a371-eeff0410fd85"}},{"type":"ServiceResponse","id":"EID0bcf83c2-17ee-4d09-8b4c-514d51d06059","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID0bcf83c2-17ee-4d09-8b4c-514d51d06059"}},{"type":"ServiceResponse","id":"EID3f2a2c7f-debd-475f-a8d1-a21a1f6cef7d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID3f2a2c7f-debd-475f-a8d1-a21a1f6cef7d"}},{"type":"ServiceEndpoint","id":"EID3a61f74f-2095-49a3-861e-f4b057047e79","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID1e585f6f-0946-458e-b7bf-3159e0d9e03e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID1e585f6f-0946-458e-b7bf-3159e0d9e03e"}},{"type":"Message","id":"EIDc6ef5c2e-f5c6-411a-b389-0d29631ba3f2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDc6ef5c2e-f5c6-411a-b389-0d29631ba3f2"}},{"type":"ServiceResponse","id":"EID003cb91d-65cc-4530-a938-b94f017067cf","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID003cb91d-65cc-4530-a938-b94f017067cf"}},{"type":"Error","id":"EID3ab21d2e-6d6d-45c2-9204-ab4eb4afa418","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID3ab21d2e-6d6d-45c2-9204-ab4eb4afa418"}},{"type":"Message","id":"EID5e937d6f-f46d-4e7d-b28e-f2024d9c75f8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID5e937d6f-f46d-4e7d-b28e-f2024d9c75f8"}},{"type":"ServiceEndpoint","id":"EID972c0d64-e116-4a18-97b2-a91e5712021e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8c8702f4-58a6-4e37-9e91-2e66f9454375","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa32614ba-cf13-4216-8f46-07e3fb518710","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID57df87a0-f10f-4b20-99d1-a3bc7ca6f872","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID17d84fb4-fed0-4899-a76a-6a5e8edc6897","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID17d84fb4-fed0-4899-a76a-6a5e8edc6897"}},{"type":"ServiceResponse","id":"EIDeeb04b6c-178c-4823-b692-de3d48f5a93a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDeeb04b6c-178c-4823-b692-de3d48f5a93a"}},{"type":"GetParameter","id":"EIDeaa3a5d8-c171-4d3f-8181-35afb3224ede","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID36ab6a97-c8cc-4262-a26b-24fb99477600","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID36ab6a97-c8cc-4262-a26b-24fb99477600"}},{"type":"ServiceEndpoint","id":"EID7e5fa6d9-c5b4-4a99-a334-eb27b00a0670","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID272612c6-f451-4f2e-868d-c9aca92402f9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID272612c6-f451-4f2e-868d-c9aca92402f9"}},{"type":"Message","id":"EIDa9587501-55a0-48a8-8cca-fd0e14151bef","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDa9587501-55a0-48a8-8cca-fd0e14151bef"}},{"type":"GetParameter","id":"EID52fef296-e023-4350-92e3-d3e0f814b78e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Error","id":"EID1de4d741-367f-4bf1-a150-51cec0437726","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID1de4d741-367f-4bf1-a150-51cec0437726"}},{"type":"Error","id":"EID26ae6717-d829-4e38-99cc-511febd55a5b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID26ae6717-d829-4e38-99cc-511febd55a5b"}},{"type":"ServiceEndpoint","id":"EIDd357c1d0-350c-4ca6-b269-751daed1689f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDd2dc8927-7db7-41a3-a9e9-bbfa2884804b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDd2dc8927-7db7-41a3-a9e9-bbfa2884804b"}},{"type":"ServiceEndpoint","id":"EID7c1be1a3-32be-4caf-85ac-c531642f468f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3ee3234f-be2d-46bf-aef0-64f64f07ff86","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID3ee3234f-be2d-46bf-aef0-64f64f07ff86"}},{"type":"GetParameter","id":"EIDa62ebd1d-1ad4-46ea-906b-8d8b338c7ffc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID5e758939-5e2b-4cfc-9e0b-e8752e55df31","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID5e758939-5e2b-4cfc-9e0b-e8752e55df31"}},{"type":"ServiceEndpoint","id":"EID9de16cee-661b-4ff1-8a51-ba06f4adb409","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID800ddd9a-5f4c-4383-98fc-cf6ff3bc4483","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0a0bad58-61a5-4770-ad3c-d5dd753db844","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID0a0bad58-61a5-4770-ad3c-d5dd753db844"}},{"type":"ServiceEndpoint","id":"EIDb23e2df2-c2b1-47fe-8690-e15bbb14c5f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID9f811034-184b-4293-943c-b73d714382aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID88c5e263-0978-4a86-930b-4e675ae9f20b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID12db92bb-e001-493a-b2a8-99f297034ce8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDe193c055-6eb4-42d6-99f0-ccdb3fd926f5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDe193c055-6eb4-42d6-99f0-ccdb3fd926f5"}},{"type":"ServiceResponse","id":"EIDd4e67911-62ee-4862-b1df-d9a8a15a3431","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDd4e67911-62ee-4862-b1df-d9a8a15a3431"}},{"type":"GetParameter","id":"EID778214bb-e2f6-4cbc-9857-f07aeb317069","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID28a555fb-44f8-4c22-95e6-087a29eea2c5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID28a555fb-44f8-4c22-95e6-087a29eea2c5"}},{"type":"GetParameter","id":"EID1772396e-a482-46e6-aaa7-5bc0884ceba8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID05c9f700-2f19-4444-853a-141a10dc3a1c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Error","id":"EIDaa779756-1dc8-4602-ad33-f769d15589b4","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDaa779756-1dc8-4602-ad33-f769d15589b4"}},{"type":"GetParameter","id":"EIDfcc20b08-b5bf-4e50-8a54-a21d0a9594d3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1a32c5d1-4698-4cd7-bfaf-7d8044b2f6d1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID1a32c5d1-4698-4cd7-bfaf-7d8044b2f6d1"}},{"type":"Error","id":"EIDa9b6a869-a6c2-4882-b154-f28f907b968f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDa9b6a869-a6c2-4882-b154-f28f907b968f"}},{"type":"Message","id":"EIDd4d29495-3be5-4ed0-a466-6f53e9025f12","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDd4d29495-3be5-4ed0-a466-6f53e9025f12"}},{"type":"Message","id":"EIDe2793812-bfc3-4df3-adb2-8e5ea37c59ac","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EIDe2793812-bfc3-4df3-adb2-8e5ea37c59ac"}},{"type":"Error","id":"EID06cae1b9-174d-4561-97ee-a1b1b0f4b030","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID39d8aeff-8346-4ae0-856c-c6ed4555b479/Attachments/EID06cae1b9-174d-4561-97ee-a1b1b0f4b030"}},{"type":"GetParameter","id":"EIDa16e14e2-b77d-4dbc-b2d8-c3f38dee856a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:14:19Z","duration":10605,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:41.648 [print] EIDd9fef969-5b8f-46c1-8908-0edaeda2d011
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:41.648 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:14:41.649 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:41.649 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:41.649 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d9fef969-5b8f-46c1-8908-0edaeda2d011.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:14:41.649 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d9fef969-5b8f-46c1-8908-0edaeda2d011.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:41.649 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd9fef969-5b8f-46c1-8908-0edaeda2d011/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.015
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:14:41.670 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:14:41.670 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.001
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.021
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:34.673 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.021
11:14:34.673 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

11:14:37.693 response time in milliseconds: 2914.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:37 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883677436","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:37.694 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.428
* print "testing url:" + metadata.url 0.000
11:15:30.295 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.428
11:15:30.295 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:30.723 response time in milliseconds: 427.72
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:30 GMT
1 < ETag: "1c94e-5af58a6542a86-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
0.393
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.390
11:15:30.728 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:31.118 response time in milliseconds: 390.42
1 < 200
1 < Accept-Ranges: bytes
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: application/xml
1 < Date: Wed, 28 Oct 2020 11:15:31 GMT
1 < ETag: "1c94e-5af58a6542a86-gzip"
1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT
1 < Vary: Accept-Encoding
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.002
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:31.121 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1:39.676
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:07:08.653 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.133
11:07:08.653 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}

11:07:17.784 response time in milliseconds: 8356.32
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:07:16 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:07:14 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/189aa04f-635e-4577-816d-683e7419b00a.json","testRuns":{"TestRun":{"id":"EID189aa04f-635e-4577-816d-683e7419b00a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:07:14.266Z","testTasks":{"TestTask":{"id":"EID2ebee4a4-179b-4866-9d3d-906ffb08e711","parent":{"ref":"EID189aa04f-635e-4577-816d-683e7419b00a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID74a8fc09-a65d-4e5f-af72-ded1ff033d86"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID74a8fc09-a65d-4e5f-af72-ded1ff033d86","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:07:09.128Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:07:13.899Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.002
11:07:17.789 [print] EID189aa04f-635e-4577-816d-683e7419b00a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:07:17.789 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:07:17.790 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:07:17.790 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/189aa04f-635e-4577-816d-683e7419b00a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.009
11:07:17.799 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.001
11:07:17.801 [print] statuspath TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a
* print 'progresspath ', progresspath 0.000
11:07:17.802 [print] progresspath  TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
Given path progresspath 0.000
When method GET 0.521
11:07:17.804 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:18.324 response time in milliseconds: 518.87
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:07:18 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:07:18.324 [print] {
  "val": "4",
  "max": "5",
  "log": [
    "28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)",
    "28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:07:14 - Preparing 1 Test Task:",
    "28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)",
    "28.10.2020 11:07:14 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:07:14 -  with parameters: ",
    "28.10.2020 11:07:14 - etf.testcases = *",
    "28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:07:14 - Setting state to CREATED",
    "28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z",
    "28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:07:16 - Project Properties: ",
    "28.10.2020 11:07:16 - etf.testcases - * ",
    "28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ",
    "28.10.2020 11:07:16 - username -  ",
    "28.10.2020 11:07:16 - authUser -  ",
    "28.10.2020 11:07:16 - authMethod - basic ",
    "28.10.2020 11:07:16 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:19.489
11:07:18.325 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:18.868 response time in milliseconds: 542.60
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:07:18 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:18.869 retry condition not satisfied: response.val == response.max
11:07:18.869 sleeping before retry #1
11:07:23.870 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:24.384 response time in milliseconds: 512.80
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:07:24 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:24.385 retry condition not satisfied: response.val == response.max
11:07:24.385 sleeping before retry #2
11:07:29.386 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:29.897 response time in milliseconds: 510.11
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:07:29 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:29.897 retry condition not satisfied: response.val == response.max
11:07:29.897 sleeping before retry #3
11:07:34.899 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:35.423 response time in milliseconds: 523.48
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:07:35 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:35.424 retry condition not satisfied: response.val == response.max
11:07:35.424 sleeping before retry #4
11:07:40.425 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:40.939 response time in milliseconds: 512.98
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:07:40 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:40.939 retry condition not satisfied: response.val == response.max
11:07:40.939 sleeping before retry #5
11:07:45.941 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:46.463 response time in milliseconds: 516.89
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:07:46 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:46.464 retry condition not satisfied: response.val == response.max
11:07:46.464 sleeping before retry #6
11:07:51.465 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:52.028 response time in milliseconds: 559.80
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:07:51 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:52.032 retry condition not satisfied: response.val == response.max
11:07:52.032 sleeping before retry #7
11:07:57.033 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:07:57.546 response time in milliseconds: 510.14
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:07:57 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"82","max":"83","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:07:57.546 retry condition not satisfied: response.val == response.max
11:07:57.546 sleeping before retry #8
11:08:02.547 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:03.069 response time in milliseconds: 520.97
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:08:03 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"109","max":"110","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:08:03.070 retry condition not satisfied: response.val == response.max
11:08:03.070 sleeping before retry #9
11:08:08.071 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:08.589 response time in milliseconds: 517.19
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:08:08 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"130","max":"131","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:08:08.593 retry condition not satisfied: response.val == response.max
11:08:08.593 sleeping before retry #10
11:08:13.594 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:14.105 response time in milliseconds: 510.05
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:08:14 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"149","max":"150","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:08:14.111 retry condition not satisfied: response.val == response.max
11:08:14.111 sleeping before retry #11
11:08:19.112 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:19.635 response time in milliseconds: 518.65
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:08:19 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized"]}

11:08:19.635 retry condition not satisfied: response.val == response.max
11:08:19.635 sleeping before retry #12
11:08:24.636 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:25.182 response time in milliseconds: 544.57
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:08:25 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized","28.10.2020 11:08:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:23 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:23 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:23 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:08:25.183 retry condition not satisfied: response.val == response.max
11:08:25.183 sleeping before retry #13
11:08:30.184 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:30.725 response time in milliseconds: 529.50
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:08:30 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["28.10.2020 11:07:14 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:07:14 UTC 2020)","28.10.2020 11:07:14 - Resolving Executable Test Suite dependencies","28.10.2020 11:07:14 - Preparing 1 Test Task:","28.10.2020 11:07:14 -  TestTask 1 (2ebee4a4-179b-4866-9d3d-906ffb08e711)","28.10.2020 11:07:14 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:07:14 -  with parameters: ","28.10.2020 11:07:14 - etf.testcases = *","28.10.2020 11:07:14 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:07:14 - Setting state to CREATED","28.10.2020 11:07:14 - Changed state from CREATED to INITIALIZING","28.10.2020 11:07:14 - Starting TestRun.189aa04f-635e-4577-816d-683e7419b00a at 2020-10-28T11:07:16Z","28.10.2020 11:07:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:07:16 - Project Properties: ","28.10.2020 11:07:16 - etf.testcases - * ","28.10.2020 11:07:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","28.10.2020 11:07:16 - username -  ","28.10.2020 11:07:16 - authUser -  ","28.10.2020 11:07:16 - authMethod - basic ","28.10.2020 11:07:16 - TestRunTask initialized","28.10.2020 11:08:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:21 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:23 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:23 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:08:23 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:08:30.725 retry condition not satisfied: response.val == response.max
11:08:30.725 sleeping before retry #14
11:08:35.727 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:37.813 response time in milliseconds: 2085.59
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:08:37 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:08:37.813 retry condition satisfied
* print response 0.000
11:08:37.814 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 10.491
11:08:37.814 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:08:48.294 response time in milliseconds: 9522.02
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Cache-Control: public, max-age=120
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:08:47 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Last-Modified: Wed, 28 Oct 2020 11:08:32 GMT
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/189aa04f-635e-4577-816d-683e7419b00a.json","testRuns":{"TestRun":{"id":"EID189aa04f-635e-4577-816d-683e7419b00a","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:07:14.266Z","testTasks":{"TestTask":{"id":"EID2ebee4a4-179b-4866-9d3d-906ffb08e711","parent":{"ref":"EID189aa04f-635e-4577-816d-683e7419b00a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID74a8fc09-a65d-4e5f-af72-ded1ff033d86"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID347853ac-4983-4b74-9f18-6901a926a90e"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID74a8fc09-a65d-4e5f-af72-ded1ff033d86","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:07:09.128Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:07:13.899Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID347853ac-4983-4b74-9f18-6901a926a90e","testObject":{"ref":"EID74a8fc09-a65d-4e5f-af72-ded1ff033d86"},"testModuleResults":{"TestModuleResult":[{"id":"EID6ee3fbab-0175-1000-b85a-e5f1b73fefce","testCaseResults":{"TestCaseResult":[{"id":"EID6ee3fbab-0175-1000-4175-77708f26e4a0","testStepResults":{"TestStepResult":[{"id":"EID6ee3fbac-0175-1000-247c-a21aa4124139","parent":{"ref":"EID6ee3fbab-0175-1000-4175-77708f26e4a0"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:07:16Z","duration":19,"status":"PASSED"},{"id":"EID6ee3fbc0-0175-1000-df69-541c8466dba8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee3fdae-0175-1000-7fcc-c83042bd2518","parent":{"ref":"EID6ee3fbc0-0175-1000-df69-541c8466dba8"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fdae-0175-1000-457c-65d3d9408eaf","parent":{"ref":"EID6ee3fbc0-0175-1000-df69-541c8466dba8"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fdae-0175-1000-a91f-51b1591cf8d4","parent":{"ref":"EID6ee3fbc0-0175-1000-df69-541c8466dba8"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"},{"id":"EID6ee3fdae-0175-1000-9a0e-5bdbcd75daee","parent":{"ref":"EID6ee3fbc0-0175-1000-df69-541c8466dba8"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:07:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7aec7130-e0cd-4dd9-a964-a118973d09bf"},{"ref":"EID13096e9f-1a88-4bf4-b559-c20e4ace0f8b"},{"ref":"EID457638a7-5e5f-4a86-bffc-bedd7154f1c3"}]},"parent":{"ref":"EID6ee3fbab-0175-1000-4175-77708f26e4a0"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:07:16Z","duration":395,"status":"PASSED"}]},"parent":{"ref":"EID6ee3fbab-0175-1000-b85a-e5f1b73fefce"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:07:16Z","duration":516,"status":"PASSED"},{"id":"EID6ee3fdaf-0175-1000-de87-6308076f220d","testStepResults":{"TestStepResult":{"id":"EID6ee3fdaf-0175-1000-478c-eeee1eff2f2c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee41137-0175-1000-6870-816abfda71df","parent":{"ref":"EID6ee3fdaf-0175-1000-478c-eeee1eff2f2c"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:07:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee41137-0175-1000-6565-3d2bee5ceaac","parent":{"ref":"EID6ee3fdaf-0175-1000-478c-eeee1eff2f2c"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:07:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee41137-0175-1000-1db4-d1e3ff03f867","parent":{"ref":"EID6ee3fdaf-0175-1000-478c-eeee1eff2f2c"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:07:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID626e39cb-6452-4327-a0e3-cde2612cfaad"},{"ref":"EIDdb51e304-52b5-42c6-8d8c-47d441e455f5"},{"ref":"EID9800ecfc-d47d-4500-bf01-6ae4046983ec"}]},"parent":{"ref":"EID6ee3fdaf-0175-1000-de87-6308076f220d"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:07:16Z","duration":1506,"status":"PASSED"}},"parent":{"ref":"EID6ee3fbab-0175-1000-b85a-e5f1b73fefce"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:07:16Z","duration":5012,"status":"PASSED"}]},"parent":{"ref":"EID347853ac-4983-4b74-9f18-6901a926a90e"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:07:16Z","duration":5528,"status":"PASSED"},{"id":"EID6ee41143-0175-1000-7b1a-715265654646","testCaseResults":{"TestCaseResult":[{"id":"EID6ee4114e-0175-1000-8def-b5ad7f1f0c85","testStepResults":{"TestStepResult":[{"id":"EID6ee41158-0175-1000-c5c3-292c02a52bd3","parent":{"ref":"EID6ee4114e-0175-1000-8def-b5ad7f1f0c85"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:07:21Z","duration":1507,"status":"PASSED"},{"id":"EID6ee41159-0175-1000-636d-57c1008f8be2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee41356-0175-1000-e652-4f470bec9fce","parent":{"ref":"EID6ee41159-0175-1000-636d-57c1008f8be2"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41356-0175-1000-eb0c-ffaeaf219734","parent":{"ref":"EID6ee41159-0175-1000-636d-57c1008f8be2"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41356-0175-1000-9427-5beaa905a137","parent":{"ref":"EID6ee41159-0175-1000-636d-57c1008f8be2"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41356-0175-1000-df75-3daf814a4ec0","parent":{"ref":"EID6ee41159-0175-1000-636d-57c1008f8be2"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"},{"id":"EID6ee41356-0175-1000-96ad-3147fe1ea3ba","parent":{"ref":"EID6ee41159-0175-1000-636d-57c1008f8be2"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:07:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID05b3a480-7615-4e06-9b1c-010c85253d58"},{"ref":"EIDa5fe3713-103c-4ed5-8020-9aacb7dcbdbb"},{"ref":"EID1663fa50-1446-4366-abb6-b8a3bef8cf5e"}]},"parent":{"ref":"EID6ee4114e-0175-1000-8def-b5ad7f1f0c85"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:07:21Z","duration":373,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:07:21Z","duration":520,"status":"PASSED"},{"id":"EID6ee41357-0175-1000-2356-43fc54195320","testStepResults":{"TestStepResult":[{"id":"EID6ee41357-0175-1000-518e-06ee2a600810","attachments":{"attachment":[{"ref":"EIDf419399a-3640-4fbb-ada0-fc0b49c844b4"},{"ref":"EID42aafe20-94e5-4dab-b738-fc9a21f48cdb"}]},"parent":{"ref":"EID6ee41357-0175-1000-2356-43fc54195320"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:07:22Z","duration":915,"status":"PASSED"},{"id":"EID6ee41715-0175-1000-2568-0157a2bb0e46","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee419a9-0175-1000-bc76-1881d4b636a5","parent":{"ref":"EID6ee41715-0175-1000-2568-0157a2bb0e46"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:07:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee419a9-0175-1000-2d96-d0f377e808c0","parent":{"ref":"EID6ee41715-0175-1000-2568-0157a2bb0e46"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:07:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee419a9-0175-1000-c8c6-0bae5550407b","parent":{"ref":"EID6ee41715-0175-1000-2568-0157a2bb0e46"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:07:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee419a9-0175-1000-d6aa-d3720a9dcf3d","parent":{"ref":"EID6ee41715-0175-1000-2568-0157a2bb0e46"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:07:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID501ce127-b1c8-4d51-8280-5eaaf183e3a5"},{"ref":"EID511ee24b-2b1b-4445-bd6a-f5a81eb1dae6"},{"ref":"EID6b7d3905-0f38-4419-9e53-d7cfa56c2f3f"}]},"parent":{"ref":"EID6ee41357-0175-1000-2356-43fc54195320"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:07:23Z","duration":593,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:07:22Z","duration":1618,"status":"PASSED"},{"id":"EID6ee419a9-0175-1000-4831-415917ed2a4d","testStepResults":{"TestStepResult":[{"id":"EID6ee419a9-0175-1000-d7e3-454892422c4f","attachments":{"attachment":[{"ref":"EID8b63e5d4-ec7e-4626-952b-772e9839723d"},{"ref":"EID592b9479-4a48-461a-b714-9f32b1a25694"}]},"parent":{"ref":"EID6ee419a9-0175-1000-4831-415917ed2a4d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:07:23Z","duration":929,"status":"PASSED"},{"id":"EID6ee41d99-0175-1000-1e53-8618781045f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee42573-0175-1000-efc0-664c7919ba72","parent":{"ref":"EID6ee41d99-0175-1000-1e53-8618781045f7"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:07:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee42573-0175-1000-580c-d5e2a6d73e15","parent":{"ref":"EID6ee41d99-0175-1000-1e53-8618781045f7"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:07:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee42573-0175-1000-01cb-c684ab07124c","parent":{"ref":"EID6ee41d99-0175-1000-1e53-8618781045f7"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:07:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee42573-0175-1000-1529-270a98b2b7e9","parent":{"ref":"EID6ee41d99-0175-1000-1e53-8618781045f7"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:07:26Z","duration":0,"status":"PASSED"},{"id":"EID6ee42573-0175-1000-25d8-0c4752181936","parent":{"ref":"EID6ee41d99-0175-1000-1e53-8618781045f7"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:07:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID51ea04f4-6727-4a4c-9e2e-6a973b3e3af4"},{"ref":"EID8d3befd1-fbf8-4173-baf5-d971f9cd68b1"},{"ref":"EID9bae6885-26c7-46f5-86fb-194c27027a11"}]},"parent":{"ref":"EID6ee419a9-0175-1000-4831-415917ed2a4d"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:07:24Z","duration":1538,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:07:23Z","duration":3018,"status":"PASSED"},{"id":"EID6ee42573-0175-1000-9ec5-706b21ecaf81","testStepResults":{"TestStepResult":[{"id":"EID6ee4257f-0175-1000-ad2e-8782a6bb33fa","attachments":{"attachment":[{"ref":"EID3a9d2bad-e2cc-4272-b5cc-f3f8f64f1681"},{"ref":"EIDa5a801b1-e81b-47ff-9bf0-9a62b03f8ade"}]},"parent":{"ref":"EID6ee42573-0175-1000-9ec5-706b21ecaf81"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:07:26Z","duration":1848,"status":"PASSED"},{"id":"EID6ee42ce4-0175-1000-9e42-5edd49f5f218","parent":{"ref":"EID6ee42573-0175-1000-9ec5-706b21ecaf81"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:07:28Z","duration":0,"status":"PASSED"},{"id":"EID6ee42ceb-0175-1000-c2b2-265956ce61de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee43572-0175-1000-f0a8-6def19265abc","parent":{"ref":"EID6ee42ceb-0175-1000-c2b2-265956ce61de"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee43572-0175-1000-db64-9ef2795683e1","parent":{"ref":"EID6ee42ceb-0175-1000-c2b2-265956ce61de"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee43572-0175-1000-c068-57d74131b531","parent":{"ref":"EID6ee42ceb-0175-1000-c2b2-265956ce61de"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"},{"id":"EID6ee43572-0175-1000-5633-e28b9ccd5444","parent":{"ref":"EID6ee42ceb-0175-1000-c2b2-265956ce61de"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:07:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID97d39176-ff15-41c3-913f-52061da4b048"},{"ref":"EID595c09c6-9b73-4379-87f5-53368983e134"},{"ref":"EID29d35745-47a3-489b-a712-1afb43ee2dfa"}]},"parent":{"ref":"EID6ee42573-0175-1000-9ec5-706b21ecaf81"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:07:28Z","duration":2105,"status":"PASSED"},{"id":"EID6ee43572-0175-1000-4e9e-10a2a84d6b15","attachments":{"attachment":{"ref":"EID5b5c2a25-8416-4b0e-b6ba-3d62043e1fb2"}},"parent":{"ref":"EID6ee42573-0175-1000-9ec5-706b21ecaf81"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:07:31Z","duration":1,"status":"PASSED"},{"id":"EID6ee4357d-0175-1000-69c3-2dd58fd8d24b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee440c3-0175-1000-84ab-c0b420215f44","parent":{"ref":"EID6ee4357d-0175-1000-69c3-2dd58fd8d24b"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:07:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee440c3-0175-1000-6644-4a7d68272644","parent":{"ref":"EID6ee4357d-0175-1000-69c3-2dd58fd8d24b"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:07:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee440c3-0175-1000-1a65-726c1e609b7d","parent":{"ref":"EID6ee4357d-0175-1000-69c3-2dd58fd8d24b"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:07:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee440c3-0175-1000-c5aa-d6059d5641c8","parent":{"ref":"EID6ee4357d-0175-1000-69c3-2dd58fd8d24b"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:07:33Z","duration":0,"status":"PASSED"},{"id":"EID6ee440c3-0175-1000-db5d-6725bb8cb445","parent":{"ref":"EID6ee4357d-0175-1000-69c3-2dd58fd8d24b"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:07:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID01ba5261-b195-4901-8d3b-a089c1c5b140"},{"ref":"EID4bc362e7-a1cf-465c-b189-37065fc4c0b2"},{"ref":"EIDe5e5a086-d24e-46c7-8d2d-6b69e65b230f"}]},"parent":{"ref":"EID6ee42573-0175-1000-9ec5-706b21ecaf81"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:07:31Z","duration":2722,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:07:26Z","duration":6992,"status":"PASSED"},{"id":"EID6ee440c3-0175-1000-fecc-a1ddee7ec040","testStepResults":{"TestStepResult":[{"id":"EID6ee440c3-0175-1000-9a6c-47664731070b","attachments":{"attachment":[{"ref":"EIDfb955980-804f-4231-b92a-13154bd0f5e7"},{"ref":"EID9399dfe5-7372-4f7c-bdd8-505f0a41654c"}]},"parent":{"ref":"EID6ee440c3-0175-1000-fecc-a1ddee7ec040"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:07:33Z","duration":2127,"status":"PASSED"},{"id":"EID6ee44962-0175-1000-5d9f-80af1c6dcbaa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee44ca4-0175-1000-5c8f-a2508611368c","parent":{"ref":"EID6ee44962-0175-1000-5d9f-80af1c6dcbaa"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:07:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee44ca4-0175-1000-a4f6-14f43112099d","parent":{"ref":"EID6ee44962-0175-1000-5d9f-80af1c6dcbaa"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:07:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee44ca4-0175-1000-96ec-705ef0988978","parent":{"ref":"EID6ee44962-0175-1000-5d9f-80af1c6dcbaa"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:07:36Z","duration":0,"status":"PASSED"},{"id":"EID6ee44ca4-0175-1000-2a22-74cf425bd48a","parent":{"ref":"EID6ee44962-0175-1000-5d9f-80af1c6dcbaa"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:07:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3fe63367-a4be-4324-b35a-1877176b8d04"},{"ref":"EID5d5712fe-acca-49f5-bc98-423858647d4f"},{"ref":"EIDa90c6c69-1b4a-448b-9a2e-8cd9c48e192b"}]},"parent":{"ref":"EID6ee440c3-0175-1000-fecc-a1ddee7ec040"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:07:36Z","duration":744,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:07:33Z","duration":3041,"status":"PASSED"},{"id":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55","testStepResults":{"TestStepResult":[{"id":"EID6ee44cac-0175-1000-b9fe-b7190c114544","attachments":{"attachment":[{"ref":"EIDdd0c0918-3e02-43b6-b19c-62b05e907d27"},{"ref":"EIDbefb56a6-78ff-429c-aa24-f9ed52a034cc"}]},"parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:07:37Z","duration":912,"status":"PASSED"},{"id":"EID6ee4506e-0175-1000-a539-5d594eebafa4","parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:07:37Z","duration":0,"status":"PASSED"},{"id":"EID6ee4506e-0175-1000-8648-bdbad51ad0c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee454c1-0175-1000-1add-11a9dff48741","parent":{"ref":"EID6ee4506e-0175-1000-8648-bdbad51ad0c1"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee454c1-0175-1000-cb3f-d13b51d57e22","parent":{"ref":"EID6ee4506e-0175-1000-8648-bdbad51ad0c1"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee454c1-0175-1000-a967-400bf689380f","parent":{"ref":"EID6ee4506e-0175-1000-8648-bdbad51ad0c1"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee454c1-0175-1000-d547-e1995243f8f0","parent":{"ref":"EID6ee4506e-0175-1000-8648-bdbad51ad0c1"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0d4bd05d-0f7f-46e4-b560-2fa5fd5bacf9"},{"ref":"EID8383f376-04e1-4ceb-9c75-ccc7d11b3797"},{"ref":"EID58605533-79d3-480e-aca3-dba44c8c2880"}]},"parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:07:37Z","duration":1017,"status":"PASSED"},{"id":"EID6ee454c1-0175-1000-8574-c1e3be7f0ed3","attachments":{"attachment":{"ref":"EID4f2743fb-0259-4c2a-89df-f66d55c598dd"}},"parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:07:39Z","duration":1,"status":"PASSED"},{"id":"EID6ee454ce-0175-1000-a63f-805c48c803a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee455bf-0175-1000-31b6-0e613aa92360","parent":{"ref":"EID6ee454ce-0175-1000-a63f-805c48c803a8"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee455bf-0175-1000-1f72-e7e718a20e79","parent":{"ref":"EID6ee454ce-0175-1000-a63f-805c48c803a8"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"},{"id":"EID6ee455bf-0175-1000-0166-83f24c90d6f4","parent":{"ref":"EID6ee454ce-0175-1000-a63f-805c48c803a8"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:07:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb098c59e-c7a2-4e51-834f-9de11f1e58bf"},{"ref":"EID3fdc17b9-c226-4bfe-95ca-8c8281f8e488"},{"ref":"EIDd9fa0c4f-cbce-4703-bc47-a783538fdeb5"}]},"parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:07:39Z","duration":138,"status":"PASSED"},{"id":"EID6ee455c7-0175-1000-48e7-a4102b0cf64b","attachments":{"attachment":{"ref":"EID814ec22a-ef45-4acc-aaa2-d7d6cc2c097f"}},"parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-28T11:07:39Z","duration":1,"status":"PASSED"},{"id":"EID6ee455da-0175-1000-926a-54f7e3cd54e2","attachments":{"attachment":{"ref":"EID0bc0f288-28fa-4745-b8c7-3fb51c7f0580"}},"parent":{"ref":"EID6ee44ca4-0175-1000-5e6a-8d4dac8e0f55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-28T11:07:39Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:07:36Z","duration":2369,"status":"PASSED"},{"id":"EID6ee455e6-0175-1000-e661-aff1d2a83003","testStepResults":{"TestStepResult":[{"id":"EID6ee455e6-0175-1000-5f12-0bbbf3bff970","attachments":{"attachment":[{"ref":"EID838bdaa1-bcc1-45a0-b0e5-131dc3ce807e"},{"ref":"EIDe167fd10-2eac-4a83-b471-9c340be1940f"}]},"parent":{"ref":"EID6ee455e6-0175-1000-e661-aff1d2a83003"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:07:39Z","duration":1747,"status":"PASSED"},{"id":"EID6ee45ce4-0175-1000-ef3c-1d025742e405","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee468e2-0175-1000-13fd-d9a35a75c302","parent":{"ref":"EID6ee45ce4-0175-1000-ef3c-1d025742e405"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee468e2-0175-1000-ed3c-9760343ebdf9","parent":{"ref":"EID6ee45ce4-0175-1000-ef3c-1d025742e405"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee468e2-0175-1000-678a-25a00ccc3177","parent":{"ref":"EID6ee45ce4-0175-1000-ef3c-1d025742e405"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee468e2-0175-1000-912a-5b6eb9e974d2","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6ee45ce4-0175-1000-ef3c-1d025742e405"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDd26a99c7-ce58-4102-b1fe-b39b549d698a"},{"ref":"EID30f80fde-7b6b-408b-9f52-9762b2e7d9d6"},{"ref":"EID039e7201-3cae-44fd-92fb-d7b5652a4e14"}]},"parent":{"ref":"EID6ee455e6-0175-1000-e661-aff1d2a83003"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:07:41Z","duration":2994,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:07:39Z","duration":4860,"status":"PASSED_MANUAL"},{"id":"EID6ee468e2-0175-1000-18d2-0de894fa37d2","testStepResults":{"TestStepResult":{"id":"EID6ee468e2-0175-1000-9766-70a73a984f0c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee46b5c-0175-1000-c3eb-d0ed0f84241d","parent":{"ref":"EID6ee468e2-0175-1000-9766-70a73a984f0c"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee46b5c-0175-1000-1c4c-3da897412734","parent":{"ref":"EID6ee468e2-0175-1000-9766-70a73a984f0c"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee46b5c-0175-1000-dace-518451aba189","parent":{"ref":"EID6ee468e2-0175-1000-9766-70a73a984f0c"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"},{"id":"EID6ee46b5c-0175-1000-ccfe-c9928100b4ad","parent":{"ref":"EID6ee468e2-0175-1000-9766-70a73a984f0c"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:07:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID02d7a351-43d1-4d47-bd37-16ed9266052c"},{"ref":"EIDc86624d0-8770-4200-bcb4-40eaff828acd"},{"ref":"EID2667cf6c-b0ca-4b6f-8813-93c1fa483567"}]},"parent":{"ref":"EID6ee468e2-0175-1000-18d2-0de894fa37d2"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:07:44Z","duration":563,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:07:44Z","duration":634,"status":"PASSED"},{"id":"EID6ee46b5d-0175-1000-3d8e-2a6821db38da","testStepResults":{"TestStepResult":{"id":"EID6ee46b5d-0175-1000-96b8-3e9545b61cb0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee46e15-0175-1000-4494-04e3689ef301","parent":{"ref":"EID6ee46b5d-0175-1000-96b8-3e9545b61cb0"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:07:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee46e15-0175-1000-09f6-81c3e9d80f94","parent":{"ref":"EID6ee46b5d-0175-1000-96b8-3e9545b61cb0"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:07:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee46e15-0175-1000-2b55-26c9e5b2020a","parent":{"ref":"EID6ee46b5d-0175-1000-96b8-3e9545b61cb0"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:07:45Z","duration":0,"status":"PASSED"},{"id":"EID6ee46e15-0175-1000-2138-f42c9927f64f","parent":{"ref":"EID6ee46b5d-0175-1000-96b8-3e9545b61cb0"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:07:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDceb4e809-3d57-4dde-858b-5dbddfaa7046"},{"ref":"EIDc19dc4e7-9bf5-4464-81b9-022c47fbdd95"},{"ref":"EID07a4e164-eb16-4b39-ad45-77b2d94508b6"}]},"parent":{"ref":"EID6ee46b5d-0175-1000-3d8e-2a6821db38da"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:07:44Z","duration":624,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:07:44Z","duration":696,"status":"PASSED"},{"id":"EID6ee46e15-0175-1000-7532-6ba94ac39438","testStepResults":{"TestStepResult":[{"id":"EID6ee46e15-0175-1000-59b0-b12ccf2bf43c","attachments":{"attachment":[{"ref":"EID694757f2-ff0f-41ad-ab24-373d97dac72c"},{"ref":"EID06fa0f7d-8978-4148-bb5c-b44a9a5ecde0"},{"ref":"EID467480e3-ae20-4e19-b7ee-a3c5f8191e48"},{"ref":"EIDdddd7b96-84cc-4862-8fec-f90f7f50da04"},{"ref":"EIDcfa78da4-b642-4dcb-89bb-3fb86f9f87e4"},{"ref":"EID24583c9e-8018-493f-aa54-6e5dc9004efc"},{"ref":"EID6b72505a-e1f0-4f59-8d91-0eb3db3becd1"},{"ref":"EID7aa93405-ea66-47f6-b755-49ebfa77a3a7"},{"ref":"EID2bd544c8-3836-4a3b-903e-5554e500d4e4"},{"ref":"EIDa575e65e-33b7-4930-8b8e-97a4d2b55343"},{"ref":"EIDfe571bcb-eb6f-4863-900c-8077eab41daf"},{"ref":"EID07ed2d19-243d-4fa1-953c-a5fd547d4182"}]},"parent":{"ref":"EID6ee46e15-0175-1000-7532-6ba94ac39438"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:07:45Z","duration":1074,"status":"PASSED"},{"id":"EID6ee4732b-0175-1000-5fb1-1d3f1313356d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee475ac-0175-1000-8085-ddffb7a0c11e","parent":{"ref":"EID6ee4732b-0175-1000-5fb1-1d3f1313356d"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-28T11:07:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee475ac-0175-1000-b084-5f2c162762cf","parent":{"ref":"EID6ee4732b-0175-1000-5fb1-1d3f1313356d"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-28T11:07:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee475ac-0175-1000-8669-de962aa09f64","parent":{"ref":"EID6ee4732b-0175-1000-5fb1-1d3f1313356d"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-28T11:07:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee475ac-0175-1000-1215-21e7a2e734a9","parent":{"ref":"EID6ee4732b-0175-1000-5fb1-1d3f1313356d"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-28T11:07:47Z","duration":0,"status":"PASSED"},{"id":"EID6ee475ac-0175-1000-6e57-83acd04cf2ae","parent":{"ref":"EID6ee4732b-0175-1000-5fb1-1d3f1313356d"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-28T11:07:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb916b776-ab46-43ac-9960-236875c65b7a"},{"ref":"EIDecbe836e-003a-4b27-9ea5-2cc5eafd11ed"},{"ref":"EIDef64922d-60b5-4ae7-92ff-c65738a923e6"}]},"parent":{"ref":"EID6ee46e15-0175-1000-7532-6ba94ac39438"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-28T11:07:46Z","duration":334,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:07:45Z","duration":1951,"status":"PASSED"},{"id":"EID6ee475b4-0175-1000-d9a1-d0f7018a428e","testStepResults":{"TestStepResult":{"id":"EID6ee475b4-0175-1000-b0df-861aa89c3a8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee47807-0175-1000-0dee-305a0c6025c3","parent":{"ref":"EID6ee475b4-0175-1000-b0df-861aa89c3a8f"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47807-0175-1000-7470-e36ab5c67594","parent":{"ref":"EID6ee475b4-0175-1000-b0df-861aa89c3a8f"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47807-0175-1000-180f-1d4843a33dde","parent":{"ref":"EID6ee475b4-0175-1000-b0df-861aa89c3a8f"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47807-0175-1000-d9f1-efac66e63085","parent":{"ref":"EID6ee475b4-0175-1000-b0df-861aa89c3a8f"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d02f589-dbfc-4d48-8dbc-3de30631aeb0"},{"ref":"EID56b715ef-f1b0-4b69-9ef6-c72f0ae4cefb"},{"ref":"EID779b6700-5c60-408b-99cc-162414351f66"}]},"parent":{"ref":"EID6ee475b4-0175-1000-d9a1-d0f7018a428e"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:07:47Z","duration":431,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:07:47Z","duration":595,"status":"PASSED"},{"id":"EID6ee47807-0175-1000-e865-261d5da09baa","testStepResults":{"TestStepResult":{"id":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee47b63-0175-1000-f394-2d9204b9364d","parent":{"ref":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47b63-0175-1000-a53a-558b332c91d0","parent":{"ref":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47b63-0175-1000-1d75-8d2ec65eceac","parent":{"ref":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47b63-0175-1000-94b8-e1d5da841dcc","parent":{"ref":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47b63-0175-1000-05e5-6afd5b71250e","parent":{"ref":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"},{"id":"EID6ee47b63-0175-1000-c0cf-5ad17a218940","parent":{"ref":"EID6ee47807-0175-1000-7cf8-3083ad04c5ea"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:07:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0e5655bf-9b0c-44a8-91c9-c371c1034c0f"},{"ref":"EID800a547a-612d-42fe-98c5-261e033ad08f"},{"ref":"EID7d809047-98c3-4644-b00c-ef6d90e6d3f9"}]},"parent":{"ref":"EID6ee47807-0175-1000-e865-261d5da09baa"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:07:48Z","duration":625,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:07:48Z","duration":860,"status":"PASSED"},{"id":"EID6ee47b63-0175-1000-bc23-367d818664ff","testStepResults":{"TestStepResult":{"id":"EID6ee47b64-0175-1000-9529-10509775b1dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee47de4-0175-1000-5c88-80e0cff3eb76","parent":{"ref":"EID6ee47b64-0175-1000-9529-10509775b1dc"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47de4-0175-1000-ebb1-d1e7bc22e068","parent":{"ref":"EID6ee47b64-0175-1000-9529-10509775b1dc"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47de4-0175-1000-b8d8-a470e91acb3a","parent":{"ref":"EID6ee47b64-0175-1000-9529-10509775b1dc"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47de4-0175-1000-8d4c-257aa10afdbf","parent":{"ref":"EID6ee47b64-0175-1000-9529-10509775b1dc"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47de4-0175-1000-c89e-ef4f62cdb380","parent":{"ref":"EID6ee47b64-0175-1000-9529-10509775b1dc"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"},{"id":"EID6ee47de4-0175-1000-899b-d312489d941e","parent":{"ref":"EID6ee47b64-0175-1000-9529-10509775b1dc"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:07:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID019857b1-7119-4a4a-a289-849e7ebdf194"},{"ref":"EIDa0639f77-8e13-4c99-b68d-fac404767182"},{"ref":"EID10cfea2a-7890-4e28-8f64-60cb4972bab9"}]},"parent":{"ref":"EID6ee47b63-0175-1000-bc23-367d818664ff"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:07:48Z","duration":329,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:07:48Z","duration":1210,"status":"PASSED"},{"id":"EID6ee4801d-0175-1000-1438-455fe5dc1cd9","testStepResults":{"TestStepResult":{"id":"EID6ee4801d-0175-1000-c9cc-d9ee842e209e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee48762-0175-1000-a580-6d879f28e04a","parent":{"ref":"EID6ee4801d-0175-1000-c9cc-d9ee842e209e"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee48762-0175-1000-102c-22e1359f78fe","parent":{"ref":"EID6ee4801d-0175-1000-c9cc-d9ee842e209e"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee48762-0175-1000-c3ea-7e16da709cbc","parent":{"ref":"EID6ee4801d-0175-1000-c9cc-d9ee842e209e"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"},{"id":"EID6ee48762-0175-1000-4de8-83d8e03949a6","parent":{"ref":"EID6ee4801d-0175-1000-c9cc-d9ee842e209e"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:07:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf3b9ae17-9484-4902-b318-b0bf34254c32"},{"ref":"EIDecfb29bd-dafc-491a-a738-021531ccc993"},{"ref":"EIDdf6d90e4-aacf-4096-8502-02647c20ee9a"}]},"parent":{"ref":"EID6ee4801d-0175-1000-1438-455fe5dc1cd9"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:07:50Z","duration":1714,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:07:50Z","duration":1861,"status":"PASSED"},{"id":"EID6ee48762-0175-1000-124f-1c82d2468e96","testStepResults":{"TestStepResult":[{"id":"EID6ee48762-0175-1000-5ea7-e8bd0548efe8","attachments":{"attachment":[{"ref":"EIDb29a8c98-8efe-46c5-b688-1dfba9d74041"},{"ref":"EID29787235-598e-48d2-98e8-73f94250dd12"},{"ref":"EIDe852002f-7a2a-4348-aeb8-0cc070a3f47d"},{"ref":"EID22331341-7129-4274-84d8-2345eb8da251"}]},"parent":{"ref":"EID6ee48762-0175-1000-124f-1c82d2468e96"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:07:52Z","duration":1494,"status":"PASSED"},{"id":"EID6ee48d74-0175-1000-b232-8457a014bda8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee49075-0175-1000-6805-b57c1b7f3488","parent":{"ref":"EID6ee48d74-0175-1000-b232-8457a014bda8"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:07:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee49075-0175-1000-35ef-896b1c56a54a","parent":{"ref":"EID6ee48d74-0175-1000-b232-8457a014bda8"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:07:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee49075-0175-1000-3ecc-b5622f10aa7e","parent":{"ref":"EID6ee48d74-0175-1000-b232-8457a014bda8"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:07:54Z","duration":0,"status":"PASSED"},{"id":"EID6ee49075-0175-1000-3854-09552913bac4","parent":{"ref":"EID6ee48d74-0175-1000-b232-8457a014bda8"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:07:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff060314-98aa-4faa-bd14-3bb44604c4d6"},{"ref":"EIDa7125ff7-1477-4d6d-ba2a-81e5f99e21f0"},{"ref":"EID00696abe-f413-409b-9866-ae0acdd93658"}]},"parent":{"ref":"EID6ee48762-0175-1000-124f-1c82d2468e96"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:07:53Z","duration":699,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:07:52Z","duration":2323,"status":"PASSED"},{"id":"EID6ee49075-0175-1000-ce10-2babecb6b5fa","testStepResults":{"TestStepResult":{"id":"EID6ee49075-0175-1000-e80e-801eb11175f0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee49f00-0175-1000-e26c-d95dcf0b7fa7","parent":{"ref":"EID6ee49075-0175-1000-e80e-801eb11175f0"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee49f00-0175-1000-2f13-b439e38ac01e","parent":{"ref":"EID6ee49075-0175-1000-e80e-801eb11175f0"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee49f00-0175-1000-56f4-0c53ac9b5833","parent":{"ref":"EID6ee49075-0175-1000-e80e-801eb11175f0"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee49f00-0175-1000-051e-adb148b4ed37","parent":{"ref":"EID6ee49075-0175-1000-e80e-801eb11175f0"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0293c494-7d5d-4044-ba33-40fcc012519f"},{"ref":"EID9559c726-c513-44a1-a4df-01b38b1d74f8"},{"ref":"EID474fd821-b9ef-41ab-b208-213b5a96a0ed"}]},"parent":{"ref":"EID6ee49075-0175-1000-ce10-2babecb6b5fa"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:07:54Z","duration":3635,"status":"PASSED"}},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:07:54Z","duration":3724,"status":"PASSED"},{"id":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f","testStepResults":{"TestStepResult":[{"id":"EID6ee49f02-0175-1000-0fdc-6ca10538a324","parent":{"ref":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee49f02-0175-1000-f7d2-74f1bb550773","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a13c-0175-1000-c678-12e874475370","parent":{"ref":"EID6ee49f02-0175-1000-f7d2-74f1bb550773"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a13c-0175-1000-0c12-5fc38e9ffaa4","parent":{"ref":"EID6ee49f02-0175-1000-f7d2-74f1bb550773"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a13c-0175-1000-a853-751b7f5c2b2b","parent":{"ref":"EID6ee49f02-0175-1000-f7d2-74f1bb550773"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a13c-0175-1000-24c9-59166578ce79","parent":{"ref":"EID6ee49f02-0175-1000-f7d2-74f1bb550773"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04b10b2b-4058-481a-8d7e-c24809521205"},{"ref":"EID0dadf62d-a0cc-4b2a-b4df-a6a6860a50ec"},{"ref":"EID8da0d033-69e1-4fc0-bcdc-af3fc5543825"}]},"parent":{"ref":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:07:58Z","duration":504,"status":"PASSED"},{"id":"EID6ee4a13d-0175-1000-b303-46be42419d12","attachments":{"attachment":{"ref":"EID572fc61b-5900-4d6d-b857-2ce3033cdb38"}},"parent":{"ref":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-28T11:07:58Z","duration":1,"status":"PASSED"},{"id":"EID6ee4a149-0175-1000-bbfb-8ceea9e1611a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a21a-0175-1000-9165-55ae77e2e9ec","parent":{"ref":"EID6ee4a149-0175-1000-bbfb-8ceea9e1611a"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a21a-0175-1000-1668-b0e69cb4a30b","parent":{"ref":"EID6ee4a149-0175-1000-bbfb-8ceea9e1611a"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a21a-0175-1000-201a-88e163034b36","parent":{"ref":"EID6ee4a149-0175-1000-bbfb-8ceea9e1611a"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a21a-0175-1000-7108-83f93df17c68","parent":{"ref":"EID6ee4a149-0175-1000-bbfb-8ceea9e1611a"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-28T11:07:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID53a520cd-7670-41ba-a46c-fd6a5d0ce92e"},{"ref":"EIDebd10ae3-609a-462c-9d64-7c2a0786230a"},{"ref":"EID31a4288b-d2e6-4f22-ad68-d58215a3988e"}]},"parent":{"ref":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-28T11:07:58Z","duration":127,"status":"PASSED"},{"id":"EID6ee4a223-0175-1000-f215-9651cb6aa402","attachments":{"attachment":{"ref":"EID571e79de-5ddb-4546-aa1c-f73c43d3aa60"}},"parent":{"ref":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-28T11:07:58Z","duration":1,"status":"PASSED"},{"id":"EID6ee4a22f-0175-1000-be2e-f79c88784272","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a412-0175-1000-c58a-a435c6b1dc1b","parent":{"ref":"EID6ee4a22f-0175-1000-be2e-f79c88784272"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a412-0175-1000-fba1-561646eb8149","parent":{"ref":"EID6ee4a22f-0175-1000-be2e-f79c88784272"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a412-0175-1000-159b-497349d7496d","parent":{"ref":"EID6ee4a22f-0175-1000-be2e-f79c88784272"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a412-0175-1000-65a6-fa086b2d1dfb","parent":{"ref":"EID6ee4a22f-0175-1000-be2e-f79c88784272"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2d6c83b7-4a0b-4349-9573-f184d431b7c6"},{"ref":"EIDe24b569c-aaec-43c8-a4eb-be7b5857706a"},{"ref":"EID9315f5d0-1609-467e-aa55-b178faf55d7c"}]},"parent":{"ref":"EID6ee49f01-0175-1000-2ed0-0b9711aa500f"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-28T11:07:58Z","duration":395,"status":"PASSED"}]},"parent":{"ref":"EID6ee41143-0175-1000-7b1a-715265654646"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:07:58Z","duration":1297,"status":"PASSED"}]},"parent":{"ref":"EID347853ac-4983-4b74-9f18-6901a926a90e"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:07:21Z","duration":37584,"status":"PASSED_MANUAL"},{"id":"EID6ee4a413-0175-1000-9add-a1518065cba3","testCaseResults":{"TestCaseResult":[{"id":"EID6ee4a413-0175-1000-68b5-6b4d01fd14bd","testStepResults":{"TestStepResult":[{"id":"EID6ee4a413-0175-1000-0394-6672157f7e11","parent":{"ref":"EID6ee4a413-0175-1000-68b5-6b4d01fd14bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a413-0175-1000-0d00-f50798cf5777","parent":{"ref":"EID6ee4a413-0175-1000-68b5-6b4d01fd14bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:07:59Z","duration":3634,"status":"PASSED"},{"id":"EID6ee4a41d-0175-1000-0f59-48fe94c723d4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a544-0175-1000-da38-08f8f9429085","parent":{"ref":"EID6ee4a41d-0175-1000-0f59-48fe94c723d4"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a544-0175-1000-9859-f423cb31b238","parent":{"ref":"EID6ee4a41d-0175-1000-0f59-48fe94c723d4"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a544-0175-1000-9f41-041243f9cdbb","parent":{"ref":"EID6ee4a41d-0175-1000-0f59-48fe94c723d4"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID50c5d428-a8d2-4020-8abb-fc02ff72214a"},{"ref":"EIDece4cedb-8d77-4216-bc7a-9a2d99bd851b"},{"ref":"EIDa5ec6595-f243-49aa-8c8f-9743b60eb2bf"}]},"parent":{"ref":"EID6ee4a413-0175-1000-68b5-6b4d01fd14bd"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:07:59Z","duration":201,"status":"PASSED"},{"id":"EID6ee4a545-0175-1000-b15b-76be3c7b9d59","attachments":{"attachment":{"ref":"EID7e354f32-0ef1-405f-ba58-7e532a86b639"}},"parent":{"ref":"EID6ee4a413-0175-1000-68b5-6b4d01fd14bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:07:59Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a551-0175-1000-b737-284ac03757aa","parent":{"ref":"EID6ee4a413-0175-1000-68b5-6b4d01fd14bd"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:07:59Z","duration":57,"status":"PASSED"}]},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:07:59Z","duration":388,"status":"PASSED"},{"id":"EID6ee4a597-0175-1000-92bf-0350df93cb0c","testStepResults":{"TestStepResult":[{"id":"EID6ee4a597-0175-1000-fb5c-dfb1b6b73921","parent":{"ref":"EID6ee4a597-0175-1000-92bf-0350df93cb0c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:07:59Z","duration":1506,"status":"PASSED"},{"id":"EID6ee4a597-0175-1000-84fe-3b3f0d084fff","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4a7a7-0175-1000-8e86-9cc4b92c3af6","parent":{"ref":"EID6ee4a597-0175-1000-84fe-3b3f0d084fff"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a7a7-0175-1000-abc4-7935ec9f5b1e","parent":{"ref":"EID6ee4a597-0175-1000-84fe-3b3f0d084fff"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a7a7-0175-1000-a2e2-ec0324aa5806","parent":{"ref":"EID6ee4a597-0175-1000-84fe-3b3f0d084fff"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a7a7-0175-1000-9d2d-ceea6d08f338","parent":{"ref":"EID6ee4a597-0175-1000-84fe-3b3f0d084fff"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4a7a7-0175-1000-ac39-8ac01875ed79","parent":{"ref":"EID6ee4a597-0175-1000-84fe-3b3f0d084fff"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2e811611-8c12-4574-8278-6be70b004a42"},{"ref":"EID942e5eb0-d625-403c-ae4f-e02b28b557c4"},{"ref":"EID615b3e81-6bad-4119-903b-ad28c52cff96"}]},"parent":{"ref":"EID6ee4a597-0175-1000-92bf-0350df93cb0c"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:07:59Z","duration":412,"status":"PASSED"}]},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:07:59Z","duration":528,"status":"PASSED"},{"id":"EID6ee4a7b1-0175-1000-140b-aa03803c6ae2","testStepResults":{"TestStepResult":[{"id":"EID6ee4a7b1-0175-1000-9804-9737a45f2b4a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4aa4e-0175-1000-059a-5458b2deae9b","parent":{"ref":"EID6ee4a7b1-0175-1000-9804-9737a45f2b4a"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4aa4e-0175-1000-6f64-2de77e458906","parent":{"ref":"EID6ee4a7b1-0175-1000-9804-9737a45f2b4a"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"},{"id":"EID6ee4aa4e-0175-1000-a211-c35e5b3cd130","parent":{"ref":"EID6ee4a7b1-0175-1000-9804-9737a45f2b4a"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:08:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf9d922d6-80c4-446a-b2e8-01fca6cecfbb"},{"ref":"EID90fc384c-205f-4f08-91a3-46a021604e38"},{"ref":"EIDe71418d7-dc12-412e-93ef-e3ca0c1bf903"}]},"parent":{"ref":"EID6ee4a7b1-0175-1000-140b-aa03803c6ae2"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:08:00Z","duration":609,"status":"PASSED"},{"id":"EID6ee4aa4e-0175-1000-961e-081705d742d3","attachments":{"attachment":{"ref":"EID13787f88-99b2-4a85-bdf6-64d265f56bfe"}},"parent":{"ref":"EID6ee4a7b1-0175-1000-140b-aa03803c6ae2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-28T11:08:00Z","duration":1,"status":"PASSED"},{"id":"EID6ee4aa60-0175-1000-af2f-6adb4f387a62","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4b38e-0175-1000-e2df-efb9ec5d22b3","parent":{"ref":"EID6ee4aa60-0175-1000-af2f-6adb4f387a62"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b38e-0175-1000-937e-06def63a1bc5","parent":{"ref":"EID6ee4aa60-0175-1000-af2f-6adb4f387a62"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-28T11:08:03Z","duration":1,"status":"PASSED"},{"id":"EID6ee4b38f-0175-1000-5915-1c792ca31a0a","parent":{"ref":"EID6ee4aa60-0175-1000-af2f-6adb4f387a62"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b38f-0175-1000-dbfb-90f36f170fea","parent":{"ref":"EID6ee4aa60-0175-1000-af2f-6adb4f387a62"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b38f-0175-1000-f90b-ce0b91126f5d","parent":{"ref":"EID6ee4aa60-0175-1000-af2f-6adb4f387a62"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-28T11:08:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1e8f81a5-7058-4146-a472-24ee53124599"},{"ref":"EIDac3b0ed6-bea1-495e-beb9-f09919d678c2"},{"ref":"EID76ca736e-4458-416d-ad79-3054f5cb4341"}]},"parent":{"ref":"EID6ee4a7b1-0175-1000-140b-aa03803c6ae2"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-28T11:08:00Z","duration":2167,"status":"PASSED"}]},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:08:00Z","duration":3038,"status":"PASSED"},{"id":"EID6ee4b38f-0175-1000-030c-d491901807c0","testStepResults":{"TestStepResult":[{"id":"EID6ee4b38f-0175-1000-1929-b7cc4c1a845c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4b865-0175-1000-7ab1-56d7932e6a37","parent":{"ref":"EID6ee4b38f-0175-1000-1929-b7cc4c1a845c"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:08:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b865-0175-1000-0fc3-1185dd517821","parent":{"ref":"EID6ee4b38f-0175-1000-1929-b7cc4c1a845c"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:08:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b865-0175-1000-1be1-8578002d8a25","parent":{"ref":"EID6ee4b38f-0175-1000-1929-b7cc4c1a845c"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:08:04Z","duration":0,"status":"PASSED"},{"id":"EID6ee4b865-0175-1000-ba11-6190e48629ba","parent":{"ref":"EID6ee4b38f-0175-1000-1929-b7cc4c1a845c"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:08:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8cea9710-2f83-421c-ae64-e628ccce0e00"},{"ref":"EID430b4775-b1e1-4643-b63b-450a1669fe9f"},{"ref":"EID1041f349-2ff7-4003-8e65-15037d531c77"}]},"parent":{"ref":"EID6ee4b38f-0175-1000-030c-d491901807c0"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:08:03Z","duration":1141,"status":"PASSED"},{"id":"EID6ee4b865-0175-1000-fd2c-60f2b4c6d66d","attachments":{"attachment":{"ref":"EIDe8811e51-b18b-4f0e-9c26-75b3e92735ce"}},"parent":{"ref":"EID6ee4b38f-0175-1000-030c-d491901807c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-28T11:08:04Z","duration":1,"status":"PASSED"},{"id":"EID6ee4b871-0175-1000-0f04-54219f915ee4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bb31-0175-1000-a249-16060456685d","parent":{"ref":"EID6ee4b871-0175-1000-0f04-54219f915ee4"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bb31-0175-1000-6d78-33dda84c1319","parent":{"ref":"EID6ee4b871-0175-1000-0f04-54219f915ee4"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb36a62c-271d-48ef-98b3-cbb7acb2f948"},{"ref":"EID494bcb30-ce1b-4fb6-9446-2f84c738a408"}]},"parent":{"ref":"EID6ee4b38f-0175-1000-030c-d491901807c0"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-28T11:08:04Z","duration":699,"status":"PASSED"},{"id":"EID6ee4bb32-0175-1000-78a4-3a62b27f9458","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4bd14-0175-1000-8a02-d7b069ed32cd","parent":{"ref":"EID6ee4bb32-0175-1000-78a4-3a62b27f9458"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bd14-0175-1000-a137-a0a3c96f60b4","parent":{"ref":"EID6ee4bb32-0175-1000-78a4-3a62b27f9458"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bd14-0175-1000-b241-19db807146f3","parent":{"ref":"EID6ee4bb32-0175-1000-78a4-3a62b27f9458"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-28T11:08:05Z","duration":0,"status":"PASSED"},{"id":"EID6ee4bd14-0175-1000-4976-f77be99506e5","messages":{"message":{"ref":"TR.manual.checkLengthOfDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6ee4bb32-0175-1000-78a4-3a62b27f9458"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-28T11:08:05Z","duration":1,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID5c15afaf-2cc9-482d-a9eb-a15006da0eb7"},{"ref":"EID10fb6724-4d95-4ce2-a47d-461c14185cd3"},{"ref":"EID2648163b-de13-459c-af6f-db88eb551435"}]},"parent":{"ref":"EID6ee4b38f-0175-1000-030c-d491901807c0"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-28T11:08:05Z","duration":391,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:08:03Z","duration":2438,"status":"PASSED_MANUAL"},{"id":"EID6ee4bd15-0175-1000-c79c-2c545dd2d4c5","testStepResults":{"TestStepResult":{"id":"EID6ee4bd1d-0175-1000-eb0a-a82efafee2da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4c0e9-0175-1000-ab1f-5e49c00275c5","parent":{"ref":"EID6ee4bd1d-0175-1000-eb0a-a82efafee2da"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c0e9-0175-1000-07b5-a843128c74a7","parent":{"ref":"EID6ee4bd1d-0175-1000-eb0a-a82efafee2da"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c0e9-0175-1000-7c6c-270593f9ebfe","parent":{"ref":"EID6ee4bd1d-0175-1000-eb0a-a82efafee2da"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:08:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa260605d-ba5b-4fbd-aef0-61126c3d8459"},{"ref":"EID037aed1a-5580-442d-bffd-9140e912ee42"},{"ref":"EID0d5a5778-7069-4b6e-a4ac-89ffa8c366a0"}]},"parent":{"ref":"EID6ee4bd15-0175-1000-c79c-2c545dd2d4c5"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:08:05Z","duration":895,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:08:05Z","duration":980,"status":"PASSED"},{"id":"EID6ee4c0e9-0175-1000-a35a-3276bd0c5863","testStepResults":{"TestStepResult":{"id":"EID6ee4c0e9-0175-1000-c063-89f83635b68f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4c66b-0175-1000-54dc-9af3b2675853","parent":{"ref":"EID6ee4c0e9-0175-1000-c063-89f83635b68f"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c66b-0175-1000-4df9-280fbb94ea69","parent":{"ref":"EID6ee4c0e9-0175-1000-c063-89f83635b68f"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"},{"id":"EID6ee4c66b-0175-1000-36e2-b2c19167fd47","parent":{"ref":"EID6ee4c0e9-0175-1000-c063-89f83635b68f"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:08:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd20567e-ebbd-449c-aa49-e077188bf521"},{"ref":"EIDffab7ac9-491c-4b09-9065-45a89dc5c826"},{"ref":"EIDc2546438-5271-4557-a6bd-906247fdfb55"}]},"parent":{"ref":"EID6ee4c0e9-0175-1000-a35a-3276bd0c5863"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:08:06Z","duration":1319,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:08:06Z","duration":1410,"status":"PASSED"},{"id":"EID6ee4c66b-0175-1000-6215-924d37575357","testStepResults":{"TestStepResult":{"id":"EID6ee4c66b-0175-1000-ee61-6e7cb3c04144","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4cb40-0175-1000-ebb2-b19437ee213e","parent":{"ref":"EID6ee4c66b-0175-1000-ee61-6e7cb3c04144"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cb40-0175-1000-fdd1-c4474fe54862","parent":{"ref":"EID6ee4c66b-0175-1000-ee61-6e7cb3c04144"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cb40-0175-1000-88b6-57c1e4d3a5a6","parent":{"ref":"EID6ee4c66b-0175-1000-ee61-6e7cb3c04144"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cb40-0175-1000-7c00-f500057343f7","parent":{"ref":"EID6ee4c66b-0175-1000-ee61-6e7cb3c04144"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cb40-0175-1000-a7bc-4e03f7e2e578","parent":{"ref":"EID6ee4c66b-0175-1000-ee61-6e7cb3c04144"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:08:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0d9bbd97-97c5-41db-a1a3-2fcc3564e024"},{"ref":"EIDb5598766-e024-4fb5-a6cc-489270fb02a7"},{"ref":"EID6623ea56-b99e-427d-82fa-95cdc107e36b"}]},"parent":{"ref":"EID6ee4c66b-0175-1000-6215-924d37575357"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:08:08Z","duration":1009,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:08:08Z","duration":1237,"status":"PASSED"},{"id":"EID6ee4cb41-0175-1000-43ff-b4b40749e3f5","testStepResults":{"TestStepResult":{"id":"EID6ee4cb41-0175-1000-4442-7464f4f00309","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4cf07-0175-1000-c3f6-e6556eb3fa90","parent":{"ref":"EID6ee4cb41-0175-1000-4442-7464f4f00309"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf07-0175-1000-febe-c6a87eeec456","parent":{"ref":"EID6ee4cb41-0175-1000-4442-7464f4f00309"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"},{"id":"EID6ee4cf07-0175-1000-99df-dea8d2f33623","parent":{"ref":"EID6ee4cb41-0175-1000-4442-7464f4f00309"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:08:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca4313f2-b038-45b8-be53-8ff91d6588e7"},{"ref":"EID324a59df-5949-43a8-81bd-982cf26a1c8a"},{"ref":"EID4f23d06d-172e-4da7-b914-0c861d9ff901"}]},"parent":{"ref":"EID6ee4cb41-0175-1000-43ff-b4b40749e3f5"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:08:09Z","duration":875,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:08:09Z","duration":977,"status":"PASSED"},{"id":"EID6ee4cf13-0175-1000-4250-5a56fb04b991","testStepResults":{"TestStepResult":{"id":"EID6ee4cf13-0175-1000-4a89-628522b31554","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4d526-0175-1000-6b39-aa1b1bb8c7dc","parent":{"ref":"EID6ee4cf13-0175-1000-4a89-628522b31554"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:08:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee4d526-0175-1000-2031-d43b6f747975","parent":{"ref":"EID6ee4cf13-0175-1000-4a89-628522b31554"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:08:11Z","duration":0,"status":"PASSED"},{"id":"EID6ee4d526-0175-1000-b563-c24db94a1c53","parent":{"ref":"EID6ee4cf13-0175-1000-4a89-628522b31554"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:08:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb84faefd-a40a-4d7b-8041-758de273b5c3"},{"ref":"EID9d492444-1c74-4c89-86f3-b689b395d01a"},{"ref":"EID182bbb9e-0bef-4e74-8f0b-854b25f3786a"}]},"parent":{"ref":"EID6ee4cf13-0175-1000-4250-5a56fb04b991"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:08:10Z","duration":1396,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:08:10Z","duration":1555,"status":"PASSED"},{"id":"EID6ee4d526-0175-1000-e592-445000357b2d","testStepResults":{"TestStepResult":{"id":"EID6ee4d526-0175-1000-360f-22ce1454cb50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4d766-0175-1000-f7bd-59719eaf6557","parent":{"ref":"EID6ee4d526-0175-1000-360f-22ce1454cb50"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:08:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee4d767-0175-1000-70d0-6a14558a9fe9","parent":{"ref":"EID6ee4d526-0175-1000-360f-22ce1454cb50"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:08:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee4d767-0175-1000-77f0-43a7d3befa29","parent":{"ref":"EID6ee4d526-0175-1000-360f-22ce1454cb50"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:08:12Z","duration":0,"status":"PASSED"},{"id":"EID6ee4d767-0175-1000-b344-1d83a4aadfbd","parent":{"ref":"EID6ee4d526-0175-1000-360f-22ce1454cb50"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:08:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4425263-0c38-4195-8963-303b2342f80b"},{"ref":"EIDd7688a2a-e5c0-4003-b731-e3c0cc07aab5"},{"ref":"EIDc87cf491-ac54-4306-9aec-51f9cbd0fb00"}]},"parent":{"ref":"EID6ee4d526-0175-1000-e592-445000357b2d"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:08:11Z","duration":452,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:08:11Z","duration":577,"status":"PASSED"},{"id":"EID6ee4d767-0175-1000-1da3-2ecb3a296699","testStepResults":{"TestStepResult":{"id":"EID6ee4d767-0175-1000-5dc6-2306624c06f0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4da61-0175-1000-dc09-e834653287fb","parent":{"ref":"EID6ee4d767-0175-1000-5dc6-2306624c06f0"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4da61-0175-1000-7f2e-bfd407b6c073","parent":{"ref":"EID6ee4d767-0175-1000-5dc6-2306624c06f0"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4da61-0175-1000-c40c-abb6289f67ee","parent":{"ref":"EID6ee4d767-0175-1000-5dc6-2306624c06f0"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4da61-0175-1000-a760-30948e419e88","parent":{"ref":"EID6ee4d767-0175-1000-5dc6-2306624c06f0"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID94eccf97-2cab-4705-bb63-97e609ed7d57"},{"ref":"EID41465cd9-3245-47ad-8d1a-97390e5aa0b6"},{"ref":"EID4abe1343-3f15-4ee1-ae38-0b760dc029ce"}]},"parent":{"ref":"EID6ee4d767-0175-1000-1da3-2ecb3a296699"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:08:12Z","duration":663,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:08:12Z","duration":762,"status":"PASSED"},{"id":"EID6ee4da61-0175-1000-ffcc-4bcd940a1279","testStepResults":{"TestStepResult":[{"id":"EID6ee4da61-0175-1000-dd8d-2eab68915785","parent":{"ref":"EID6ee4da61-0175-1000-ffcc-4bcd940a1279"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:08:13Z","duration":0,"status":"PASSED"},{"id":"EID6ee4da61-0175-1000-a644-29194a1a2a70","parent":{"ref":"EID6ee4da61-0175-1000-ffcc-4bcd940a1279"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:08:13Z","duration":1879,"status":"PASSED"},{"id":"EID6ee4da61-0175-1000-1cd1-f6c874198ad7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4ddd6-0175-1000-57cf-ad054787e01c","parent":{"ref":"EID6ee4da61-0175-1000-1cd1-f6c874198ad7"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ddd6-0175-1000-513e-a4c684765249","parent":{"ref":"EID6ee4da61-0175-1000-1cd1-f6c874198ad7"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ddd6-0175-1000-ee80-3bcad4052e1a","parent":{"ref":"EID6ee4da61-0175-1000-1cd1-f6c874198ad7"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ddd6-0175-1000-520a-f8b974f72386","parent":{"ref":"EID6ee4da61-0175-1000-1cd1-f6c874198ad7"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:08:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8dfb462c-a46e-4fc3-b162-1a6fd9a90c01"},{"ref":"EID0e21579a-6b9c-42d0-987d-bf1ed02cb6f9"},{"ref":"EIDbaaa85b1-1f4e-4709-bec9-b5d7ad23ac8f"}]},"parent":{"ref":"EID6ee4da61-0175-1000-ffcc-4bcd940a1279"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:08:13Z","duration":803,"status":"PASSED"},{"id":"EID6ee4ddd6-0175-1000-1a8b-d19b82838083","attachments":{"attachment":{"ref":"EID3e57763c-a5e3-4e35-a645-d2ed10992c11"}},"parent":{"ref":"EID6ee4da61-0175-1000-ffcc-4bcd940a1279"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:08:14Z","duration":1,"status":"PASSED"},{"id":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4ee05-0175-1000-02eb-bf19850a2a4d","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-f86c-2713c02c6042","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-27c6-39097cb44cf0","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-3f93-b5f2c7d1e39c","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-f6b4-af458eb3164c","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-c268-7e9aab04553c","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-1ba4-1ef73d9b78c9","parent":{"ref":"EID6ee4dde1-0175-1000-e098-d93cfb37c5dc"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f9d7396-ae11-415d-898a-9f1f1d6b18fc"},{"ref":"EID563db6cf-d9ab-406b-bff0-d9985ca350d6"},{"ref":"EIDdde6d7cf-c54d-4c05-8f63-9a3aeabddb64"}]},"parent":{"ref":"EID6ee4da61-0175-1000-ffcc-4bcd940a1279"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:08:14Z","duration":4003,"status":"PASSED"}]},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:08:13Z","duration":5028,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-4645-5e271f10bdac","testStepResults":{"TestStepResult":[{"id":"EID6ee4ee05-0175-1000-6b2b-d4031114c1bf","parent":{"ref":"EID6ee4ee05-0175-1000-4645-5e271f10bdac"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ee05-0175-1000-e62a-f6a443b0bfaa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4ef03-0175-1000-d00a-4dc3d76fb218","parent":{"ref":"EID6ee4ee05-0175-1000-e62a-f6a443b0bfaa"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ef03-0175-1000-af68-84e5fe7a1b73","parent":{"ref":"EID6ee4ee05-0175-1000-e62a-f6a443b0bfaa"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ef03-0175-1000-643f-3afa8b03fd34","parent":{"ref":"EID6ee4ee05-0175-1000-e62a-f6a443b0bfaa"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4ef03-0175-1000-fc9b-bf989aaca244","parent":{"ref":"EID6ee4ee05-0175-1000-e62a-f6a443b0bfaa"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID97c6efdd-e059-4e8f-a5c4-4ea81f53f316"},{"ref":"EIDd3f4f986-2e13-4e1d-844b-3a3e906b2b2f"},{"ref":"EID40354908-8cb2-425d-8e5a-89bd16bd0c91"}]},"parent":{"ref":"EID6ee4ee05-0175-1000-4645-5e271f10bdac"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:08:18Z","duration":143,"status":"PASSED"},{"id":"EID6ee4ef03-0175-1000-7a34-c1040aac520c","invokedTests":{"":null,"TestStepResult":[{"id":"EID6ee4ef1e-0175-1000-f849-27522ddf7344","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f007-0175-1000-d8cd-5c75114273ed","parent":{"ref":"EID6ee4ef1e-0175-1000-f849-27522ddf7344"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f007-0175-1000-8afe-5fc81dd78821","parent":{"ref":"EID6ee4ef1e-0175-1000-f849-27522ddf7344"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f007-0175-1000-7078-ab869f77bd73","parent":{"ref":"EID6ee4ef1e-0175-1000-f849-27522ddf7344"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID54d343cd-655a-4545-adfb-efe8239353d6"},{"ref":"EIDc1c2c142-75fc-4d1d-b94e-77f4ccce82fe"},{"ref":"EID7238afa9-5ab0-4ce2-bc6a-56d73755feaf"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:18Z","duration":153,"status":"PASSED"},{"id":"EID6ee4f009-0175-1000-3f15-0a20ee792523","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f0d8-0175-1000-8f00-a157f14e8c81","parent":{"ref":"EID6ee4f009-0175-1000-3f15-0a20ee792523"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f0d8-0175-1000-3ab2-b097f04d6800","parent":{"ref":"EID6ee4f009-0175-1000-3f15-0a20ee792523"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f0d8-0175-1000-5cd4-b673d11d947c","parent":{"ref":"EID6ee4f009-0175-1000-3f15-0a20ee792523"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbcb83f5a-41af-45d5-be4f-e7442c36577a"},{"ref":"EID86dceaeb-5c69-4cc6-94ba-cb916894c7d1"},{"ref":"EIDb6245743-67dd-4c50-8b1a-b0443c782ad8"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:18Z","duration":148,"status":"PASSED"},{"id":"EID6ee4f0da-0175-1000-10d1-a62c2dcc8866","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f1a4-0175-1000-adc3-8bee57059ff5","parent":{"ref":"EID6ee4f0da-0175-1000-10d1-a62c2dcc8866"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f1a4-0175-1000-3cc4-20480363b9ca","parent":{"ref":"EID6ee4f0da-0175-1000-10d1-a62c2dcc8866"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f1a4-0175-1000-4060-65350de21aa8","parent":{"ref":"EID6ee4f0da-0175-1000-10d1-a62c2dcc8866"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID22d07966-ca96-416f-af15-4e1ead9d171e"},{"ref":"EID40ea6995-1ec3-4aa5-9254-b7d93e2bf777"},{"ref":"EID6dc1c060-bcb7-4429-bfb9-5606a3f6179a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:08:19Z","duration":148,"status":"PASSED"}]},"parent":{"ref":"EID6ee4ee05-0175-1000-4645-5e271f10bdac"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:08:18Z","duration":674,"status":"PASSED"},{"id":"EID6ee4f1b3-0175-1000-17e7-139609ed5e1d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f342-0175-1000-f2d9-8249af975299","parent":{"ref":"EID6ee4f1b3-0175-1000-17e7-139609ed5e1d"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f342-0175-1000-8b5e-d1769625f1c7","parent":{"ref":"EID6ee4f1b3-0175-1000-17e7-139609ed5e1d"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f342-0175-1000-a5b0-17fbcd261d76","parent":{"ref":"EID6ee4f1b3-0175-1000-17e7-139609ed5e1d"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f342-0175-1000-9da3-206bf2ab7518","parent":{"ref":"EID6ee4f1b3-0175-1000-17e7-139609ed5e1d"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:08:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc22512f5-b684-4382-8a75-404be1a39eec"},{"ref":"EID5d392af2-e704-46b8-acde-d204d2736634"},{"ref":"EID15169a02-821d-4ef3-80f8-f2917e6f0b1f"}]},"parent":{"ref":"EID6ee4ee05-0175-1000-4645-5e271f10bdac"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:08:19Z","duration":332,"status":"PASSED"}]},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:08:18Z","duration":1341,"status":"PASSED"},{"id":"EID6ee4f343-0175-1000-9eef-f2ffa7f74dc4","testStepResults":{"TestStepResult":{"id":"EID6ee4f343-0175-1000-01a5-ca5043405176","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f66c-0175-1000-891e-d826e9c7954d","parent":{"ref":"EID6ee4f343-0175-1000-01a5-ca5043405176"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f66c-0175-1000-48f8-34f686b8e299","parent":{"ref":"EID6ee4f343-0175-1000-01a5-ca5043405176"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f66c-0175-1000-2a49-6ba2e6bf54eb","parent":{"ref":"EID6ee4f343-0175-1000-01a5-ca5043405176"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f66c-0175-1000-50ef-1cc88142df94","parent":{"ref":"EID6ee4f343-0175-1000-01a5-ca5043405176"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID668945ce-3869-40be-a1ad-6a8aee22b60f"},{"ref":"EID437b4df3-dc12-4138-b32e-3422bbd7efd4"},{"ref":"EIDc92a1c07-d554-4f83-bb37-21c7a4f87762"}]},"parent":{"ref":"EID6ee4f343-0175-1000-9eef-f2ffa7f74dc4"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:08:19Z","duration":739,"status":"PASSED"}},"parent":{"ref":"EID6ee4a413-0175-1000-9add-a1518065cba3"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:08:19Z","duration":809,"status":"PASSED"}]},"parent":{"ref":"EID347853ac-4983-4b74-9f18-6901a926a90e"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:07:59Z","duration":21081,"status":"PASSED_MANUAL"},{"id":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a","testCaseResults":{"TestCaseResult":[{"id":"EID6ee4f66d-0175-1000-a1ae-e492b3cbd015","testStepResults":{"TestStepResult":[{"id":"EID6ee4f66d-0175-1000-9c48-1aaa5871112c","parent":{"ref":"EID6ee4f66d-0175-1000-a1ae-e492b3cbd015"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:08:20Z","duration":2070,"status":"PASSED"},{"id":"EID6ee4f66d-0175-1000-940c-8e9b930311eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f856-0175-1000-a390-680776e70dcd","parent":{"ref":"EID6ee4f66d-0175-1000-940c-8e9b930311eb"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f856-0175-1000-6d5c-b2f73d3832c8","parent":{"ref":"EID6ee4f66d-0175-1000-940c-8e9b930311eb"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f856-0175-1000-8640-0902eabc6706","parent":{"ref":"EID6ee4f66d-0175-1000-940c-8e9b930311eb"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-28T11:08:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID80a493d9-c456-4f38-b5bb-b0117892939e"},{"ref":"EIDbef85258-8372-487a-874e-b72e5790d274"},{"ref":"EIDef7495a1-befd-4368-bb9d-77c8e9302bcb"}]},"parent":{"ref":"EID6ee4f66d-0175-1000-a1ae-e492b3cbd015"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-28T11:08:20Z","duration":436,"status":"PASSED"},{"id":"EID6ee4f856-0175-1000-680b-07169b1ea248","attachments":{"attachment":{"ref":"EIDd57b03d4-4624-4c21-a2b8-04b247a53fb3"}},"parent":{"ref":"EID6ee4f66d-0175-1000-a1ae-e492b3cbd015"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-28T11:08:20Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:08:20Z","duration":501,"status":"PASSED"},{"id":"EID6ee4f862-0175-1000-f362-783480d77196","testStepResults":{"TestStepResult":[{"id":"EID6ee4f86a-0175-1000-9a6a-4aa7a08c0031","parent":{"ref":"EID6ee4f862-0175-1000-f362-783480d77196"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:08:20Z","duration":2070,"status":"PASSED"},{"id":"EID6ee4f86b-0175-1000-1724-748d1a9dfede","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4f934-0175-1000-b3d5-ad9c47d68afc","parent":{"ref":"EID6ee4f86b-0175-1000-1724-748d1a9dfede"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f934-0175-1000-d303-a787b981d90c","parent":{"ref":"EID6ee4f86b-0175-1000-1724-748d1a9dfede"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f934-0175-1000-c83a-0382a8cd7294","parent":{"ref":"EID6ee4f86b-0175-1000-1724-748d1a9dfede"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f934-0175-1000-e495-fa9f77965d7c","parent":{"ref":"EID6ee4f86b-0175-1000-1724-748d1a9dfede"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27cef1b6-c2e8-48ba-8a81-0260c6383090"},{"ref":"EID79e44328-73ff-409f-a07e-909581e3be80"},{"ref":"EIDb5459190-db16-42af-931a-2d68b0c63328"}]},"parent":{"ref":"EID6ee4f862-0175-1000-f362-783480d77196"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-28T11:08:20Z","duration":118,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:08:20Z","duration":210,"status":"PASSED"},{"id":"EID6ee4f934-0175-1000-9cae-581efb9d135d","testStepResults":{"TestStepResult":[{"id":"EID6ee4f934-0175-1000-0d6c-4fff92fad95a","parent":{"ref":"EID6ee4f934-0175-1000-9cae-581efb9d135d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":2071,"status":"PASSED"},{"id":"EID6ee4f935-0175-1000-b228-b9377c8d5d77","parent":{"ref":"EID6ee4f934-0175-1000-9cae-581efb9d135d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4f935-0175-1000-469b-927ed07b8c8b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4fa06-0175-1000-4ed5-49aa8fa8ec43","parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-33b2-50cf438576cd","parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-0062-f1c7873f9225","parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-c290-57ec0ca7531c","parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-12fa-40dd661f5c8b","parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-42f9-00da8e9c6557","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"FAILED"},{"id":"EID6ee4fa06-0175-1000-a6c8-540e7a8b542e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee4f935-0175-1000-469b-927ed07b8c8b"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID27428e96-9a25-4b73-bff4-5aeb19ff2e73"},{"ref":"EID69b18641-bf8f-4cff-a36b-f7235a265e5c"},{"ref":"EID7b0634de-1fef-4bde-bc10-6d3d42cf4e66"}]},"parent":{"ref":"EID6ee4f934-0175-1000-9cae-581efb9d135d"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-28T11:08:21Z","duration":103,"status":"FAILED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:08:21Z","duration":210,"status":"FAILED"},{"id":"EID6ee4fa06-0175-1000-4910-25948a83fe23","testStepResults":{"TestStepResult":[{"id":"EID6ee4fa06-0175-1000-e250-d666e1a77d97","parent":{"ref":"EID6ee4fa06-0175-1000-4910-25948a83fe23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":2070,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-9c7c-f14040b2d90f","parent":{"ref":"EID6ee4fa06-0175-1000-4910-25948a83fe23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fa06-0175-1000-0757-6e33c885dde5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee4fab7-0175-1000-f9ec-ffa03ab9b8f9","parent":{"ref":"EID6ee4fa06-0175-1000-0757-6e33c885dde5"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fab7-0175-1000-4c62-2b8e807887cc","parent":{"ref":"EID6ee4fa06-0175-1000-0757-6e33c885dde5"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fab7-0175-1000-e965-7fcb870ee6af","parent":{"ref":"EID6ee4fa06-0175-1000-0757-6e33c885dde5"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fab7-0175-1000-82db-cc396408f4e1","parent":{"ref":"EID6ee4fa06-0175-1000-0757-6e33c885dde5"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fab7-0175-1000-b877-4e23957e75d8","parent":{"ref":"EID6ee4fa06-0175-1000-0757-6e33c885dde5"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"PASSED"},{"id":"EID6ee4fab7-0175-1000-0af5-e8acc9352f14","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6ee4fa06-0175-1000-0757-6e33c885dde5"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-28T11:08:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4c110ab1-8818-488a-b536-6e0165fb7090"},{"ref":"EID42abb5f6-5d1b-4b62-8e2d-24d506bbc6d6"},{"ref":"EID500c7f7a-829d-4810-9bf3-d4a418fca3e5"}]},"parent":{"ref":"EID6ee4fa06-0175-1000-4910-25948a83fe23"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-28T11:08:21Z","duration":76,"status":"FAILED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:08:21Z","duration":177,"status":"FAILED"},{"id":"EID6ee4fab8-0175-1000-4f46-3982575f7415","testStepResults":{"TestStepResult":[{"id":"EID6ee4fab8-0175-1000-ffd8-5e7248978e7c","parent":{"ref":"EID6ee4fab8-0175-1000-4f46-3982575f7415"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":2070,"status":"PASSED"},{"id":"EID6ee4fab8-0175-1000-19a2-e7aef5ca6662","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID330a083c-28e5-4c68-af93-3994dfaca38a"},{"ref":"EID6f0e34ef-b447-4c14-93bc-36277690ab17"},{"ref":"EID867e0454-bdc4-490f-82dc-c384f92c4b69"},{"ref":"EID4cb2c8c3-9bd2-4e9e-9d61-939fae0622bd"},{"ref":"EIDa4330a04-81e1-4cdf-9048-185ac7b4a66c"},{"ref":"EIDad59f7dd-ec60-40de-be87-6b4a46029ee1"},{"ref":"EIDbf45b87b-ca34-4429-98dd-44709bf9c790"},{"ref":"EIDe46a2e1e-1ff8-4b17-8472-6d55bce24aba"},{"ref":"EID93074276-e768-40f1-a839-38ee4e01f87b"},{"ref":"EIDcd77b131-5b7c-45a4-8a19-93e12d2c4dc0"},{"ref":"EID9819e81e-5a26-451c-9d72-4c0904ba3bfc"},{"ref":"EID5f7039d8-ff4f-41a7-a092-d02f58974eac"},{"ref":"EID63406678-028a-46e3-81f8-78cc1a325d83"},{"ref":"EID3d8bd7ba-5bb7-446c-a9c7-7e08ff0b33c8"},{"ref":"EID8dc6576f-c91e-43c4-9ec3-90f44407aa60"}]},"parent":{"ref":"EID6ee4fab8-0175-1000-4f46-3982575f7415"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-28T11:08:21Z","duration":1513,"status":"SKIPPED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:08:21Z","duration":1821,"status":"SKIPPED"},{"id":"EID6ee501d5-0175-1000-11ac-8baff0260f5a","testStepResults":{"TestStepResult":[{"id":"EID6ee501d5-0175-1000-4d7a-0d172cefb8c2","parent":{"ref":"EID6ee501d5-0175-1000-11ac-8baff0260f5a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:08:23Z","duration":2071,"status":"PASSED"},{"id":"EID6ee501d6-0175-1000-34e8-300647828457","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50270-0175-1000-1cd2-ebbfdc73041b","parent":{"ref":"EID6ee501d6-0175-1000-34e8-300647828457"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50270-0175-1000-4025-06999ba52910","parent":{"ref":"EID6ee501d6-0175-1000-34e8-300647828457"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50270-0175-1000-b6c2-4d787b9a4e5e","parent":{"ref":"EID6ee501d6-0175-1000-34e8-300647828457"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50270-0175-1000-310f-6d70dc3f58d4","messages":{"message":{"ref":"TR.incorrectFeedSelfReference","translationArguments":{"argument":[{"token":"actual","$":"https://www.nationaalgeoregister.nl/geonetwork/opensearch/dut/d2a05dd5-98e8-4f9c-8ba2-7fe2d5c7c507/OpenSearchDescription.xml"},{"token":"element","$":"/os:OpenSearchDescription/os:Url"},{"token":"expected","$":"https://www.nationaalgeoregister.nl:443/geonetwork/opensearch/dut/d2a05dd5-98e8-4f9c-8ba2-7fe2d5c7c507/OpenSearchDescription.xml"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template"}]}}},"parent":{"ref":"EID6ee501d6-0175-1000-34e8-300647828457"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb77757bb-23b6-4beb-bffb-6d505304f3d3"},{"ref":"EIDa949a581-9414-4f57-968f-0c04ccb4c264"},{"ref":"EID0d44b903-bbca-4f30-ab9c-a2a4d224a611"}]},"parent":{"ref":"EID6ee501d5-0175-1000-11ac-8baff0260f5a"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-28T11:08:23Z","duration":80,"status":"FAILED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:08:23Z","duration":155,"status":"FAILED"},{"id":"EID6ee50270-0175-1000-af56-6d4e1b6ea8ea","testStepResults":{"TestStepResult":[{"id":"EID6ee50270-0175-1000-1ec7-adff76cc6dab","parent":{"ref":"EID6ee50270-0175-1000-af56-6d4e1b6ea8ea"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:08:23Z","duration":2070,"status":"PASSED"},{"id":"EID6ee50271-0175-1000-7dd3-84425addd132","parent":{"ref":"EID6ee50270-0175-1000-af56-6d4e1b6ea8ea"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50271-0175-1000-b1b6-bb0156230b9a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee5030a-0175-1000-31df-ed3eefc2b79c","parent":{"ref":"EID6ee50271-0175-1000-b1b6-bb0156230b9a"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee5030a-0175-1000-3790-778b51b95c26","parent":{"ref":"EID6ee50271-0175-1000-b1b6-bb0156230b9a"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee5030a-0175-1000-76ba-144915b510ac","parent":{"ref":"EID6ee50271-0175-1000-b1b6-bb0156230b9a"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee5030a-0175-1000-534a-db5c79f2fe15","parent":{"ref":"EID6ee50271-0175-1000-b1b6-bb0156230b9a"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6aab1ddd-3b49-4b35-b039-1ea9e73ac3c4"},{"ref":"EIDd2bb1b63-de6b-4a91-ac32-dc38afef1027"},{"ref":"EID82a4190a-b49c-4b18-9084-9d00bb1055e7"}]},"parent":{"ref":"EID6ee50270-0175-1000-af56-6d4e1b6ea8ea"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-28T11:08:23Z","duration":76,"status":"PASSED"},{"id":"EID6ee5030b-0175-1000-1681-a4f19ede5461","attachments":{"attachment":{"ref":"EID5b9b532e-d96a-453f-923f-ca6548e2912c"}},"parent":{"ref":"EID6ee50270-0175-1000-af56-6d4e1b6ea8ea"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee5031a-0175-1000-ad72-887966f7ad7b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6ee50328-0175-1000-c240-ac127e14cfdf","parent":{"ref":"EID6ee5031a-0175-1000-ad72-887966f7ad7b"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50328-0175-1000-8eba-a5f7d9fde7f4","parent":{"ref":"EID6ee5031a-0175-1000-ad72-887966f7ad7b"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"},{"id":"EID6ee50328-0175-1000-34f8-a0b64263ad4d","parent":{"ref":"EID6ee5031a-0175-1000-ad72-887966f7ad7b"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfa795855-28e2-4254-b6c7-465ac5c50c05"},{"ref":"EIDc823209c-170a-4345-88e0-35b0f81bdfe9"}]},"parent":{"ref":"EID6ee50270-0175-1000-af56-6d4e1b6ea8ea"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-28T11:08:23Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6ee4f66c-0175-1000-9474-7fb4b056d72a"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:08:23Z","duration":184,"status":"PASSED"}]},"parent":{"ref":"EID347853ac-4983-4b74-9f18-6901a926a90e"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:08:20Z","duration":3260,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID437b4df3-dc12-4138-b32e-3422bbd7efd4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID437b4df3-dc12-4138-b32e-3422bbd7efd4"}},{"type":"ServiceResponse","id":"EIDa5fe3713-103c-4ed5-8020-9aacb7dcbdbb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa5fe3713-103c-4ed5-8020-9aacb7dcbdbb"}},{"type":"ServiceEndpoint","id":"EIDf3b9ae17-9484-4902-b318-b0bf34254c32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID7aa93405-ea66-47f6-b755-49ebfa77a3a7","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID7aa93405-ea66-47f6-b755-49ebfa77a3a7"}},{"type":"ServiceEndpoint","id":"EID4d02f589-dbfc-4d48-8dbc-3de30631aeb0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDb5598766-e024-4fb5-a6cc-489270fb02a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDb5598766-e024-4fb5-a6cc-489270fb02a7"}},{"type":"Message","id":"EID93074276-e768-40f1-a839-38ee4e01f87b","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID93074276-e768-40f1-a839-38ee4e01f87b"}},{"type":"ServiceEndpoint","id":"EID0e5655bf-9b0c-44a8-91c9-c371c1034c0f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDbef85258-8372-487a-874e-b72e5790d274","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDbef85258-8372-487a-874e-b72e5790d274"}},{"type":"ServiceResponse","id":"EID13096e9f-1a88-4bf4-b559-c20e4ace0f8b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID13096e9f-1a88-4bf4-b559-c20e4ace0f8b"}},{"type":"Message","id":"EID8b63e5d4-ec7e-4626-952b-772e9839723d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID8b63e5d4-ec7e-4626-952b-772e9839723d"}},{"type":"ServiceResponse","id":"EID324a59df-5949-43a8-81bd-982cf26a1c8a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID324a59df-5949-43a8-81bd-982cf26a1c8a"}},{"type":"ServiceEndpoint","id":"EID53a520cd-7670-41ba-a46c-fd6a5d0ce92e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L3htbC5tZXRhZGF0YS5nZXQ="},{"type":"Message","id":"EID07ed2d19-243d-4fa1-953c-a5fd547d4182","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID07ed2d19-243d-4fa1-953c-a5fd547d4182"}},{"type":"ServiceEndpoint","id":"EIDfa795855-28e2-4254-b6c7-465ac5c50c05","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID0e21579a-6b9c-42d0-987d-bf1ed02cb6f9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID0e21579a-6b9c-42d0-987d-bf1ed02cb6f9"}},{"type":"Message","id":"EID5f7039d8-ff4f-41a7-a092-d02f58974eac","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID5f7039d8-ff4f-41a7-a092-d02f58974eac"}},{"type":"GetParameter","id":"EID58605533-79d3-480e-aca3-dba44c8c2880","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID86dceaeb-5c69-4cc6-94ba-cb916894c7d1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID86dceaeb-5c69-4cc6-94ba-cb916894c7d1"}},{"type":"ServiceEndpoint","id":"EIDf9d922d6-80c4-446a-b2e8-01fca6cecfbb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID9d492444-1c74-4c89-86f3-b689b395d01a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID9d492444-1c74-4c89-86f3-b689b395d01a"}},{"type":"GetParameter","id":"EIDb6245743-67dd-4c50-8b1a-b0443c782ad8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDdd20567e-ebbd-449c-aa49-e077188bf521","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID6dc1c060-bcb7-4429-bfb9-5606a3f6179a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID0bc0f288-28fa-4745-b8c7-3fb51c7f0580","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID0bc0f288-28fa-4745-b8c7-3fb51c7f0580"}},{"type":"ServiceResponse","id":"EID4bc362e7-a1cf-465c-b189-37065fc4c0b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID4bc362e7-a1cf-465c-b189-37065fc4c0b2"}},{"type":"ServiceEndpoint","id":"EID94eccf97-2cab-4705-bb63-97e609ed7d57","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID626e39cb-6452-4327-a0e3-cde2612cfaad","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID9399dfe5-7372-4f7c-bdd8-505f0a41654c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID9399dfe5-7372-4f7c-bdd8-505f0a41654c"}},{"type":"ServiceEndpoint","id":"EIDdb36a62c-271d-48ef-98b3-cbb7acb2f948","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2Rvd25sb2Fkcy9pbnZhc2lldmUtZXhvdGVuLmdtbC56aXA="},{"type":"Message","id":"EID330a083c-28e5-4c68-af93-3994dfaca38a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID330a083c-28e5-4c68-af93-3994dfaca38a"}},{"type":"Message","id":"EIDa4330a04-81e1-4cdf-9048-185ac7b4a66c","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa4330a04-81e1-4cdf-9048-185ac7b4a66c"}},{"type":"Message","id":"EID572fc61b-5900-4d6d-b857-2ce3033cdb38","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID572fc61b-5900-4d6d-b857-2ce3033cdb38"}},{"type":"GetParameter","id":"EID1663fa50-1446-4366-abb6-b8a3bef8cf5e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDfb955980-804f-4231-b92a-13154bd0f5e7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDfb955980-804f-4231-b92a-13154bd0f5e7"}},{"type":"ServiceResponse","id":"EID5d5712fe-acca-49f5-bc98-423858647d4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID5d5712fe-acca-49f5-bc98-423858647d4f"}},{"type":"ServiceResponse","id":"EIDe24b569c-aaec-43c8-a4eb-be7b5857706a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDe24b569c-aaec-43c8-a4eb-be7b5857706a"}},{"type":"ServiceResponse","id":"EID942e5eb0-d625-403c-ae4f-e02b28b557c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID942e5eb0-d625-403c-ae4f-e02b28b557c4"}},{"type":"GetParameter","id":"EID07a4e164-eb16-4b39-ad45-77b2d94508b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID4f2743fb-0259-4c2a-89df-f66d55c598dd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID4f2743fb-0259-4c2a-89df-f66d55c598dd"}},{"type":"ServiceEndpoint","id":"EIDceb4e809-3d57-4dde-858b-5dbddfaa7046","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID2d6c83b7-4a0b-4349-9573-f184d431b7c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDdb51e304-52b5-42c6-8d8c-47d441e455f5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDdb51e304-52b5-42c6-8d8c-47d441e455f5"}},{"type":"ServiceResponse","id":"EID3fdc17b9-c226-4bfe-95ca-8c8281f8e488","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID3fdc17b9-c226-4bfe-95ca-8c8281f8e488"}},{"type":"ServiceEndpoint","id":"EIDa260605d-ba5b-4fbd-aef0-61126c3d8459","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID2648163b-de13-459c-af6f-db88eb551435","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID51ea04f4-6727-4a4c-9e2e-6a973b3e3af4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID615b3e81-6bad-4119-903b-ad28c52cff96","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDcfa78da4-b642-4dcb-89bb-3fb86f9f87e4","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDcfa78da4-b642-4dcb-89bb-3fb86f9f87e4"}},{"type":"ServiceEndpoint","id":"EID97d39176-ff15-41c3-913f-52061da4b048","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID06fa0f7d-8978-4148-bb5c-b44a9a5ecde0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID06fa0f7d-8978-4148-bb5c-b44a9a5ecde0"}},{"type":"ServiceEndpoint","id":"EID5f9d7396-ae11-415d-898a-9f1f1d6b18fc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID6623ea56-b99e-427d-82fa-95cdc107e36b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EIDe71418d7-dc12-412e-93ef-e3ca0c1bf903","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID22331341-7129-4274-84d8-2345eb8da251","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID22331341-7129-4274-84d8-2345eb8da251"}},{"type":"ServiceResponse","id":"EID10fb6724-4d95-4ce2-a47d-461c14185cd3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID10fb6724-4d95-4ce2-a47d-461c14185cd3"}},{"type":"ServiceEndpoint","id":"EID01ba5261-b195-4901-8d3b-a089c1c5b140","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID97c6efdd-e059-4e8f-a5c4-4ea81f53f316","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID501ce127-b1c8-4d51-8280-5eaaf183e3a5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDd7688a2a-e5c0-4003-b731-e3c0cc07aab5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDd7688a2a-e5c0-4003-b731-e3c0cc07aab5"}},{"type":"ServiceResponse","id":"EIDecbe836e-003a-4b27-9ea5-2cc5eafd11ed","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDecbe836e-003a-4b27-9ea5-2cc5eafd11ed"}},{"type":"Message","id":"EID838bdaa1-bcc1-45a0-b0e5-131dc3ce807e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID838bdaa1-bcc1-45a0-b0e5-131dc3ce807e"}},{"type":"Message","id":"EID29787235-598e-48d2-98e8-73f94250dd12","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID29787235-598e-48d2-98e8-73f94250dd12"}},{"type":"GetParameter","id":"EIDbaaa85b1-1f4e-4709-bec9-b5d7ad23ac8f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDad59f7dd-ec60-40de-be87-6b4a46029ee1","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDad59f7dd-ec60-40de-be87-6b4a46029ee1"}},{"type":"ServiceResponse","id":"EID511ee24b-2b1b-4445-bd6a-f5a81eb1dae6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID511ee24b-2b1b-4445-bd6a-f5a81eb1dae6"}},{"type":"GetParameter","id":"EIDdf6d90e4-aacf-4096-8502-02647c20ee9a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID5b5c2a25-8416-4b0e-b6ba-3d62043e1fb2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID5b5c2a25-8416-4b0e-b6ba-3d62043e1fb2"}},{"type":"ServiceEndpoint","id":"EID05b3a480-7615-4e06-9b1c-010c85253d58","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDbefb56a6-78ff-429c-aa24-f9ed52a034cc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDbefb56a6-78ff-429c-aa24-f9ed52a034cc"}},{"type":"GetParameter","id":"EID40354908-8cb2-425d-8e5a-89bd16bd0c91","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID0d5a5778-7069-4b6e-a4ac-89ffa8c366a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID814ec22a-ef45-4acc-aaa2-d7d6cc2c097f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID814ec22a-ef45-4acc-aaa2-d7d6cc2c097f"}},{"type":"GetParameter","id":"EID76ca736e-4458-416d-ad79-3054f5cb4341","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDb29a8c98-8efe-46c5-b688-1dfba9d74041","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDb29a8c98-8efe-46c5-b688-1dfba9d74041"}},{"type":"GetParameter","id":"EIDa5ec6595-f243-49aa-8c8f-9743b60eb2bf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID22d07966-ca96-416f-af15-4e1ead9d171e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDef64922d-60b5-4ae7-92ff-c65738a923e6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID4cb2c8c3-9bd2-4e9e-9d61-939fae0622bd","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID4cb2c8c3-9bd2-4e9e-9d61-939fae0622bd"}},{"type":"GetParameter","id":"EID500c7f7a-829d-4810-9bf3-d4a418fca3e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EIDac3b0ed6-bea1-495e-beb9-f09919d678c2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDac3b0ed6-bea1-495e-beb9-f09919d678c2"}},{"type":"ServiceEndpoint","id":"EIDff060314-98aa-4faa-bd14-3bb44604c4d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID8383f376-04e1-4ceb-9c75-ccc7d11b3797","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID8383f376-04e1-4ceb-9c75-ccc7d11b3797"}},{"type":"Message","id":"EID24583c9e-8018-493f-aa54-6e5dc9004efc","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID24583c9e-8018-493f-aa54-6e5dc9004efc"}},{"type":"ServiceResponse","id":"EID0dadf62d-a0cc-4b2a-b4df-a6a6860a50ec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID0dadf62d-a0cc-4b2a-b4df-a6a6860a50ec"}},{"type":"GetParameter","id":"EIDc2546438-5271-4557-a6bd-906247fdfb55","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID69b18641-bf8f-4cff-a36b-f7235a265e5c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID69b18641-bf8f-4cff-a36b-f7235a265e5c"}},{"type":"ServiceResponse","id":"EID42abb5f6-5d1b-4b62-8e2d-24d506bbc6d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID42abb5f6-5d1b-4b62-8e2d-24d506bbc6d6"}},{"type":"ServiceEndpoint","id":"EIDbcb83f5a-41af-45d5-be4f-e7442c36577a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EIDffab7ac9-491c-4b09-9065-45a89dc5c826","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDffab7ac9-491c-4b09-9065-45a89dc5c826"}},{"type":"ServiceResponse","id":"EIDd3f4f986-2e13-4e1d-844b-3a3e906b2b2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDd3f4f986-2e13-4e1d-844b-3a3e906b2b2f"}},{"type":"Message","id":"EIDfe571bcb-eb6f-4863-900c-8077eab41daf","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDfe571bcb-eb6f-4863-900c-8077eab41daf"}},{"type":"Message","id":"EID3e57763c-a5e3-4e35-a645-d2ed10992c11","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID3e57763c-a5e3-4e35-a645-d2ed10992c11"}},{"type":"ServiceEndpoint","id":"EID6aab1ddd-3b49-4b35-b039-1ea9e73ac3c4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EIDb84faefd-a40a-4d7b-8041-758de273b5c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID29d35745-47a3-489b-a712-1afb43ee2dfa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID3fe63367-a4be-4324-b35a-1877176b8d04","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDa90c6c69-1b4a-448b-9a2e-8cd9c48e192b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID04b10b2b-4058-481a-8d7e-c24809521205","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID50c5d428-a8d2-4020-8abb-fc02ff72214a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID41465cd9-3245-47ad-8d1a-97390e5aa0b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID41465cd9-3245-47ad-8d1a-97390e5aa0b6"}},{"type":"Message","id":"EID9819e81e-5a26-451c-9d72-4c0904ba3bfc","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID9819e81e-5a26-451c-9d72-4c0904ba3bfc"}},{"type":"ServiceEndpoint","id":"EID7aec7130-e0cd-4dd9-a964-a118973d09bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID27cef1b6-c2e8-48ba-8a81-0260c6383090","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EIDd57b03d4-4624-4c21-a2b8-04b247a53fb3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDd57b03d4-4624-4c21-a2b8-04b247a53fb3"}},{"type":"GetParameter","id":"EID2667cf6c-b0ca-4b6f-8813-93c1fa483567","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID595c09c6-9b73-4379-87f5-53368983e134","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID595c09c6-9b73-4379-87f5-53368983e134"}},{"type":"Message","id":"EID571e79de-5ddb-4546-aa1c-f73c43d3aa60","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID571e79de-5ddb-4546-aa1c-f73c43d3aa60"}},{"type":"GetParameter","id":"EIDc87cf491-ac54-4306-9aec-51f9cbd0fb00","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID8dfb462c-a46e-4fc3-b162-1a6fd9a90c01","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDa0639f77-8e13-4c99-b68d-fac404767182","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa0639f77-8e13-4c99-b68d-fac404767182"}},{"type":"Message","id":"EID3a9d2bad-e2cc-4272-b5cc-f3f8f64f1681","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID3a9d2bad-e2cc-4272-b5cc-f3f8f64f1681"}},{"type":"ServiceResponse","id":"EID430b4775-b1e1-4643-b63b-450a1669fe9f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID430b4775-b1e1-4643-b63b-450a1669fe9f"}},{"type":"ServiceEndpoint","id":"EIDd26a99c7-ce58-4102-b1fe-b39b549d698a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDb5459190-db16-42af-931a-2d68b0c63328","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EIDc22512f5-b684-4382-8a75-404be1a39eec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID7b0634de-1fef-4bde-bc10-6d3d42cf4e66","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EIDf419399a-3640-4fbb-ada0-fc0b49c844b4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDf419399a-3640-4fbb-ada0-fc0b49c844b4"}},{"type":"GetParameter","id":"EID6b7d3905-0f38-4419-9e53-d7cfa56c2f3f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDa575e65e-33b7-4930-8b8e-97a4d2b55343","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa575e65e-33b7-4930-8b8e-97a4d2b55343"}},{"type":"GetParameter","id":"EID1041f349-2ff7-4003-8e65-15037d531c77","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID457638a7-5e5f-4a86-bffc-bedd7154f1c3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDe167fd10-2eac-4a83-b471-9c340be1940f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDe167fd10-2eac-4a83-b471-9c340be1940f"}},{"type":"ServiceResponse","id":"EID8d3befd1-fbf8-4173-baf5-d971f9cd68b1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID8d3befd1-fbf8-4173-baf5-d971f9cd68b1"}},{"type":"GetParameter","id":"EID039e7201-3cae-44fd-92fb-d7b5652a4e14","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID63406678-028a-46e3-81f8-78cc1a325d83","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID63406678-028a-46e3-81f8-78cc1a325d83"}},{"type":"ServiceResponse","id":"EIDece4cedb-8d77-4216-bc7a-9a2d99bd851b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDece4cedb-8d77-4216-bc7a-9a2d99bd851b"}},{"type":"ServiceResponse","id":"EID40ea6995-1ec3-4aa5-9254-b7d93e2bf777","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID40ea6995-1ec3-4aa5-9254-b7d93e2bf777"}},{"type":"ServiceEndpoint","id":"EIDb77757bb-23b6-4beb-bffb-6d505304f3d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EID10cfea2a-7890-4e28-8f64-60cb4972bab9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID800a547a-612d-42fe-98c5-261e033ad08f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID800a547a-612d-42fe-98c5-261e033ad08f"}},{"type":"Message","id":"EID2bd544c8-3836-4a3b-903e-5554e500d4e4","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID2bd544c8-3836-4a3b-903e-5554e500d4e4"}},{"type":"ServiceResponse","id":"EID30f80fde-7b6b-408b-9f52-9762b2e7d9d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID30f80fde-7b6b-408b-9f52-9762b2e7d9d6"}},{"type":"ServiceEndpoint","id":"EIDca4313f2-b038-45b8-be53-8ff91d6588e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID9800ecfc-d47d-4500-bf01-6ae4046983ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID8da0d033-69e1-4fc0-bcdc-af3fc5543825","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDe852002f-7a2a-4348-aeb8-0cc070a3f47d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDe852002f-7a2a-4348-aeb8-0cc070a3f47d"}},{"type":"ServiceEndpoint","id":"EID668945ce-3869-40be-a1ad-6a8aee22b60f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID474fd821-b9ef-41ab-b208-213b5a96a0ed","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID5d392af2-e704-46b8-acde-d204d2736634","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID5d392af2-e704-46b8-acde-d204d2736634"}},{"type":"GetParameter","id":"EIDc92a1c07-d554-4f83-bb37-21c7a4f87762","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EIDa4425263-0c38-4195-8963-303b2342f80b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDa5a801b1-e81b-47ff-9bf0-9a62b03f8ade","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa5a801b1-e81b-47ff-9bf0-9a62b03f8ade"}},{"type":"Message","id":"EID7e354f32-0ef1-405f-ba58-7e532a86b639","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID7e354f32-0ef1-405f-ba58-7e532a86b639"}},{"type":"Message","id":"EID5b9b532e-d96a-453f-923f-ca6548e2912c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID5b9b532e-d96a-453f-923f-ca6548e2912c"}},{"type":"GetParameter","id":"EID4f23d06d-172e-4da7-b914-0c861d9ff901","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID467480e3-ae20-4e19-b7ee-a3c5f8191e48","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID467480e3-ae20-4e19-b7ee-a3c5f8191e48"}},{"type":"ServiceEndpoint","id":"EID1e8f81a5-7058-4146-a472-24ee53124599","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDd2bb1b63-de6b-4a91-ac32-dc38afef1027","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDd2bb1b63-de6b-4a91-ac32-dc38afef1027"}},{"type":"ServiceEndpoint","id":"EID019857b1-7119-4a4a-a289-849e7ebdf194","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb916b776-ab46-43ac-9960-236875c65b7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDdde6d7cf-c54d-4c05-8f63-9a3aeabddb64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID9bae6885-26c7-46f5-86fb-194c27027a11","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID90fc384c-205f-4f08-91a3-46a021604e38","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID90fc384c-205f-4f08-91a3-46a021604e38"}},{"type":"ServiceEndpoint","id":"EID80a493d9-c456-4f38-b5bb-b0117892939e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID0d9bbd97-97c5-41db-a1a3-2fcc3564e024","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDe8811e51-b18b-4f0e-9c26-75b3e92735ce","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDe8811e51-b18b-4f0e-9c26-75b3e92735ce"}},{"type":"Message","id":"EID6f0e34ef-b447-4c14-93bc-36277690ab17","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID6f0e34ef-b447-4c14-93bc-36277690ab17"}},{"type":"ServiceResponse","id":"EIDa7125ff7-1477-4d6d-ba2a-81e5f99e21f0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa7125ff7-1477-4d6d-ba2a-81e5f99e21f0"}},{"type":"GetParameter","id":"EID00696abe-f413-409b-9866-ae0acdd93658","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID79e44328-73ff-409f-a07e-909581e3be80","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID79e44328-73ff-409f-a07e-909581e3be80"}},{"type":"ServiceEndpoint","id":"EID5c15afaf-2cc9-482d-a9eb-a15006da0eb7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDc19dc4e7-9bf5-4464-81b9-022c47fbdd95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDc19dc4e7-9bf5-4464-81b9-022c47fbdd95"}},{"type":"Message","id":"EID694757f2-ff0f-41ad-ab24-373d97dac72c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID694757f2-ff0f-41ad-ab24-373d97dac72c"}},{"type":"GetParameter","id":"EID4abe1343-3f15-4ee1-ae38-0b760dc029ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID54d343cd-655a-4545-adfb-efe8239353d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID82a4190a-b49c-4b18-9084-9d00bb1055e7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EIDdddd7b96-84cc-4862-8fec-f90f7f50da04","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDdddd7b96-84cc-4862-8fec-f90f7f50da04"}},{"type":"ServiceEndpoint","id":"EID4c110ab1-8818-488a-b536-6e0165fb7090","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EIDcd77b131-5b7c-45a4-8a19-93e12d2c4dc0","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDcd77b131-5b7c-45a4-8a19-93e12d2c4dc0"}},{"type":"Message","id":"EID8dc6576f-c91e-43c4-9ec3-90f44407aa60","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID8dc6576f-c91e-43c4-9ec3-90f44407aa60"}},{"type":"Message","id":"EIDdd0c0918-3e02-43b6-b19c-62b05e907d27","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDdd0c0918-3e02-43b6-b19c-62b05e907d27"}},{"type":"ServiceEndpoint","id":"EID0d4bd05d-0f7f-46e4-b560-2fa5fd5bacf9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID6b72505a-e1f0-4f59-8d91-0eb3db3becd1","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID6b72505a-e1f0-4f59-8d91-0eb3db3becd1"}},{"type":"ServiceEndpoint","id":"EIDb098c59e-c7a2-4e51-834f-9de11f1e58bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EID9315f5d0-1609-467e-aa55-b178faf55d7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"LogFile","id":"EIDa3e68d32-6e64-4661-94f4-2c60e86a7875","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa3e68d32-6e64-4661-94f4-2c60e86a7875"}},{"type":"GetParameter","id":"EIDd9fa0c4f-cbce-4703-bc47-a783538fdeb5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EIDc1c2c142-75fc-4d1d-b94e-77f4ccce82fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDc1c2c142-75fc-4d1d-b94e-77f4ccce82fe"}},{"type":"ServiceEndpoint","id":"EID0293c494-7d5d-4044-ba33-40fcc012519f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDc823209c-170a-4345-88e0-35b0f81bdfe9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDc86624d0-8770-4200-bcb4-40eaff828acd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDc86624d0-8770-4200-bcb4-40eaff828acd"}},{"type":"GetParameter","id":"EID494bcb30-ce1b-4fb6-9446-2f84c738a408","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2Rvd25sb2Fkcy9pbnZhc2lldmUtZXhvdGVuLmdtbC56aXA="},{"type":"GetParameter","id":"EID31a4288b-d2e6-4f22-ad68-d58215a3988e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L3htbC5tZXRhZGF0YS5nZXQ="},{"type":"ServiceEndpoint","id":"EID8cea9710-2f83-421c-ae64-e628ccce0e00","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDa949a581-9414-4f57-968f-0c04ccb4c264","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDa949a581-9414-4f57-968f-0c04ccb4c264"}},{"type":"GetParameter","id":"EIDef7495a1-befd-4368-bb9d-77c8e9302bcb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDe5e5a086-d24e-46c7-8d2d-6b69e65b230f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID13787f88-99b2-4a85-bdf6-64d265f56bfe","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID13787f88-99b2-4a85-bdf6-64d265f56bfe"}},{"type":"GetParameter","id":"EID15169a02-821d-4ef3-80f8-f2917e6f0b1f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDecfb29bd-dafc-491a-a738-021531ccc993","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDecfb29bd-dafc-491a-a738-021531ccc993"}},{"type":"Message","id":"EID3d8bd7ba-5bb7-446c-a9c7-7e08ff0b33c8","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID3d8bd7ba-5bb7-446c-a9c7-7e08ff0b33c8"}},{"type":"Message","id":"EID42aafe20-94e5-4dab-b738-fc9a21f48cdb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID42aafe20-94e5-4dab-b738-fc9a21f48cdb"}},{"type":"ServiceEndpoint","id":"EID02d7a351-43d1-4d47-bd37-16ed9266052c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID182bbb9e-0bef-4e74-8f0b-854b25f3786a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID56b715ef-f1b0-4b69-9ef6-c72f0ae4cefb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID56b715ef-f1b0-4b69-9ef6-c72f0ae4cefb"}},{"type":"Message","id":"EID592b9479-4a48-461a-b714-9f32b1a25694","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID592b9479-4a48-461a-b714-9f32b1a25694"}},{"type":"GetParameter","id":"EID779b6700-5c60-408b-99cc-162414351f66","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID867e0454-bdc4-490f-82dc-c384f92c4b69","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID867e0454-bdc4-490f-82dc-c384f92c4b69"}},{"type":"GetParameter","id":"EID0d44b903-bbca-4f30-ab9c-a2a4d224a611","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EIDe46a2e1e-1ff8-4b17-8472-6d55bce24aba","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDe46a2e1e-1ff8-4b17-8472-6d55bce24aba"}},{"type":"GetParameter","id":"EID7d809047-98c3-4644-b00c-ef6d90e6d3f9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDbf45b87b-ca34-4429-98dd-44709bf9c790","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDbf45b87b-ca34-4429-98dd-44709bf9c790"}},{"type":"ServiceResponse","id":"EID037aed1a-5580-442d-bffd-9140e912ee42","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID037aed1a-5580-442d-bffd-9140e912ee42"}},{"type":"ServiceResponse","id":"EID563db6cf-d9ab-406b-bff0-d9985ca350d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID563db6cf-d9ab-406b-bff0-d9985ca350d6"}},{"type":"ServiceEndpoint","id":"EID2e811611-8c12-4574-8278-6be70b004a42","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID7238afa9-5ab0-4ce2-bc6a-56d73755feaf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID9559c726-c513-44a1-a4df-01b38b1d74f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EID9559c726-c513-44a1-a4df-01b38b1d74f8"}},{"type":"ServiceResponse","id":"EIDebd10ae3-609a-462c-9d64-7c2a0786230a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID347853ac-4983-4b74-9f18-6901a926a90e/Attachments/EIDebd10ae3-609a-462c-9d64-7c2a0786230a"}},{"type":"ServiceEndpoint","id":"EID27428e96-9a25-4b73-bff4-5aeb19ff2e73","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:07:16Z","duration":67497,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.001
11:08:48.307 [print] EID189aa04f-635e-4577-816d-683e7419b00a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:08:48.308 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:08:48.308 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:08:48.308 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:08:48.308 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/189aa04f-635e-4577-816d-683e7419b00a.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:08:48.309 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/189aa04f-635e-4577-816d-683e7419b00a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:08:48.310 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID189aa04f-635e-4577-816d-683e7419b00a/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.001
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.010
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.003
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:08:48.328 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.incorrectFeedSelfReference"
]
* print sortedrefs 0.000
11:08:48.328 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.001
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.395
* print "testing url:" + metadata.url 0.000
11:13:14.970 [print] testing url:https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.395
11:13:14.970 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:15.365 response time in milliseconds: 394.34
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:15 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.438
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.437
11:13:15.371 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:13:15.808 response time in milliseconds: 436.59
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:15 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:15.809 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.565
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:09:34.038 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.565
11:09:34.039 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}

11:09:35.595 response time in milliseconds: 1449.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:35 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883375416","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:09:35.604 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.490
* print "testing url:" + metadata.url 0.000
11:12:44.486 [print] testing url:https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities
Given url metadata.url 0.000
When method HEAD 0.490
11:12:44.487 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:44.977 response time in milliseconds: 489.82
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: text/html;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:44 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.483
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.483
11:12:44.990 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:45.470 response time in milliseconds: 480.15
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Type: text/html;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:45 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:20 - path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:45.471 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
27.140
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:16:02.283 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.450
11:16:02.283 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:16:07.731 response time in milliseconds: 4708.87
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:06 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:16:04 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544.json","testRuns":{"TestRun":{"id":"EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:04.468Z","testTasks":{"TestTask":{"id":"EIDbcf93c81-20be-4378-aeb1-d3fe92c7bab5","parent":{"ref":"EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID75c95706-e449-4736-ac25-9f3dbe7a1347"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID75c95706-e449-4736-ac25-9f3dbe7a1347","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:16:02.728Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:16:04.019Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:16:07.734 [print] EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:07.734 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:07.734 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:16:07.734 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:07.734 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:16:07.734 [print] statuspath TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544
* print 'progresspath ', progresspath 0.000
11:16:07.734 [print] progresspath  TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/progress
Given path progresspath 0.000
When method GET 0.568
11:16:07.735 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:08.303 response time in milliseconds: 567.77
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:16:08 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:16:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:04 UTC 2020)","28.10.2020 11:16:04 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:04 - Preparing 1 Test Task:","28.10.2020 11:16:04 -  TestTask 1 (bcf93c81-20be-4378-aeb1-d3fe92c7bab5)","28.10.2020 11:16:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:04 -  with parameters: ","28.10.2020 11:16:04 - etf.testcases = *","28.10.2020 11:16:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:04 - Setting state to CREATED","28.10.2020 11:16:04 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:04 - Starting TestRun.ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544 at 2020-10-28T11:16:06Z","28.10.2020 11:16:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:06 - Project Properties: ","28.10.2020 11:16:06 - etf.testcases - * ","28.10.2020 11:16:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:16:06 - username -  ","28.10.2020 11:16:06 - authUser -  ","28.10.2020 11:16:06 - authMethod - basic ","28.10.2020 11:16:06 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:16:08.304 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:16:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:04 UTC 2020)",
    "28.10.2020 11:16:04 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:16:04 - Preparing 1 Test Task:",
    "28.10.2020 11:16:04 -  TestTask 1 (bcf93c81-20be-4378-aeb1-d3fe92c7bab5)",
    "28.10.2020 11:16:04 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:16:04 -  with parameters: ",
    "28.10.2020 11:16:04 - etf.testcases = *",
    "28.10.2020 11:16:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:16:04 - Setting state to CREATED",
    "28.10.2020 11:16:04 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:16:04 - Starting TestRun.ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544 at 2020-10-28T11:16:06Z",
    "28.10.2020 11:16:06 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:16:06 - Project Properties: ",
    "28.10.2020 11:16:06 - etf.testcases - * ",
    "28.10.2020 11:16:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:16:06 - username -  ",
    "28.10.2020 11:16:06 - authUser -  ",
    "28.10.2020 11:16:06 - authMethod - basic ",
    "28.10.2020 11:16:06 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 17.072
11:16:08.304 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:08.824 response time in milliseconds: 519.55
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:16:08 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["28.10.2020 11:16:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:04 UTC 2020)","28.10.2020 11:16:04 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:04 - Preparing 1 Test Task:","28.10.2020 11:16:04 -  TestTask 1 (bcf93c81-20be-4378-aeb1-d3fe92c7bab5)","28.10.2020 11:16:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:04 -  with parameters: ","28.10.2020 11:16:04 - etf.testcases = *","28.10.2020 11:16:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:04 - Setting state to CREATED","28.10.2020 11:16:04 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:04 - Starting TestRun.ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544 at 2020-10-28T11:16:06Z","28.10.2020 11:16:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:06 - Project Properties: ","28.10.2020 11:16:06 - etf.testcases - * ","28.10.2020 11:16:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:16:06 - username -  ","28.10.2020 11:16:06 - authUser -  ","28.10.2020 11:16:06 - authMethod - basic ","28.10.2020 11:16:06 - TestRunTask initialized"]}

11:16:08.825 retry condition not satisfied: response.val == response.max
11:16:08.825 sleeping before retry #1
11:16:13.825 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:14.345 response time in milliseconds: 518.86
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:16:14 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"96","max":"97","log":["28.10.2020 11:16:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:04 UTC 2020)","28.10.2020 11:16:04 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:04 - Preparing 1 Test Task:","28.10.2020 11:16:04 -  TestTask 1 (bcf93c81-20be-4378-aeb1-d3fe92c7bab5)","28.10.2020 11:16:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:04 -  with parameters: ","28.10.2020 11:16:04 - etf.testcases = *","28.10.2020 11:16:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:04 - Setting state to CREATED","28.10.2020 11:16:04 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:04 - Starting TestRun.ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544 at 2020-10-28T11:16:06Z","28.10.2020 11:16:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:06 - Project Properties: ","28.10.2020 11:16:06 - etf.testcases - * ","28.10.2020 11:16:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:16:06 - username -  ","28.10.2020 11:16:06 - authUser -  ","28.10.2020 11:16:06 - authMethod - basic ","28.10.2020 11:16:06 - TestRunTask initialized","28.10.2020 11:16:09 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:16:09 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:16:11 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:16:13 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:16:13 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes"]}

11:16:14.345 retry condition not satisfied: response.val == response.max
11:16:14.345 sleeping before retry #2
11:16:19.346 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:19.860 response time in milliseconds: 513.11
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:16:19 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:16:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:16:04 UTC 2020)","28.10.2020 11:16:04 - Resolving Executable Test Suite dependencies","28.10.2020 11:16:04 - Preparing 1 Test Task:","28.10.2020 11:16:04 -  TestTask 1 (bcf93c81-20be-4378-aeb1-d3fe92c7bab5)","28.10.2020 11:16:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:16:04 -  with parameters: ","28.10.2020 11:16:04 - etf.testcases = *","28.10.2020 11:16:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:16:04 - Setting state to CREATED","28.10.2020 11:16:04 - Changed state from CREATED to INITIALIZING","28.10.2020 11:16:04 - Starting TestRun.ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544 at 2020-10-28T11:16:06Z","28.10.2020 11:16:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:16:06 - Project Properties: ","28.10.2020 11:16:06 - etf.testcases - * ","28.10.2020 11:16:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:16:06 - username -  ","28.10.2020 11:16:06 - authUser -  ","28.10.2020 11:16:06 - authMethod - basic ","28.10.2020 11:16:06 - TestRunTask initialized","28.10.2020 11:16:09 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:16:09 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:16:11 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:16:13 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:16:13 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:14 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:16:14 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:15 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:15 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:15 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:16:15 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:16:15 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:15 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:16:15 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:16 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:16 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:16:16 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:16:17 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:16:19.860 retry condition not satisfied: response.val == response.max
11:16:19.861 sleeping before retry #3
11:16:24.861 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:25.376 response time in milliseconds: 514.07
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:16:25 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

11:16:25.376 retry condition satisfied
* print response 0.000
11:16:25.376 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 4.009
11:16:25.377 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:29.383 response time in milliseconds: 3046.57
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:16:28 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:16:21 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544.json","testRuns":{"TestRun":{"id":"EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:16:04.468Z","testTasks":{"TestTask":{"id":"EIDbcf93c81-20be-4378-aeb1-d3fe92c7bab5","parent":{"ref":"EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID75c95706-e449-4736-ac25-9f3dbe7a1347"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID75c95706-e449-4736-ac25-9f3dbe7a1347","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:16:02.728Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:16:04.019Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8","testObject":{"ref":"EID75c95706-e449-4736-ac25-9f3dbe7a1347"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eec12ea-0175-1000-fa72-a3847cd82ef9","testCaseResults":{"TestCaseResult":[{"id":"EID6eec12ea-0175-1000-88c3-b7b6a22e2615","testStepResults":{"TestStepResult":[{"id":"EID6eec12eb-0175-1000-b78b-8fe6e0874f08","parent":{"ref":"EID6eec12ea-0175-1000-88c3-b7b6a22e2615"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:16:06Z","duration":18,"status":"PASSED"},{"id":"EID6eec12fd-0175-1000-8ce9-966723933761","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1455-0175-1000-9b99-0ac8990742f4","parent":{"ref":"EID6eec12fd-0175-1000-8ce9-966723933761"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:16:06Z","duration":1,"status":"PASSED"},{"id":"EID6eec1456-0175-1000-f709-a7ef6663d0ab","parent":{"ref":"EID6eec12fd-0175-1000-8ce9-966723933761"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1456-0175-1000-3eb4-6720e04c9ec6","parent":{"ref":"EID6eec12fd-0175-1000-8ce9-966723933761"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6eec1456-0175-1000-1e9a-328114a074d6","parent":{"ref":"EID6eec12fd-0175-1000-8ce9-966723933761"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID081c770d-401e-4547-b32c-5394aa3dad49"},{"ref":"EID795bb66d-e2ba-4c6d-b757-c017499fcc5d"},{"ref":"EID5cee4ef0-4ca2-4d07-900e-50acebe898aa"}]},"parent":{"ref":"EID6eec12ea-0175-1000-88c3-b7b6a22e2615"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:16:06Z","duration":217,"status":"PASSED"}]},"parent":{"ref":"EID6eec12ea-0175-1000-fa72-a3847cd82ef9"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:16:06Z","duration":364,"status":"PASSED"},{"id":"EID6eec14cc-0175-1000-1caf-e39c259d76ea","testStepResults":{"TestStepResult":{"id":"EID6eec14cc-0175-1000-b2f7-1eec3cb344cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec159d-0175-1000-8e7f-8b7b8375f947","parent":{"ref":"EID6eec14cc-0175-1000-b2f7-1eec3cb344cd"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec159d-0175-1000-c5af-1e1d11ad90b7","parent":{"ref":"EID6eec14cc-0175-1000-b2f7-1eec3cb344cd"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec159d-0175-1000-e8d4-c1bd03f5038f","parent":{"ref":"EID6eec14cc-0175-1000-b2f7-1eec3cb344cd"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID56f67324-574c-46d8-bc08-f493a927d010"},{"ref":"EIDd17426ae-5239-45b7-acf2-239e022207e7"},{"ref":"EID2c05f1f6-950e-471e-b870-3217c8278ad1"}]},"parent":{"ref":"EID6eec14cc-0175-1000-1caf-e39c259d76ea"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:16:06Z","duration":89,"status":"PASSED"}},"parent":{"ref":"EID6eec12ea-0175-1000-fa72-a3847cd82ef9"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:16:06Z","duration":209,"status":"PASSED"}]},"parent":{"ref":"EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:16:06Z","duration":691,"status":"PASSED"},{"id":"EID6eec159d-0175-1000-e93f-22e6a930c869","testCaseResults":{"TestCaseResult":[{"id":"EID6eec159d-0175-1000-e344-da795a4b4ad7","testStepResults":{"TestStepResult":[{"id":"EID6eec159d-0175-1000-d765-340649117f1c","parent":{"ref":"EID6eec159d-0175-1000-e344-da795a4b4ad7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":89,"status":"PASSED"},{"id":"EID6eec159d-0175-1000-9df5-668c0c3ce869","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec165a-0175-1000-2d3f-da615c7a765f","parent":{"ref":"EID6eec159d-0175-1000-9df5-668c0c3ce869"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec165a-0175-1000-2e4f-157b076e5fd9","parent":{"ref":"EID6eec159d-0175-1000-9df5-668c0c3ce869"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec165a-0175-1000-22ff-af8e0a40e44e","parent":{"ref":"EID6eec159d-0175-1000-9df5-668c0c3ce869"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec165a-0175-1000-27e2-519178337256","parent":{"ref":"EID6eec159d-0175-1000-9df5-668c0c3ce869"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec165a-0175-1000-7d44-d09ab37a6904","parent":{"ref":"EID6eec159d-0175-1000-9df5-668c0c3ce869"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a309c0f-a8d4-46bc-8736-6b79b1b78fd2"},{"ref":"EID46487097-9bcb-45d6-85ae-2be7179bad64"},{"ref":"EID8f9bad36-0e05-4c44-98a4-db6e514d0cdf"}]},"parent":{"ref":"EID6eec159d-0175-1000-e344-da795a4b4ad7"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:16:07Z","duration":70,"status":"PASSED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:16:07Z","duration":189,"status":"PASSED"},{"id":"EID6eec165a-0175-1000-1bb6-fa4b2c275341","testStepResults":{"TestStepResult":[{"id":"EID6eec165a-0175-1000-179a-390b1d78674d","attachments":{"attachment":[{"ref":"EID6b2a2702-fb11-42d9-b37a-0111083fa37f"},{"ref":"EID007ba370-09b2-4928-a02e-0b5a98bb7fdb"}]},"parent":{"ref":"EID6eec165a-0175-1000-1bb6-fa4b2c275341"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":188,"status":"PASSED"},{"id":"EID6eec1740-0175-1000-27f2-e0f56f3b1203","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec17f4-0175-1000-5e1d-4a1e6c53b4a0","parent":{"ref":"EID6eec1740-0175-1000-27f2-e0f56f3b1203"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17f4-0175-1000-f258-eb93cf604d1b","parent":{"ref":"EID6eec1740-0175-1000-27f2-e0f56f3b1203"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17f4-0175-1000-6880-0256466ed44c","parent":{"ref":"EID6eec1740-0175-1000-27f2-e0f56f3b1203"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6eec17f4-0175-1000-73dd-020586c38275","parent":{"ref":"EID6eec1740-0175-1000-27f2-e0f56f3b1203"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:16:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID69d74d5e-57ea-44bc-a536-72f58ed3834b"},{"ref":"EID0b526571-754e-4d61-ba59-940a823cfb74"},{"ref":"EID14b5fc6c-aa6a-4c63-bc13-1ff23dd5b6b3"}]},"parent":{"ref":"EID6eec165a-0175-1000-1bb6-fa4b2c275341"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:16:07Z","duration":65,"status":"PASSED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:16:07Z","duration":410,"status":"PASSED"},{"id":"EID6eec17f4-0175-1000-7e78-a934dd0431f0","testStepResults":{"TestStepResult":[{"id":"EID6eec17f4-0175-1000-e0a7-296707ea9102","attachments":{"attachment":[{"ref":"EID577d066f-f6a4-461e-a1eb-29568e89e888"},{"ref":"EID153bb2f5-517a-490e-bbc5-1661554e007b"}]},"parent":{"ref":"EID6eec17f4-0175-1000-7e78-a934dd0431f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:16:07Z","duration":173,"status":"PASSED"},{"id":"EID6eec18cb-0175-1000-f599-f34a3d390f2f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec19bd-0175-1000-68a2-71b6af413f84","parent":{"ref":"EID6eec18cb-0175-1000-f599-f34a3d390f2f"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19be-0175-1000-2eba-e26e3f8518a4","parent":{"ref":"EID6eec18cb-0175-1000-f599-f34a3d390f2f"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19be-0175-1000-1f5a-99b96be6dca9","parent":{"ref":"EID6eec18cb-0175-1000-f599-f34a3d390f2f"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19be-0175-1000-1dc5-e64ae3c9d614","parent":{"ref":"EID6eec18cb-0175-1000-f599-f34a3d390f2f"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec19be-0175-1000-c8b5-8d1d132d4c5b","parent":{"ref":"EID6eec18cb-0175-1000-f599-f34a3d390f2f"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf77b3532-56af-4987-b6b2-840e64d20918"},{"ref":"EIDe77b31f6-a081-431c-a062-43bef4ab0e50"},{"ref":"EIDdaff20d6-3389-4ebe-b33e-80ea202e5b7d"}]},"parent":{"ref":"EID6eec17f4-0175-1000-7e78-a934dd0431f0"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:16:08Z","duration":50,"status":"PASSED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:16:07Z","duration":466,"status":"PASSED"},{"id":"EID6eec19c6-0175-1000-1e3b-011c967469e2","testStepResults":{"TestStepResult":[{"id":"EID6eec19c6-0175-1000-b144-20e1686b1656","attachments":{"attachment":[{"ref":"EID55e282b8-7713-4773-827c-83d1006a858e"},{"ref":"EIDa7c43eaa-a564-4502-9074-35ea1a52b3fc"}]},"parent":{"ref":"EID6eec19c6-0175-1000-1e3b-011c967469e2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":125,"status":"PASSED"},{"id":"EID6eec1a6c-0175-1000-c928-f4bc21b753c7","parent":{"ref":"EID6eec19c6-0175-1000-1e3b-011c967469e2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1a6c-0175-1000-deb7-b1f2e2c749fa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1b0d-0175-1000-3b1d-bbd944912ac1","parent":{"ref":"EID6eec1a6c-0175-1000-deb7-b1f2e2c749fa"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b0d-0175-1000-6dc0-8a1a2dbf4b62","parent":{"ref":"EID6eec1a6c-0175-1000-deb7-b1f2e2c749fa"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b0d-0175-1000-69ce-d3869b30824c","parent":{"ref":"EID6eec1a6c-0175-1000-deb7-b1f2e2c749fa"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1b0d-0175-1000-a873-2f16e493ddb4","parent":{"ref":"EID6eec1a6c-0175-1000-deb7-b1f2e2c749fa"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7b5f52c-40e5-40b2-9462-167792bcc6db"},{"ref":"EID4b15690f-5bad-4d27-8659-b00c176cc63f"},{"ref":"EID5a0b20f1-14b5-4028-abac-6a932e45a300"}]},"parent":{"ref":"EID6eec19c6-0175-1000-1e3b-011c967469e2"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:16:08Z","duration":58,"status":"PASSED"},{"id":"EID6eec1b0d-0175-1000-463e-18fcb0946ecf","attachments":{"attachment":{"ref":"EIDeee498c1-24c0-4f85-8f50-426947979f03"}},"parent":{"ref":"EID6eec19c6-0175-1000-1e3b-011c967469e2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":2,"status":"PASSED"},{"id":"EID6eec1b1a-0175-1000-7191-00074dcbfeba","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1bbe-0175-1000-e928-3f9a6b4c5d59","parent":{"ref":"EID6eec1b1a-0175-1000-7191-00074dcbfeba"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1bbe-0175-1000-dff2-c50ae7d167b1","parent":{"ref":"EID6eec1b1a-0175-1000-7191-00074dcbfeba"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1bbe-0175-1000-a8d6-23283631328c","parent":{"ref":"EID6eec1b1a-0175-1000-7191-00074dcbfeba"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1bbe-0175-1000-081a-15298393c761","parent":{"ref":"EID6eec1b1a-0175-1000-7191-00074dcbfeba"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6eec1bbe-0175-1000-f93a-7a64251ce4d9","parent":{"ref":"EID6eec1b1a-0175-1000-7191-00074dcbfeba"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfdfd7d5a-7ea8-4dd2-976b-d9c5c71b85b3"},{"ref":"EIDb2834caf-661c-46f4-a0bf-f31138842c88"},{"ref":"EID0938fc39-5b4d-49d8-bf51-aa267c178ddb"}]},"parent":{"ref":"EID6eec19c6-0175-1000-1e3b-011c967469e2"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:16:08Z","duration":33,"status":"PASSED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:16:08Z","duration":513,"status":"PASSED"},{"id":"EID6eec1bc7-0175-1000-d2d8-b674e35d096d","testStepResults":{"TestStepResult":[{"id":"EID6eec1bc7-0175-1000-5dd9-adbe344505ed","attachments":{"attachment":[{"ref":"EID0b1adea6-1ca9-4d00-bffd-f70d58fec211"},{"ref":"EID425c5177-3004-4c57-965a-d80fa761e31f"}]},"parent":{"ref":"EID6eec1bc7-0175-1000-d2d8-b674e35d096d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:16:08Z","duration":164,"status":"PASSED"},{"id":"EID6eec1c99-0175-1000-9d4b-5c6b5bd23eec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1d79-0175-1000-8891-d65ba22fef6a","parent":{"ref":"EID6eec1c99-0175-1000-9d4b-5c6b5bd23eec"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-1a57-689ea0c1fc37","parent":{"ref":"EID6eec1c99-0175-1000-9d4b-5c6b5bd23eec"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-4d35-29643f8386da","parent":{"ref":"EID6eec1c99-0175-1000-9d4b-5c6b5bd23eec"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-4eb1-9196a01a4004","parent":{"ref":"EID6eec1c99-0175-1000-9d4b-5c6b5bd23eec"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6c917d17-d2cb-4c59-9341-7d04f0ec2a80"},{"ref":"EID7ce44813-c998-49c3-b400-952c53512bc4"},{"ref":"EID08dba7a0-bd91-4780-af0a-0b673b200d9b"}]},"parent":{"ref":"EID6eec1bc7-0175-1000-d2d8-b674e35d096d"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:16:08Z","duration":95,"status":"PASSED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:16:08Z","duration":434,"status":"PASSED"},{"id":"EID6eec1d79-0175-1000-2849-53799067cce0","testStepResults":{"TestStepResult":[{"id":"EID6eec1d79-0175-1000-706d-93f7506d37b3","attachments":{"attachment":[{"ref":"EIDe0d44677-5361-4651-860a-6cf520061513"},{"ref":"EIDbe79c0ed-c06b-46e8-950c-0b1d3216fa18"}]},"parent":{"ref":"EID6eec1d79-0175-1000-2849-53799067cce0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":81,"status":"PASSED"},{"id":"EID6eec1df1-0175-1000-4b62-88876026abaf","parent":{"ref":"EID6eec1d79-0175-1000-2849-53799067cce0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1df2-0175-1000-4075-51df770d74e8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec1f1d-0175-1000-0bb9-4bbc4455b8c0","parent":{"ref":"EID6eec1df2-0175-1000-4075-51df770d74e8"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1f1d-0175-1000-1148-0490493f6859","parent":{"ref":"EID6eec1df2-0175-1000-4075-51df770d74e8"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1f1d-0175-1000-0c06-33d5c86dddbf","parent":{"ref":"EID6eec1df2-0175-1000-4075-51df770d74e8"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec1f1d-0175-1000-f148-6455258735e8","parent":{"ref":"EID6eec1df2-0175-1000-4075-51df770d74e8"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb442964f-8bc4-4f4b-9af3-551815de8ee1"},{"ref":"EIDce3269d7-ed09-4b01-9a5a-a64d16eab5d9"},{"ref":"EID51525e6d-e651-44aa-b57c-764d627fbc59"}]},"parent":{"ref":"EID6eec1d79-0175-1000-2849-53799067cce0"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:16:09Z","duration":126,"status":"PASSED"},{"id":"EID6eec1f1d-0175-1000-e99f-2fa310801cc5","attachments":{"attachment":{"ref":"EIDe8a0780e-1a4a-4fb6-9320-5ff280a6feb1"}},"parent":{"ref":"EID6eec1d79-0175-1000-2849-53799067cce0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":2,"status":"PASSED"},{"id":"EID6eec1f30-0175-1000-51ea-ea9f82f735f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec203a-0175-1000-ba86-0ec3a0f5e3cc","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec1f30-0175-1000-51ea-ea9f82f735f3"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:16:09Z","duration":20,"status":"FAILED"},{"id":"EID6eec204e-0175-1000-6683-92723dd4b7eb","parent":{"ref":"EID6eec1f30-0175-1000-51ea-ea9f82f735f3"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"PASSED"},{"id":"EID6eec204e-0175-1000-6ed0-52b3453ea35f","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6eec1f30-0175-1000-51ea-ea9f82f735f3"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:16:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDee791fae-168a-4920-976f-47df1c3058c6"},{"ref":"EID77440391-bed4-4f4a-80fd-a38ff016e0af"},{"ref":"EID5c8b6a88-98ba-4dfd-8a58-14f835f507c0"}]},"parent":{"ref":"EID6eec1d79-0175-1000-2849-53799067cce0"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:16:09Z","duration":209,"status":"FAILED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:16:09Z","duration":725,"status":"FAILED"},{"id":"EID6eec204e-0175-1000-5784-bb00102dda23","testStepResults":{"TestStepResult":[{"id":"EID6eec204f-0175-1000-97cc-8c075f339c91","attachments":{"attachment":[{"ref":"EID866d97e1-5302-457d-b1b8-3b886efddb32"},{"ref":"EIDaac5d5ae-9f51-4a67-8ffe-fdcfe15430dc"}]},"parent":{"ref":"EID6eec204e-0175-1000-5784-bb00102dda23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:16:09Z","duration":196,"status":"PASSED"},{"id":"EID6eec213b-0175-1000-2ff7-1092d3548aea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec224b-0175-1000-22c9-c7f708161a2f","parent":{"ref":"EID6eec213b-0175-1000-2ff7-1092d3548aea"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec224b-0175-1000-250c-9faef9e006db","parent":{"ref":"EID6eec213b-0175-1000-2ff7-1092d3548aea"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec224b-0175-1000-f0a9-d21b999b8938","parent":{"ref":"EID6eec213b-0175-1000-2ff7-1092d3548aea"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec224b-0175-1000-f12f-7676fa176872","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec213b-0175-1000-2ff7-1092d3548aea"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDc8601958-5856-4e5c-8d17-b16ccbb17389"},{"ref":"EID01b3b878-07bd-41f9-a3fe-fe846b3aa266"},{"ref":"EIDa09544ed-aabf-4d70-a646-76b73f213758"}]},"parent":{"ref":"EID6eec204e-0175-1000-5784-bb00102dda23"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:16:10Z","duration":40,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:16:09Z","duration":509,"status":"PASSED_MANUAL"},{"id":"EID6eec224b-0175-1000-96af-4e7a64be248d","testStepResults":{"TestStepResult":{"id":"EID6eec224b-0175-1000-870e-784f63bd1ce3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec22f0-0175-1000-fc84-efc0744027e4","parent":{"ref":"EID6eec224b-0175-1000-870e-784f63bd1ce3"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec22f0-0175-1000-5431-47c3735c5226","parent":{"ref":"EID6eec224b-0175-1000-870e-784f63bd1ce3"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec22f0-0175-1000-778b-4dcf553abe02","parent":{"ref":"EID6eec224b-0175-1000-870e-784f63bd1ce3"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec22f0-0175-1000-bfc6-6aa5cdb6b256","parent":{"ref":"EID6eec224b-0175-1000-870e-784f63bd1ce3"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID32ff7191-cef3-4a4d-9ebb-4f62b56d7dd9"},{"ref":"EID3cc25015-4c6a-48b2-b0c1-1d0333029fad"},{"ref":"EIDee5fc917-149e-4fe8-9259-0df94e7bb4bd"}]},"parent":{"ref":"EID6eec224b-0175-1000-96af-4e7a64be248d"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:16:10Z","duration":53,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:16:10Z","duration":173,"status":"PASSED"},{"id":"EID6eec22f8-0175-1000-b84f-20778ff11e29","testStepResults":{"TestStepResult":{"id":"EID6eec22f8-0175-1000-07ed-0c7de902003b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2387-0175-1000-a4e1-e28901b38cce","parent":{"ref":"EID6eec22f8-0175-1000-07ed-0c7de902003b"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2387-0175-1000-37ee-031e9c8a6925","parent":{"ref":"EID6eec22f8-0175-1000-07ed-0c7de902003b"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2387-0175-1000-9deb-2109dd25338f","parent":{"ref":"EID6eec22f8-0175-1000-07ed-0c7de902003b"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"},{"id":"EID6eec2387-0175-1000-b2ed-f99483479ffb","parent":{"ref":"EID6eec22f8-0175-1000-07ed-0c7de902003b"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:16:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID44196e31-667c-468e-aaa3-cef8a1b72f92"},{"ref":"EIDfb658e6f-bcde-464b-8ea9-6709f45e8930"},{"ref":"EID0e64f7e8-c4eb-4bcb-9696-498ebe631f31"}]},"parent":{"ref":"EID6eec22f8-0175-1000-b84f-20778ff11e29"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:16:10Z","duration":35,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:16:10Z","duration":143,"status":"PASSED"},{"id":"EID6eec2387-0175-1000-bce8-fac423f30463","testStepResults":{"TestStepResult":{"id":"EID6eec2387-0175-1000-e2dc-e546d0401592","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID7eccc363-8c74-40b4-936a-ce2d4381860a"},{"ref":"EID705d89e0-e401-4eb2-b7f5-cde85fd38b71"},{"ref":"EID32a2cb5f-6a37-4b09-9abb-7fed744b700d"},{"ref":"EID88a8a54f-3e84-4fa7-bbb7-b5faf654f254"},{"ref":"EID0b947a01-ab19-42bb-918c-06a5060cf655"},{"ref":"EID24589f6c-c6b7-4cec-83f6-982ca02cd87c"},{"ref":"EID0a31d6f7-06b1-4687-ab31-e528efd2cacd"},{"ref":"EID3fc24162-2346-4025-bac3-bcfeae127cd7"},{"ref":"EIDf8a5ed1c-1f1d-4d20-951d-5985e3dd9da3"}]},"parent":{"ref":"EID6eec2387-0175-1000-bce8-fac423f30463"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:16:10Z","duration":628,"status":"SKIPPED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:16:10Z","duration":743,"status":"SKIPPED"},{"id":"EID6eec266e-0175-1000-2c7a-9401d3391c12","testStepResults":{"TestStepResult":{"id":"EID6eec266f-0175-1000-9105-2957f576e242","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2725-0175-1000-a7f7-829b4db757e8","parent":{"ref":"EID6eec266f-0175-1000-9105-2957f576e242"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2725-0175-1000-76df-0c4ff4d634b7","parent":{"ref":"EID6eec266f-0175-1000-9105-2957f576e242"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2725-0175-1000-9243-762e53cd12a5","parent":{"ref":"EID6eec266f-0175-1000-9105-2957f576e242"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2725-0175-1000-c8f3-63fb57515a04","parent":{"ref":"EID6eec266f-0175-1000-9105-2957f576e242"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID357b9aa4-c1f3-43f0-9e50-d1ca56471a03"},{"ref":"EIDefb3feee-d6d5-4926-806b-592965d6570d"},{"ref":"EID1041e9e7-0818-4304-b05b-22d335102a21"}]},"parent":{"ref":"EID6eec266e-0175-1000-2c7a-9401d3391c12"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:16:11Z","duration":80,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:16:11Z","duration":183,"status":"PASSED"},{"id":"EID6eec2725-0175-1000-8cfd-a0aecc3f3cb7","testStepResults":{"TestStepResult":{"id":"EID6eec2725-0175-1000-14e2-9b90e696b2fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2821-0175-1000-6d1f-a322f14b43aa","parent":{"ref":"EID6eec2725-0175-1000-14e2-9b90e696b2fd"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2821-0175-1000-6553-7816425b2ac5","parent":{"ref":"EID6eec2725-0175-1000-14e2-9b90e696b2fd"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2821-0175-1000-4118-02a706bc7cdf","parent":{"ref":"EID6eec2725-0175-1000-14e2-9b90e696b2fd"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2821-0175-1000-7cdf-3f02f8ce02a5","parent":{"ref":"EID6eec2725-0175-1000-14e2-9b90e696b2fd"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2821-0175-1000-82a8-69b666e1077b","parent":{"ref":"EID6eec2725-0175-1000-14e2-9b90e696b2fd"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"},{"id":"EID6eec2821-0175-1000-4247-2325b35d071f","parent":{"ref":"EID6eec2725-0175-1000-14e2-9b90e696b2fd"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:16:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb7643c44-5002-4261-8c80-e6d3a517b007"},{"ref":"EID925c2a3b-ae2b-495a-adfe-a4e1c113de1c"},{"ref":"EID1e255e9e-a501-4190-a567-343e38f9142c"}]},"parent":{"ref":"EID6eec2725-0175-1000-8cfd-a0aecc3f3cb7"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:16:11Z","duration":55,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:16:11Z","duration":252,"status":"PASSED"},{"id":"EID6eec2821-0175-1000-b490-39a9809659a2","testStepResults":{"TestStepResult":{"id":"EID6eec282a-0175-1000-7699-1bc66ade8242","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec29b9-0175-1000-8590-3082cf74ece5","parent":{"ref":"EID6eec282a-0175-1000-7699-1bc66ade8242"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec29b9-0175-1000-2fa8-8a0a21b77f40","parent":{"ref":"EID6eec282a-0175-1000-7699-1bc66ade8242"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec29b9-0175-1000-17dc-26e61ba5bdf8","parent":{"ref":"EID6eec282a-0175-1000-7699-1bc66ade8242"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec29b9-0175-1000-a8a1-5099dcea333d","parent":{"ref":"EID6eec282a-0175-1000-7699-1bc66ade8242"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec29b9-0175-1000-79dc-2a68906393a8","parent":{"ref":"EID6eec282a-0175-1000-7699-1bc66ade8242"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec29b9-0175-1000-fdc2-418617619f69","parent":{"ref":"EID6eec282a-0175-1000-7699-1bc66ade8242"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID614cff79-14d0-4da7-bb7a-4e9486ac841d"},{"ref":"EID8b293cdb-4f04-48f7-b09a-c81007aac456"},{"ref":"EID61e234c0-6b21-457d-a556-7f6c073d273b"}]},"parent":{"ref":"EID6eec2821-0175-1000-b490-39a9809659a2"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:16:11Z","duration":58,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:16:11Z","duration":408,"status":"PASSED"},{"id":"EID6eec29b9-0175-1000-736e-780cd1d5410b","testStepResults":{"TestStepResult":{"id":"EID6eec29b9-0175-1000-b1b6-0666a28cc050","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2a70-0175-1000-0df0-1b0afc0d56f8","parent":{"ref":"EID6eec29b9-0175-1000-b1b6-0666a28cc050"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2a70-0175-1000-28cf-e6c355acde70","parent":{"ref":"EID6eec29b9-0175-1000-b1b6-0666a28cc050"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2a70-0175-1000-356a-33d2e0cef8b9","parent":{"ref":"EID6eec29b9-0175-1000-b1b6-0666a28cc050"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"},{"id":"EID6eec2a70-0175-1000-fae4-10b5675fd40c","parent":{"ref":"EID6eec29b9-0175-1000-b1b6-0666a28cc050"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:16:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3fd843e9-3f8d-4615-9200-2fb9e88d0612"},{"ref":"EIDcebe8069-ef3f-453a-8c5f-094aa73542d5"},{"ref":"EIDf5dc5238-9404-4bc3-a1d9-9076521eb370"}]},"parent":{"ref":"EID6eec29b9-0175-1000-736e-780cd1d5410b"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:16:12Z","duration":87,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:16:12Z","duration":183,"status":"PASSED"},{"id":"EID6eec2a70-0175-1000-4a9e-2b51677ec7ff","testStepResults":{"TestStepResult":[{"id":"EID6eec2a70-0175-1000-5dc9-47cd3c285c3f","attachments":{"attachment":[{"ref":"EID4c650a5f-239e-43fb-90bc-8e53dc1f00fa"},{"ref":"EID0878de10-46df-4c4e-b284-b6adde054838"},{"ref":"EIDb4c05287-d80a-4c1b-a609-56e3b6a867c5"},{"ref":"EIDbc3516ba-0561-4e52-bdcf-e49000776bc6"}]},"parent":{"ref":"EID6eec2a70-0175-1000-4a9e-2b51677ec7ff"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:16:12Z","duration":328,"status":"PASSED"},{"id":"EID6eec2be7-0175-1000-c88b-56714da21c15","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2d2b-0175-1000-630c-1e339643bf53","parent":{"ref":"EID6eec2be7-0175-1000-c88b-56714da21c15"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d2b-0175-1000-50ac-cde4cdbdf858","parent":{"ref":"EID6eec2be7-0175-1000-c88b-56714da21c15"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d2b-0175-1000-213a-1c13b83d7053","parent":{"ref":"EID6eec2be7-0175-1000-c88b-56714da21c15"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2d2b-0175-1000-9fd6-7e24b98a75e7","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6eec2be7-0175-1000-c88b-56714da21c15"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5f85fced-3619-4d81-9a6d-8c0d0ba9a53a"},{"ref":"EIDc6a318c6-fdcc-4f68-9f02-305cedf62d40"},{"ref":"EID0882cb8c-5ac3-4035-995b-58c38f9886b6"}]},"parent":{"ref":"EID6eec2a70-0175-1000-4a9e-2b51677ec7ff"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:16:12Z","duration":63,"status":"FAILED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:16:12Z","duration":699,"status":"FAILED"},{"id":"EID6eec2d2b-0175-1000-96ad-793659a66fde","testStepResults":{"TestStepResult":{"id":"EID6eec2d2b-0175-1000-7684-b3b722869496","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2dd1-0175-1000-7728-4ceb7d5f883d","parent":{"ref":"EID6eec2d2b-0175-1000-7684-b3b722869496"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dd1-0175-1000-42e1-a7afbc43a727","parent":{"ref":"EID6eec2d2b-0175-1000-7684-b3b722869496"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dd1-0175-1000-a118-582fd842b6b8","parent":{"ref":"EID6eec2d2b-0175-1000-7684-b3b722869496"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dd1-0175-1000-fcf8-d079257ecebb","parent":{"ref":"EID6eec2d2b-0175-1000-7684-b3b722869496"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID59c8cf79-6258-4c2b-9077-0938782c8792"},{"ref":"EID98afccf5-8d86-4499-adc6-4c38852461f4"},{"ref":"EID0b129977-a638-4ae6-a307-a1f313a86264"}]},"parent":{"ref":"EID6eec2d2b-0175-1000-96ad-793659a66fde"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:16:13Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:16:13Z","duration":166,"status":"PASSED"},{"id":"EID6eec2dd2-0175-1000-894a-ce0ba6e95624","testStepResults":{"TestStepResult":[{"id":"EID6eec2dd2-0175-1000-cec7-fad65b923985","parent":{"ref":"EID6eec2dd2-0175-1000-894a-ce0ba6e95624"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2dd2-0175-1000-0669-be3c8711dec0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2eed-0175-1000-be5a-6f23de2f18c1","parent":{"ref":"EID6eec2dd2-0175-1000-0669-be3c8711dec0"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2eed-0175-1000-ef13-06132e014f42","parent":{"ref":"EID6eec2dd2-0175-1000-0669-be3c8711dec0"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2eed-0175-1000-101a-a6e1c2ec81e4","parent":{"ref":"EID6eec2dd2-0175-1000-0669-be3c8711dec0"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2eed-0175-1000-7ff2-eb9a0669932c","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eec2dd2-0175-1000-0669-be3c8711dec0"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9296b7d1-3da9-4e30-9071-bb391f0a5f29"},{"ref":"EID54fdc1cf-d5eb-4ddb-9203-c8578ac44cfc"},{"ref":"EIDd2df19bb-d7c3-4f86-b760-99094ad18855"}]},"parent":{"ref":"EID6eec2dd2-0175-1000-894a-ce0ba6e95624"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:16:13Z","duration":71,"status":"FAILED"}]},"parent":{"ref":"EID6eec159d-0175-1000-e93f-22e6a930c869"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:16:13Z","duration":294,"status":"FAILED"}]},"parent":{"ref":"EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:16:07Z","duration":6492,"status":"FAILED"},{"id":"EID6eec2ef9-0175-1000-af4b-5671e846af15","testCaseResults":{"TestCaseResult":[{"id":"EID6eec2ef9-0175-1000-694a-c6fdcf1f7a63","testStepResults":{"TestStepResult":[{"id":"EID6eec2ef9-0175-1000-d260-cf1f116d52db","parent":{"ref":"EID6eec2ef9-0175-1000-694a-c6fdcf1f7a63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2ef9-0175-1000-46ee-5e2b05801601","parent":{"ref":"EID6eec2ef9-0175-1000-694a-c6fdcf1f7a63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":43,"status":"PASSED"},{"id":"EID6eec2ef9-0175-1000-c4ff-fd615ef6f316","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec2fb1-0175-1000-9948-d6b4140e8e69","parent":{"ref":"EID6eec2ef9-0175-1000-c4ff-fd615ef6f316"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2fb1-0175-1000-41f8-875fef7a7f33","parent":{"ref":"EID6eec2ef9-0175-1000-c4ff-fd615ef6f316"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:16:13Z","duration":1,"status":"PASSED"},{"id":"EID6eec2fb2-0175-1000-b3a4-61f514d0c69c","parent":{"ref":"EID6eec2ef9-0175-1000-c4ff-fd615ef6f316"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaf45b1ec-7f0a-4a9d-980b-26eeb8ccc44b"},{"ref":"EIDc82e0a17-ce0c-494e-94a9-daffdf7d42ae"},{"ref":"EIDf3fb3c92-45c8-4b04-b65c-5e9a15c8df6a"}]},"parent":{"ref":"EID6eec2ef9-0175-1000-694a-c6fdcf1f7a63"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:16:13Z","duration":63,"status":"PASSED"},{"id":"EID6eec2fb2-0175-1000-d8e3-cfb5856f959b","attachments":{"attachment":{"ref":"EID3fd277ef-66ed-4001-af01-392cce5424f4"}},"parent":{"ref":"EID6eec2ef9-0175-1000-694a-c6fdcf1f7a63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":0,"status":"PASSED"},{"id":"EID6eec2fc1-0175-1000-79fe-077a388260ca","parent":{"ref":"EID6eec2ef9-0175-1000-694a-c6fdcf1f7a63"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:16:13Z","duration":31,"status":"PASSED"}]},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:16:13Z","duration":231,"status":"PASSED"},{"id":"EID6eec2feb-0175-1000-456a-e078a0c92c6c","testStepResults":{"TestStepResult":[{"id":"EID6eec2feb-0175-1000-d961-31a2251af82c","parent":{"ref":"EID6eec2feb-0175-1000-456a-e078a0c92c6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:16:13Z","duration":89,"status":"PASSED"},{"id":"EID6eec2fec-0175-1000-6dd1-827741c5916a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3059-0175-1000-275c-e07e889da410","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec2fec-0175-1000-6dd1-827741c5916a"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:16:14Z","duration":33,"status":"FAILED"},{"id":"EID6eec307b-0175-1000-8385-04c372a9f537","parent":{"ref":"EID6eec2fec-0175-1000-6dd1-827741c5916a"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec307b-0175-1000-b1de-a6ffadf51835","parent":{"ref":"EID6eec2fec-0175-1000-6dd1-827741c5916a"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec307b-0175-1000-cf51-78701ecef5c2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6eec2fec-0175-1000-6dd1-827741c5916a"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"},{"id":"EID6eec307b-0175-1000-cedd-d651aa00f658","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6eec2fec-0175-1000-6dd1-827741c5916a"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc1a607a9-0aa0-4477-9528-ee8e3ef5e650"},{"ref":"EID137f40d8-7b1b-4f58-a950-2dc57ae0f85a"},{"ref":"EID00b34c92-0e44-419f-808c-51db094aa436"}]},"parent":{"ref":"EID6eec2feb-0175-1000-456a-e078a0c92c6c"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:16:13Z","duration":32,"status":"FAILED"}]},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:16:13Z","duration":144,"status":"FAILED"},{"id":"EID6eec307b-0175-1000-63c8-649bb9c6dbfd","testStepResults":{"TestStepResult":{"id":"EID6eec307b-0175-1000-5d03-7b821c2e250e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3111-0175-1000-df90-36afd0bd80d2","parent":{"ref":"EID6eec307b-0175-1000-5d03-7b821c2e250e"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec3111-0175-1000-7a22-1365f93d3fd4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec307b-0175-1000-5d03-7b821c2e250e"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:16:14Z","duration":12,"status":"FAILED"},{"id":"EID6eec311d-0175-1000-b703-f2e50dbd0d57","parent":{"ref":"EID6eec307b-0175-1000-5d03-7b821c2e250e"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDae3faf19-77e6-4d24-9312-7db3dc7848a2"},{"ref":"EID291fb86d-3e81-4104-a1c8-16354a036232"},{"ref":"EIDba208a59-3d6d-4db9-b859-292a35580658"}]},"parent":{"ref":"EID6eec307b-0175-1000-63c8-649bb9c6dbfd"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:16:14Z","duration":93,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:16:14Z","duration":162,"status":"FAILED"},{"id":"EID6eec311d-0175-1000-f41a-18bd35777464","testStepResults":{"TestStepResult":{"id":"EID6eec311d-0175-1000-0cfe-e90927820a3f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3183-0175-1000-c2f6-d094c6c36149","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eec311d-0175-1000-0cfe-e90927820a3f"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"},{"id":"EID6eec3183-0175-1000-de28-7182143c7293","parent":{"ref":"EID6eec311d-0175-1000-0cfe-e90927820a3f"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec3183-0175-1000-71e0-f8eb9410c9b5","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec311d-0175-1000-0cfe-e90927820a3f"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:16:14Z","duration":11,"status":"FAILED"},{"id":"EID6eec318e-0175-1000-54cf-f692f142bda2","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6eec311d-0175-1000-0cfe-e90927820a3f"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfcd381ed-90ad-4e78-b0de-071962c2585e"},{"ref":"EIDdeae4c44-14a4-4fe3-8be3-0433f4b7b8cc"},{"ref":"EID533f922d-9af6-4d2b-92b5-353ecc058b59"}]},"parent":{"ref":"EID6eec311d-0175-1000-f41a-18bd35777464"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:16:14Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:16:14Z","duration":113,"status":"FAILED"},{"id":"EID6eec318e-0175-1000-663b-3d99c7ab3292","testStepResults":{"TestStepResult":{"id":"EID6eec318e-0175-1000-35a9-cddcf8971436","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec31e1-0175-1000-3b16-976d3a70bcd6","parent":{"ref":"EID6eec318e-0175-1000-35a9-cddcf8971436"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec31e1-0175-1000-ebc1-a6288e6e2508","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec318e-0175-1000-35a9-cddcf8971436"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:16:14Z","duration":13,"status":"FAILED"},{"id":"EID6eec31ee-0175-1000-196a-f9957febd11b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6eec318e-0175-1000-35a9-cddcf8971436"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID83f78bc3-73e9-4100-915c-4c1ea3ed307e"},{"ref":"EIDb5ca39e1-d30a-4ef0-89f4-c2de6c2f6dd4"},{"ref":"EID4c18f5e5-c2e6-4679-b341-8bf3e6393131"}]},"parent":{"ref":"EID6eec318e-0175-1000-663b-3d99c7ab3292"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:16:14Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:16:14Z","duration":96,"status":"FAILED"},{"id":"EID6eec31ee-0175-1000-43ff-8d639fea4c75","testStepResults":{"TestStepResult":{"id":"EID6eec31ee-0175-1000-e562-f1418423706e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec324f-0175-1000-22e8-d2e9e0350370","parent":{"ref":"EID6eec31ee-0175-1000-e562-f1418423706e"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec324f-0175-1000-fccf-1b8ac4df3e66","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec31ee-0175-1000-e562-f1418423706e"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:16:14Z","duration":34,"status":"FAILED"},{"id":"EID6eec3272-0175-1000-aa16-4a06c54bc9ba","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eec31ee-0175-1000-e562-f1418423706e"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa26cb939-04a0-46b8-9551-fa594231d7d6"},{"ref":"EIDb28a0d64-dfff-4c53-ad8b-11adfd03a140"},{"ref":"EID6fda55c1-7355-4aef-bc42-aafd5362dec9"}]},"parent":{"ref":"EID6eec31ee-0175-1000-43ff-8d639fea4c75"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:16:14Z","duration":35,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:16:14Z","duration":139,"status":"FAILED"},{"id":"EID6eec3279-0175-1000-f4c0-959166599878","testStepResults":{"TestStepResult":{"id":"EID6eec3279-0175-1000-626d-b0b8c974ff51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec32f2-0175-1000-8297-cae3b82b4e89","parent":{"ref":"EID6eec3279-0175-1000-626d-b0b8c974ff51"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec32f2-0175-1000-1cc4-3eba6ca46125","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec3279-0175-1000-626d-b0b8c974ff51"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:16:14Z","duration":12,"status":"FAILED"},{"id":"EID6eec32fe-0175-1000-69c7-462507e1d0c5","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6eec3279-0175-1000-626d-b0b8c974ff51"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"FAILED"},{"id":"EID6eec32fe-0175-1000-a06c-a0bdb15e1d11","parent":{"ref":"EID6eec3279-0175-1000-626d-b0b8c974ff51"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec32fe-0175-1000-a960-67eac469e6ae","parent":{"ref":"EID6eec3279-0175-1000-626d-b0b8c974ff51"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID79fd82c9-8244-432a-a040-8f334f95cc7d"},{"ref":"EIDb82d82e8-d897-47a1-b440-54c676e99dfb"},{"ref":"EID299a43e7-f44b-41d8-b5de-3ffd92850671"}]},"parent":{"ref":"EID6eec3279-0175-1000-f4c0-959166599878"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:16:14Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:16:14Z","duration":134,"status":"FAILED"},{"id":"EID6eec32ff-0175-1000-be92-e3f88622b108","testStepResults":{"TestStepResult":{"id":"EID6eec32ff-0175-1000-257a-27ea35864377","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec33a2-0175-1000-8e6d-15e3565d098e","parent":{"ref":"EID6eec32ff-0175-1000-257a-27ea35864377"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"},{"id":"EID6eec33a2-0175-1000-f6e0-4452362a8b93","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec32ff-0175-1000-257a-27ea35864377"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:16:14Z","duration":14,"status":"FAILED"},{"id":"EID6eec33b0-0175-1000-096f-9c3f2f6f936a","parent":{"ref":"EID6eec32ff-0175-1000-257a-27ea35864377"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:16:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5be327a9-3993-4af5-ac12-b3fcd40cd668"},{"ref":"EID64eeef15-8dce-43d8-875e-18ba39d9b292"},{"ref":"EID42009dd5-ca19-48e9-80cf-d63012b9bcf9"}]},"parent":{"ref":"EID6eec32ff-0175-1000-be92-e3f88622b108"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:16:14Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:16:14Z","duration":177,"status":"FAILED"},{"id":"EID6eec33b1-0175-1000-597b-83741d089f88","testStepResults":{"TestStepResult":{"id":"EID6eec33b1-0175-1000-d420-8957c7143499","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3470-0175-1000-b5c9-ebab05274008","parent":{"ref":"EID6eec33b1-0175-1000-d420-8957c7143499"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec3470-0175-1000-1815-708dbb0e6085","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec33b1-0175-1000-d420-8957c7143499"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:16:15Z","duration":11,"status":"FAILED"},{"id":"EID6eec347b-0175-1000-75c8-157906365f41","parent":{"ref":"EID6eec33b1-0175-1000-d420-8957c7143499"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa6d59100-3dec-44b0-b238-b3889fd1a0ae"},{"ref":"EID98f991ad-8846-46f0-8189-1596c9880861"},{"ref":"EIDdf86bd43-dbae-4da2-81e3-a271245a695e"}]},"parent":{"ref":"EID6eec33b1-0175-1000-597b-83741d089f88"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:16:14Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:16:14Z","duration":202,"status":"FAILED"},{"id":"EID6eec347b-0175-1000-125b-7f0f866dbb77","testStepResults":{"TestStepResult":{"id":"EID6eec347b-0175-1000-981a-fbf042c6b373","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec359e-0175-1000-8741-dce989930149","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec347b-0175-1000-981a-fbf042c6b373"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:16:15Z","duration":10,"status":"FAILED"},{"id":"EID6eec35a8-0175-1000-475b-ef5276cf5ec3","parent":{"ref":"EID6eec347b-0175-1000-981a-fbf042c6b373"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec35a8-0175-1000-157a-9a41b710235f","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec347b-0175-1000-981a-fbf042c6b373"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"FAILED"},{"id":"EID6eec35a8-0175-1000-055e-8dfb6c45c04f","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6eec347b-0175-1000-981a-fbf042c6b373"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDbba4fb06-e672-4f31-ab1a-5940c39c5859"},{"ref":"EIDf893c368-67d1-43fe-8ee2-257c146a8d29"},{"ref":"EID6dbf018d-a7ee-4b0d-b49d-799f27554190"}]},"parent":{"ref":"EID6eec347b-0175-1000-125b-7f0f866dbb77"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:16:15Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:16:15Z","duration":320,"status":"FAILED"},{"id":"EID6eec35bb-0175-1000-5706-acdccb97d1d7","testStepResults":{"TestStepResult":{"id":"EID6eec35bb-0175-1000-4562-e77f4b38c281","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec362a-0175-1000-92a5-c1e7a9bfe3fe","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec35bb-0175-1000-4562-e77f4b38c281"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:16:15Z","duration":13,"status":"FAILED"},{"id":"EID6eec3637-0175-1000-0aa4-2e0e90223aa8","parent":{"ref":"EID6eec35bb-0175-1000-4562-e77f4b38c281"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec3637-0175-1000-2cca-e7f5769d5406","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec35bb-0175-1000-4562-e77f4b38c281"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"FAILED"},{"id":"EID6eec3637-0175-1000-5cd6-9a1fd3362dc4","parent":{"ref":"EID6eec35bb-0175-1000-4562-e77f4b38c281"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaa296dee-84c0-4784-9e2b-189a363a6d7b"},{"ref":"EIDb76e9728-cd99-4385-9b0e-34f66123d21a"},{"ref":"EID6af5233f-d32a-49e7-a79b-1b04294c77e8"}]},"parent":{"ref":"EID6eec35bb-0175-1000-5706-acdccb97d1d7"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:16:15Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:16:15Z","duration":124,"status":"FAILED"},{"id":"EID6eec3637-0175-1000-07a3-55435177c1f5","testStepResults":{"TestStepResult":[{"id":"EID6eec3637-0175-1000-182d-644ccfa10ea0","parent":{"ref":"EID6eec3637-0175-1000-07a3-55435177c1f5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:16:15Z","duration":9,"status":"PASSED"},{"id":"EID6eec3641-0175-1000-16cc-ce42123db1e1","parent":{"ref":"EID6eec3637-0175-1000-07a3-55435177c1f5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:16:15Z","duration":158,"status":"PASSED"},{"id":"EID6eec3641-0175-1000-e4ab-f97bef234926","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec36f6-0175-1000-d92d-7054ef41f95a","parent":{"ref":"EID6eec3641-0175-1000-e4ab-f97bef234926"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec36f6-0175-1000-7713-cd404689aeee","parent":{"ref":"EID6eec3641-0175-1000-e4ab-f97bef234926"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec36f6-0175-1000-7a36-e4d8865e1026","parent":{"ref":"EID6eec3641-0175-1000-e4ab-f97bef234926"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec36f6-0175-1000-c6f2-6e7e7f679917","parent":{"ref":"EID6eec3641-0175-1000-e4ab-f97bef234926"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf8dd1fe4-5df2-4750-9624-1b179365d0db"},{"ref":"EID4ea28ab7-d7f2-49cf-af3a-3797c0b48f02"},{"ref":"EID9f021c47-174a-4b1c-b0b2-06b7b44b8b09"}]},"parent":{"ref":"EID6eec3637-0175-1000-07a3-55435177c1f5"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:16:15Z","duration":62,"status":"PASSED"},{"id":"EID6eec36f6-0175-1000-97fb-4064bf1c3833","attachments":{"attachment":{"ref":"EID1b453e7f-e210-4534-bdd1-2f7eabc0781d"}},"parent":{"ref":"EID6eec3637-0175-1000-07a3-55435177c1f5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:16:15Z","duration":2,"status":"PASSED"},{"id":"EID6eec3702-0175-1000-a769-c251cc70d35a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3771-0175-1000-251a-1252be47b0c9","parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec3771-0175-1000-5586-8933351ea45c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:16:15Z","duration":10,"status":"FAILED"},{"id":"EID6eec377b-0175-1000-68f0-687e8e7068fe","parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec377b-0175-1000-a597-9254542c8742","parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec377b-0175-1000-95de-cb4dc7d2e56f","parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec377b-0175-1000-b33a-414cf82e6a8a","parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec377b-0175-1000-e924-75f1ebec4d2c","parent":{"ref":"EID6eec3702-0175-1000-a769-c251cc70d35a"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55b64037-fe30-45b3-b61d-c489121abcb5"},{"ref":"EIDc38cae8d-e94c-4e70-be1b-74de239ae4ef"},{"ref":"EID0757b66e-9463-419a-8260-276acdec138a"}]},"parent":{"ref":"EID6eec3637-0175-1000-07a3-55435177c1f5"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:16:15Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:16:15Z","duration":324,"status":"FAILED"},{"id":"EID6eec377c-0175-1000-6bf7-49f9e74b8819","testStepResults":{"TestStepResult":[{"id":"EID6eec377c-0175-1000-69ff-4eeb110dd1f4","parent":{"ref":"EID6eec377c-0175-1000-6bf7-49f9e74b8819"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:16:15Z","duration":0,"status":"PASSED"},{"id":"EID6eec377c-0175-1000-3494-c6a2a4462a8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec38a1-0175-1000-8ab4-64d00fc1e7a1","parent":{"ref":"EID6eec377c-0175-1000-3494-c6a2a4462a8f"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec38a2-0175-1000-e3f1-0c5d5ca9f3e2","parent":{"ref":"EID6eec377c-0175-1000-3494-c6a2a4462a8f"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec38a2-0175-1000-8e1c-f34d8a08fee5","parent":{"ref":"EID6eec377c-0175-1000-3494-c6a2a4462a8f"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec38a2-0175-1000-9d8b-e1aed37f792a","parent":{"ref":"EID6eec377c-0175-1000-3494-c6a2a4462a8f"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb284d9ea-26ab-410a-8ce0-7668cdd91a71"},{"ref":"EIDf1c169ac-10c9-4384-b2aa-5bc1d9ab13d5"},{"ref":"EID3d195f8e-a423-4aba-b27b-909fcb705699"}]},"parent":{"ref":"EID6eec377c-0175-1000-6bf7-49f9e74b8819"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:16:15Z","duration":144,"status":"PASSED"},{"id":"EID6eec38aa-0175-1000-5390-3470b29ab736","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eec38be-0175-1000-3402-14239fe7cd9a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec39a8-0175-1000-1907-12aebde977b2","parent":{"ref":"EID6eec38be-0175-1000-3402-14239fe7cd9a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec39a8-0175-1000-78ff-e94d8eaf6960","parent":{"ref":"EID6eec38be-0175-1000-3402-14239fe7cd9a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec39a8-0175-1000-d977-64be719f97bc","parent":{"ref":"EID6eec38be-0175-1000-3402-14239fe7cd9a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID98976744-400b-4aa6-99e1-3ee05a1ff65b"},{"ref":"EID64273053-525d-40fd-a9e7-a5d0c94b9c3d"},{"ref":"EIDfb2d6e63-e333-4393-9cd5-9314908db83b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:16Z","duration":149,"status":"PASSED"},{"id":"EID6eec39aa-0175-1000-ae62-8ea41a73d580","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3acb-0175-1000-5e0f-79cf1b11a42f","parent":{"ref":"EID6eec39aa-0175-1000-ae62-8ea41a73d580"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3acb-0175-1000-35f4-db8c7e080d62","parent":{"ref":"EID6eec39aa-0175-1000-ae62-8ea41a73d580"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3acb-0175-1000-57cf-26b62844d8fe","parent":{"ref":"EID6eec39aa-0175-1000-ae62-8ea41a73d580"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe7def34a-0a11-427d-925d-aeab8da40ed3"},{"ref":"EIDdaad4a79-76ae-42b9-813a-da178d8e7793"},{"ref":"EID9501ff0b-636b-4ab3-9b7d-4035d86b3aba"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:16Z","duration":149,"status":"PASSED"},{"id":"EID6eec3acc-0175-1000-df5a-7536164a1710","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3b21-0175-1000-cfc6-d2d9995dea8f","parent":{"ref":"EID6eec3acc-0175-1000-df5a-7536164a1710"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3b21-0175-1000-fcc0-371119792819","parent":{"ref":"EID6eec3acc-0175-1000-df5a-7536164a1710"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3b21-0175-1000-55ef-c1848f80d817","parent":{"ref":"EID6eec3acc-0175-1000-df5a-7536164a1710"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa18afff2-cf51-4867-9937-7585bd0ddb17"},{"ref":"EID424bbad4-224d-4f2d-9931-47247c2e021c"},{"ref":"EID286e9dcd-a55e-4830-96a0-a92ce2c5c248"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:16:16Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6eec377c-0175-1000-6bf7-49f9e74b8819"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:16:16Z","duration":631,"status":"PASSED"},{"id":"EID6eec3b22-0175-1000-e019-fb76f27d47b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3b79-0175-1000-39c2-8221bbb3bc06","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec3b22-0175-1000-e019-fb76f27d47b9"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:16:16Z","duration":11,"status":"FAILED"},{"id":"EID6eec3b84-0175-1000-abd8-e40dca9ba76e","parent":{"ref":"EID6eec3b22-0175-1000-e019-fb76f27d47b9"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"},{"id":"EID6eec3b84-0175-1000-1bb6-8befc8c7c138","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec3b22-0175-1000-e019-fb76f27d47b9"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"FAILED"},{"id":"EID6eec3b84-0175-1000-a717-b0a9e571ae4a","parent":{"ref":"EID6eec3b22-0175-1000-e019-fb76f27d47b9"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:16:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDef6f659f-b205-4e8e-ad88-4996e86a9255"},{"ref":"EID504c9aaa-3514-411b-a73d-48e9a9f02c46"},{"ref":"EIDa1a31771-2828-4fb0-b5d8-4c25d8e6fed4"}]},"parent":{"ref":"EID6eec377c-0175-1000-6bf7-49f9e74b8819"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:16:16Z","duration":24,"status":"FAILED"}]},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:16:15Z","duration":1032,"status":"FAILED"},{"id":"EID6eec3b84-0175-1000-f965-a51257f252ce","testStepResults":{"TestStepResult":{"id":"EID6eec3b84-0175-1000-efcb-290460177943","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eec3be5-0175-1000-e490-6eac7e786be6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eec3b84-0175-1000-efcb-290460177943"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:16:16Z","duration":10,"status":"FAILED"},{"id":"EID6eec3bef-0175-1000-0d4a-4539f7b29e58","parent":{"ref":"EID6eec3b84-0175-1000-efcb-290460177943"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"},{"id":"EID6eec3bef-0175-1000-0979-6251625808e6","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eec3b84-0175-1000-efcb-290460177943"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"FAILED"},{"id":"EID6eec3bef-0175-1000-8fba-25f4e48f2be5","parent":{"ref":"EID6eec3b84-0175-1000-efcb-290460177943"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8dd863ca-b0df-401b-8f59-b1845b786f23"},{"ref":"EIDe2852393-df68-4fae-a6f3-50a0721f383c"},{"ref":"EID3b2bffca-9229-4379-aa5b-a355b4271ff4"}]},"parent":{"ref":"EID6eec3b84-0175-1000-f965-a51257f252ce"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:16:16Z","duration":35,"status":"FAILED"}},"parent":{"ref":"EID6eec2ef9-0175-1000-af4b-5671e846af15"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:16:16Z","duration":107,"status":"FAILED"}]},"parent":{"ref":"EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:16:13Z","duration":3318,"status":"FAILED"},{"id":"EID6eec3bef-0175-1000-a75f-00c8e10228f6","testCaseResults":{"TestCaseResult":[{"id":"EID6eec3bef-0175-1000-197e-eacd9bf8c938","testStepResults":{"TestStepResult":{"id":"EID6eec3bef-0175-1000-0da3-a912d42ef2ae","parent":{"ref":"EID6eec3bef-0175-1000-197e-eacd9bf8c938"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:16:17Z","duration":1,"status":"SKIPPED"},{"id":"EID6eec3bf0-0175-1000-3479-0aeca82ccc63","testStepResults":{"TestStepResult":{"id":"EID6eec3bf0-0175-1000-04ed-5bad5882f010","parent":{"ref":"EID6eec3bf0-0175-1000-3479-0aeca82ccc63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"SKIPPED"},{"id":"EID6eec3bf0-0175-1000-b72d-13f321f75953","testStepResults":{"TestStepResult":{"id":"EID6eec3bf0-0175-1000-bf67-ee1189b795b8","parent":{"ref":"EID6eec3bf0-0175-1000-b72d-13f321f75953"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"SKIPPED"},{"id":"EID6eec3bf0-0175-1000-076d-f318b61ade21","testStepResults":{"TestStepResult":{"id":"EID6eec3bf0-0175-1000-94f8-728374688951","parent":{"ref":"EID6eec3bf0-0175-1000-076d-f318b61ade21"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"SKIPPED"},{"id":"EID6eec3bf0-0175-1000-0700-2c98d2c280a8","testStepResults":{"TestStepResult":{"id":"EID6eec3bf0-0175-1000-87d8-d80a59ca5b4b","parent":{"ref":"EID6eec3bf0-0175-1000-0700-2c98d2c280a8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"SKIPPED"},{"id":"EID6eec3bf0-0175-1000-5d2e-a54bc4355157","testStepResults":{"TestStepResult":{"id":"EID6eec3bf0-0175-1000-2fff-06ba94a6a7ca","parent":{"ref":"EID6eec3bf0-0175-1000-5d2e-a54bc4355157"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"SKIPPED"},{"id":"EID6eec3bf0-0175-1000-74af-e29465095747","testStepResults":{"TestStepResult":{"id":"EID6eec3bf0-0175-1000-1822-fc3c7444d2e1","parent":{"ref":"EID6eec3bf0-0175-1000-74af-e29465095747"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:16:17Z","duration":409,"status":"SKIPPED"}},"parent":{"ref":"EID6eec3bef-0175-1000-a75f-00c8e10228f6"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:16:17Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:16:17Z","duration":1,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID3fd277ef-66ed-4001-af01-392cce5424f4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID3fd277ef-66ed-4001-af01-392cce5424f4"}},{"type":"ServiceResponse","id":"EIDb2834caf-661c-46f4-a0bf-f31138842c88","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDb2834caf-661c-46f4-a0bf-f31138842c88"}},{"type":"GetParameter","id":"EID42009dd5-ca19-48e9-80cf-d63012b9bcf9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID8b293cdb-4f04-48f7-b09a-c81007aac456","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID8b293cdb-4f04-48f7-b09a-c81007aac456"}},{"type":"ServiceEndpoint","id":"EIDa26cb939-04a0-46b8-9551-fa594231d7d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID79fd82c9-8244-432a-a040-8f334f95cc7d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID533f922d-9af6-4d2b-92b5-353ecc058b59","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDef6f659f-b205-4e8e-ad88-4996e86a9255","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID56f67324-574c-46d8-bc08-f493a927d010","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID55e282b8-7713-4773-827c-83d1006a858e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID55e282b8-7713-4773-827c-83d1006a858e"}},{"type":"ServiceResponse","id":"EIDfb658e6f-bcde-464b-8ea9-6709f45e8930","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDfb658e6f-bcde-464b-8ea9-6709f45e8930"}},{"type":"ServiceEndpoint","id":"EID32ff7191-cef3-4a4d-9ebb-4f62b56d7dd9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDb4c05287-d80a-4c1b-a609-56e3b6a867c5","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDb4c05287-d80a-4c1b-a609-56e3b6a867c5"}},{"type":"ServiceEndpoint","id":"EIDaf45b1ec-7f0a-4a9d-980b-26eeb8ccc44b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa09544ed-aabf-4d70-a646-76b73f213758","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0b129977-a638-4ae6-a307-a1f313a86264","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID32a2cb5f-6a37-4b09-9abb-7fed744b700d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID32a2cb5f-6a37-4b09-9abb-7fed744b700d"}},{"type":"Message","id":"EID0b947a01-ab19-42bb-918c-06a5060cf655","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID0b947a01-ab19-42bb-918c-06a5060cf655"}},{"type":"LogFile","id":"EID062936dd-41e8-4966-b51b-93784559492e","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID062936dd-41e8-4966-b51b-93784559492e"}},{"type":"Message","id":"EID24589f6c-c6b7-4cec-83f6-982ca02cd87c","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID24589f6c-c6b7-4cec-83f6-982ca02cd87c"}},{"type":"ServiceEndpoint","id":"EIDee791fae-168a-4920-976f-47df1c3058c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID299a43e7-f44b-41d8-b5de-3ffd92850671","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDa7c43eaa-a564-4502-9074-35ea1a52b3fc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDa7c43eaa-a564-4502-9074-35ea1a52b3fc"}},{"type":"ServiceEndpoint","id":"EID081c770d-401e-4547-b32c-5394aa3dad49","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID64eeef15-8dce-43d8-875e-18ba39d9b292","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID64eeef15-8dce-43d8-875e-18ba39d9b292"}},{"type":"Message","id":"EID425c5177-3004-4c57-965a-d80fa761e31f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID425c5177-3004-4c57-965a-d80fa761e31f"}},{"type":"Message","id":"EID6b2a2702-fb11-42d9-b37a-0111083fa37f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID6b2a2702-fb11-42d9-b37a-0111083fa37f"}},{"type":"ServiceEndpoint","id":"EIDfdfd7d5a-7ea8-4dd2-976b-d9c5c71b85b3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDf8a5ed1c-1f1d-4d20-951d-5985e3dd9da3","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDf8a5ed1c-1f1d-4d20-951d-5985e3dd9da3"}},{"type":"ServiceEndpoint","id":"EIDb7643c44-5002-4261-8c80-e6d3a517b007","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf1c169ac-10c9-4384-b2aa-5bc1d9ab13d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDf1c169ac-10c9-4384-b2aa-5bc1d9ab13d5"}},{"type":"ServiceResponse","id":"EID0b526571-754e-4d61-ba59-940a823cfb74","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID0b526571-754e-4d61-ba59-940a823cfb74"}},{"type":"ServiceResponse","id":"EID77440391-bed4-4f4a-80fd-a38ff016e0af","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID77440391-bed4-4f4a-80fd-a38ff016e0af"}},{"type":"ServiceEndpoint","id":"EID5f85fced-3619-4d81-9a6d-8c0d0ba9a53a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5c8b6a88-98ba-4dfd-8a58-14f835f507c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb284d9ea-26ab-410a-8ce0-7668cdd91a71","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDc6a318c6-fdcc-4f68-9f02-305cedf62d40","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDc6a318c6-fdcc-4f68-9f02-305cedf62d40"}},{"type":"Error","id":"EID7040df3f-6175-4b4f-afb8-47c1200fb99d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID7040df3f-6175-4b4f-afb8-47c1200fb99d"}},{"type":"GetParameter","id":"EID1e255e9e-a501-4190-a567-343e38f9142c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9f021c47-174a-4b1c-b0b2-06b7b44b8b09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4c650a5f-239e-43fb-90bc-8e53dc1f00fa","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID4c650a5f-239e-43fb-90bc-8e53dc1f00fa"}},{"type":"GetParameter","id":"EID0882cb8c-5ac3-4035-995b-58c38f9886b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID98afccf5-8d86-4499-adc6-4c38852461f4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID98afccf5-8d86-4499-adc6-4c38852461f4"}},{"type":"GetParameter","id":"EIDee5fc917-149e-4fe8-9259-0df94e7bb4bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDae3faf19-77e6-4d24-9312-7db3dc7848a2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID51525e6d-e651-44aa-b57c-764d627fbc59","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID614cff79-14d0-4da7-bb7a-4e9486ac841d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0a309c0f-a8d4-46bc-8736-6b79b1b78fd2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID14b5fc6c-aa6a-4c63-bc13-1ff23dd5b6b3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDeee498c1-24c0-4f85-8f50-426947979f03","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDeee498c1-24c0-4f85-8f50-426947979f03"}},{"type":"ServiceResponse","id":"EID7ce44813-c998-49c3-b400-952c53512bc4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID7ce44813-c998-49c3-b400-952c53512bc4"}},{"type":"ServiceResponse","id":"EID46487097-9bcb-45d6-85ae-2be7179bad64","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID46487097-9bcb-45d6-85ae-2be7179bad64"}},{"type":"ServiceEndpoint","id":"EID69d74d5e-57ea-44bc-a536-72f58ed3834b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb442964f-8bc4-4f4b-9af3-551815de8ee1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID866d97e1-5302-457d-b1b8-3b886efddb32","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID866d97e1-5302-457d-b1b8-3b886efddb32"}},{"type":"ServiceResponse","id":"EID4b15690f-5bad-4d27-8659-b00c176cc63f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID4b15690f-5bad-4d27-8659-b00c176cc63f"}},{"type":"Error","id":"EID78b9617f-77ca-4d54-8209-7c86662fc435","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID78b9617f-77ca-4d54-8209-7c86662fc435"}},{"type":"ServiceResponse","id":"EID504c9aaa-3514-411b-a73d-48e9a9f02c46","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID504c9aaa-3514-411b-a73d-48e9a9f02c46"}},{"type":"GetParameter","id":"EID5cee4ef0-4ca2-4d07-900e-50acebe898aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf893c368-67d1-43fe-8ee2-257c146a8d29","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDf893c368-67d1-43fe-8ee2-257c146a8d29"}},{"type":"GetParameter","id":"EID8f9bad36-0e05-4c44-98a4-db6e514d0cdf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID153bb2f5-517a-490e-bbc5-1661554e007b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID153bb2f5-517a-490e-bbc5-1661554e007b"}},{"type":"GetParameter","id":"EIDa1a31771-2828-4fb0-b5d8-4c25d8e6fed4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDcebe8069-ef3f-453a-8c5f-094aa73542d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDcebe8069-ef3f-453a-8c5f-094aa73542d5"}},{"type":"ServiceResponse","id":"EID64273053-525d-40fd-a9e7-a5d0c94b9c3d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID64273053-525d-40fd-a9e7-a5d0c94b9c3d"}},{"type":"ServiceEndpoint","id":"EID44196e31-667c-468e-aaa3-cef8a1b72f92","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaa296dee-84c0-4784-9e2b-189a363a6d7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID357b9aa4-c1f3-43f0-9e50-d1ca56471a03","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID795bb66d-e2ba-4c6d-b757-c017499fcc5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID795bb66d-e2ba-4c6d-b757-c017499fcc5d"}},{"type":"ServiceResponse","id":"EID01b3b878-07bd-41f9-a3fe-fe846b3aa266","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID01b3b878-07bd-41f9-a3fe-fe846b3aa266"}},{"type":"ServiceEndpoint","id":"EID9296b7d1-3da9-4e30-9071-bb391f0a5f29","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDe7def34a-0a11-427d-925d-aeab8da40ed3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDbba4fb06-e672-4f31-ab1a-5940c39c5859","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID0a31d6f7-06b1-4687-ab31-e528efd2cacd","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID0a31d6f7-06b1-4687-ab31-e528efd2cacd"}},{"type":"ServiceEndpoint","id":"EID83f78bc3-73e9-4100-915c-4c1ea3ed307e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDd2df19bb-d7c3-4f86-b760-99094ad18855","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID291fb86d-3e81-4104-a1c8-16354a036232","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID291fb86d-3e81-4104-a1c8-16354a036232"}},{"type":"Message","id":"EID88a8a54f-3e84-4fa7-bbb7-b5faf654f254","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID88a8a54f-3e84-4fa7-bbb7-b5faf654f254"}},{"type":"Error","id":"EIDe5968f51-9268-448f-812a-0a8735fd88e9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDe5968f51-9268-448f-812a-0a8735fd88e9"}},{"type":"GetParameter","id":"EID9501ff0b-636b-4ab3-9b7d-4035d86b3aba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID0757b66e-9463-419a-8260-276acdec138a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID55330873-b96d-4016-b8ef-98b9561a8978","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID55330873-b96d-4016-b8ef-98b9561a8978"}},{"type":"Message","id":"EID007ba370-09b2-4928-a02e-0b5a98bb7fdb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID007ba370-09b2-4928-a02e-0b5a98bb7fdb"}},{"type":"ServiceResponse","id":"EIDdeae4c44-14a4-4fe3-8be3-0433f4b7b8cc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDdeae4c44-14a4-4fe3-8be3-0433f4b7b8cc"}},{"type":"ServiceResponse","id":"EIDb5ca39e1-d30a-4ef0-89f4-c2de6c2f6dd4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDb5ca39e1-d30a-4ef0-89f4-c2de6c2f6dd4"}},{"type":"Error","id":"EIDbfb99ad5-a51c-4b11-9c79-59597801a3a1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDbfb99ad5-a51c-4b11-9c79-59597801a3a1"}},{"type":"Message","id":"EID0b1adea6-1ca9-4d00-bffd-f70d58fec211","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID0b1adea6-1ca9-4d00-bffd-f70d58fec211"}},{"type":"GetParameter","id":"EID08dba7a0-bd91-4780-af0a-0b673b200d9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDdf86bd43-dbae-4da2-81e3-a271245a695e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDfcd381ed-90ad-4e78-b0de-071962c2585e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID5be327a9-3993-4af5-ac12-b3fcd40cd668","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID1041e9e7-0818-4304-b05b-22d335102a21","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID59c8cf79-6258-4c2b-9077-0938782c8792","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID9ff70943-ad45-4d3a-b416-80c54896d476","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID9ff70943-ad45-4d3a-b416-80c54896d476"}},{"type":"GetParameter","id":"EID0938fc39-5b4d-49d8-bf51-aa267c178ddb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDb82d82e8-d897-47a1-b440-54c676e99dfb","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDb82d82e8-d897-47a1-b440-54c676e99dfb"}},{"type":"Message","id":"EID0878de10-46df-4c4e-b284-b6adde054838","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID0878de10-46df-4c4e-b284-b6adde054838"}},{"type":"Message","id":"EIDaac5d5ae-9f51-4a67-8ffe-fdcfe15430dc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDaac5d5ae-9f51-4a67-8ffe-fdcfe15430dc"}},{"type":"Message","id":"EID577d066f-f6a4-461e-a1eb-29568e89e888","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID577d066f-f6a4-461e-a1eb-29568e89e888"}},{"type":"Message","id":"EIDbe79c0ed-c06b-46e8-950c-0b1d3216fa18","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDbe79c0ed-c06b-46e8-950c-0b1d3216fa18"}},{"type":"GetParameter","id":"EID4c18f5e5-c2e6-4679-b341-8bf3e6393131","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6dbf018d-a7ee-4b0d-b49d-799f27554190","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDa18afff2-cf51-4867-9937-7585bd0ddb17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID286e9dcd-a55e-4830-96a0-a92ce2c5c248","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID61e234c0-6b21-457d-a556-7f6c073d273b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3d195f8e-a423-4aba-b27b-909fcb705699","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID3cc25015-4c6a-48b2-b0c1-1d0333029fad","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID3cc25015-4c6a-48b2-b0c1-1d0333029fad"}},{"type":"ServiceEndpoint","id":"EIDc8601958-5856-4e5c-8d17-b16ccbb17389","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf77b3532-56af-4987-b6b2-840e64d20918","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc82e0a17-ce0c-494e-94a9-daffdf7d42ae","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDc82e0a17-ce0c-494e-94a9-daffdf7d42ae"}},{"type":"Error","id":"EIDc21909a9-b2b5-436d-813a-86d9e4dcd9eb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDc21909a9-b2b5-436d-813a-86d9e4dcd9eb"}},{"type":"ServiceResponse","id":"EIDce3269d7-ed09-4b01-9a5a-a64d16eab5d9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDce3269d7-ed09-4b01-9a5a-a64d16eab5d9"}},{"type":"GetParameter","id":"EID00b34c92-0e44-419f-808c-51db094aa436","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID8dd863ca-b0df-401b-8f59-b1845b786f23","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID8ac55249-adb2-416f-8322-2446e3518ec2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID8ac55249-adb2-416f-8322-2446e3518ec2"}},{"type":"ServiceResponse","id":"EIDc38cae8d-e94c-4e70-be1b-74de239ae4ef","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDc38cae8d-e94c-4e70-be1b-74de239ae4ef"}},{"type":"ServiceResponse","id":"EIDb28a0d64-dfff-4c53-ad8b-11adfd03a140","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDb28a0d64-dfff-4c53-ad8b-11adfd03a140"}},{"type":"Message","id":"EIDbc3516ba-0561-4e52-bdcf-e49000776bc6","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDbc3516ba-0561-4e52-bdcf-e49000776bc6"}},{"type":"ServiceResponse","id":"EIDdaad4a79-76ae-42b9-813a-da178d8e7793","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDdaad4a79-76ae-42b9-813a-da178d8e7793"}},{"type":"Message","id":"EIDe8a0780e-1a4a-4fb6-9320-5ff280a6feb1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDe8a0780e-1a4a-4fb6-9320-5ff280a6feb1"}},{"type":"GetParameter","id":"EID5a0b20f1-14b5-4028-abac-6a932e45a300","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID98f991ad-8846-46f0-8189-1596c9880861","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID98f991ad-8846-46f0-8189-1596c9880861"}},{"type":"GetParameter","id":"EIDba208a59-3d6d-4db9-b859-292a35580658","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID925c2a3b-ae2b-495a-adfe-a4e1c113de1c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID925c2a3b-ae2b-495a-adfe-a4e1c113de1c"}},{"type":"GetParameter","id":"EID0e64f7e8-c4eb-4bcb-9696-498ebe631f31","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe77b31f6-a081-431c-a062-43bef4ab0e50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDe77b31f6-a081-431c-a062-43bef4ab0e50"}},{"type":"GetParameter","id":"EIDdaff20d6-3389-4ebe-b33e-80ea202e5b7d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6c917d17-d2cb-4c59-9341-7d04f0ec2a80","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDdbb16404-6231-4dc1-9b9b-1b16f1b76287","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDdbb16404-6231-4dc1-9b9b-1b16f1b76287"}},{"type":"Error","id":"EID9102016b-03ed-48d5-ae06-f9224cdcfc96","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID9102016b-03ed-48d5-ae06-f9224cdcfc96"}},{"type":"GetParameter","id":"EID6af5233f-d32a-49e7-a79b-1b04294c77e8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID3fd843e9-3f8d-4615-9200-2fb9e88d0612","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf8dd1fe4-5df2-4750-9624-1b179365d0db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID137f40d8-7b1b-4f58-a950-2dc57ae0f85a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID137f40d8-7b1b-4f58-a950-2dc57ae0f85a"}},{"type":"Error","id":"EID70867584-2407-4639-a196-fef369fafff1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID70867584-2407-4639-a196-fef369fafff1"}},{"type":"ServiceEndpoint","id":"EIDa6d59100-3dec-44b0-b238-b3889fd1a0ae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDb76e9728-cd99-4385-9b0e-34f66123d21a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDb76e9728-cd99-4385-9b0e-34f66123d21a"}},{"type":"ServiceResponse","id":"EIDe2852393-df68-4fae-a6f3-50a0721f383c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDe2852393-df68-4fae-a6f3-50a0721f383c"}},{"type":"GetParameter","id":"EID3b2bffca-9229-4379-aa5b-a355b4271ff4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDefb3feee-d6d5-4926-806b-592965d6570d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDefb3feee-d6d5-4926-806b-592965d6570d"}},{"type":"Message","id":"EID1b453e7f-e210-4534-bdd1-2f7eabc0781d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID1b453e7f-e210-4534-bdd1-2f7eabc0781d"}},{"type":"ServiceResponse","id":"EIDd17426ae-5239-45b7-acf2-239e022207e7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDd17426ae-5239-45b7-acf2-239e022207e7"}},{"type":"GetParameter","id":"EIDfb2d6e63-e333-4393-9cd5-9314908db83b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID3fc24162-2346-4025-bac3-bcfeae127cd7","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID3fc24162-2346-4025-bac3-bcfeae127cd7"}},{"type":"GetParameter","id":"EID6fda55c1-7355-4aef-bc42-aafd5362dec9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EIDc98eb81f-5cc7-42b6-ace0-9ab984b6a12a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDc98eb81f-5cc7-42b6-ace0-9ab984b6a12a"}},{"type":"Message","id":"EID7eccc363-8c74-40b4-936a-ce2d4381860a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID7eccc363-8c74-40b4-936a-ce2d4381860a"}},{"type":"Error","id":"EID758721a1-8bb8-4428-b7f9-b2857212b369","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID758721a1-8bb8-4428-b7f9-b2857212b369"}},{"type":"ServiceEndpoint","id":"EID98976744-400b-4aa6-99e1-3ee05a1ff65b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID4ea28ab7-d7f2-49cf-af3a-3797c0b48f02","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID4ea28ab7-d7f2-49cf-af3a-3797c0b48f02"}},{"type":"ServiceResponse","id":"EID424bbad4-224d-4f2d-9931-47247c2e021c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID424bbad4-224d-4f2d-9931-47247c2e021c"}},{"type":"Message","id":"EIDe0d44677-5361-4651-860a-6cf520061513","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EIDe0d44677-5361-4651-860a-6cf520061513"}},{"type":"ServiceEndpoint","id":"EIDd7b5f52c-40e5-40b2-9462-167792bcc6db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID92caf2c3-64ab-4a3f-b185-f70abb33a9ea","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID92caf2c3-64ab-4a3f-b185-f70abb33a9ea"}},{"type":"GetParameter","id":"EID2c05f1f6-950e-471e-b870-3217c8278ad1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID55b64037-fe30-45b3-b61d-c489121abcb5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID705d89e0-e401-4eb2-b7f5-cde85fd38b71","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID705d89e0-e401-4eb2-b7f5-cde85fd38b71"}},{"type":"ServiceResponse","id":"EID54fdc1cf-d5eb-4ddb-9203-c8578ac44cfc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID27b21af0-e7cd-4122-9ae6-d769dd28a1d8/Attachments/EID54fdc1cf-d5eb-4ddb-9203-c8578ac44cfc"}},{"type":"ServiceEndpoint","id":"EIDc1a607a9-0aa0-4477-9528-ee8e3ef5e650","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf5dc5238-9404-4bc3-a1d9-9076521eb370","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf3fb3c92-45c8-4b04-b65c-5e9a15c8df6a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:16:06Z","duration":10544,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.008
11:16:29.395 [print] EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:16:29.396 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:16:29.396 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:16:29.396 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.008
11:16:29.404 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:16:29.404 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ce5bdaba-3f42-4c3b-bc85-da2ef9f4c544.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:16:29.404 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDce5bdaba-3f42-4c3b-bc85-da2ef9f4c544/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.010
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.009
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:16:29.425 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:16:29.425 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
1:53.500
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.006
* print testRunRequest 0.000
11:14:01.011 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.730
11:14:01.012 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

11:14:07.739 response time in milliseconds: 5982.03
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:06 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/758fffc6-1a63-4512-a1d2-2927fd0bc47d.json","testRuns":{"TestRun":{"id":"EID758fffc6-1a63-4512-a1d2-2927fd0bc47d","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:03.846Z","testTasks":{"TestTask":{"id":"EIDa4730d5b-83ba-4456-b1e7-a95c228aaeeb","parent":{"ref":"EID758fffc6-1a63-4512-a1d2-2927fd0bc47d"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID9de7fd2a-2391-4223-bc11-09b6cddda863"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID9de7fd2a-2391-4223-bc11-09b6cddda863","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:01.462Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:02.968Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:07.742 [print] EID758fffc6-1a63-4512-a1d2-2927fd0bc47d
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:07.742 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:07.743 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:07.743 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/758fffc6-1a63-4512-a1d2-2927fd0bc47d.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:07.743 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:07.743 [print] statuspath TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d
* print 'progresspath ', progresspath 0.000
11:14:07.743 [print] progresspath  TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
Given path progresspath 0.000
When method GET 0.512
11:14:07.743 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:08.255 response time in milliseconds: 511.11
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:08 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.003
11:14:08.259 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)",
    "28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:14:03 - Preparing 1 Test Task:",
    "28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)",
    "28.10.2020 11:14:03 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:14:03 -  with parameters: ",
    "28.10.2020 11:14:03 - etf.testcases = *",
    "28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:14:03 - Setting state to CREATED",
    "28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z",
    "28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:06 - Project Properties: ",
    "28.10.2020 11:14:06 - etf.testcases - * ",
    "28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "28.10.2020 11:14:06 - username -  ",
    "28.10.2020 11:14:06 - authUser -  ",
    "28.10.2020 11:14:06 - authMethod - basic ",
    "28.10.2020 11:14:06 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:46.246
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
11:14:08.260 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:08.775 response time in milliseconds: 514.30
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:08 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized"]}

11:14:08.780 retry condition not satisfied: response.val == response.max
11:14:08.780 sleeping before retry #1
11:14:13.782 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:14.297 response time in milliseconds: 514.87
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:14 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

11:14:14.297 retry condition not satisfied: response.val == response.max
11:14:14.297 sleeping before retry #2
11:14:19.298 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:19.817 response time in milliseconds: 518.60
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:14:19 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:19.818 retry condition not satisfied: response.val == response.max
11:14:19.818 sleeping before retry #3
11:14:24.818 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:25.322 response time in milliseconds: 503.24
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:14:25 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:25.322 retry condition not satisfied: response.val == response.max
11:14:25.322 sleeping before retry #4
11:14:30.323 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:30.850 response time in milliseconds: 523.77
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:14:30 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:30.850 retry condition not satisfied: response.val == response.max
11:14:30.851 sleeping before retry #5
11:14:35.852 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:36.359 response time in milliseconds: 506.84
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:14:36 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:36.368 retry condition not satisfied: response.val == response.max
11:14:36.368 sleeping before retry #6
11:14:41.369 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:41.899 response time in milliseconds: 529.96
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:14:41 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:41.900 retry condition not satisfied: response.val == response.max
11:14:41.900 sleeping before retry #7
11:14:46.900 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:47.411 response time in milliseconds: 510.48
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:14:47 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

11:14:47.411 retry condition not satisfied: response.val == response.max
11:14:47.411 sleeping before retry #8
11:14:52.412 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:52.986 response time in milliseconds: 572.73
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:14:52 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:14:52.986 retry condition not satisfied: response.val == response.max
11:14:52.987 sleeping before retry #9
11:14:57.987 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:58.518 response time in milliseconds: 521.65
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:14:58 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:14:58.518 retry condition not satisfied: response.val == response.max
11:14:58.518 sleeping before retry #10
11:15:03.519 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:04.035 response time in milliseconds: 516.19
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:15:03 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:04.035 retry condition not satisfied: response.val == response.max
11:15:04.035 sleeping before retry #11
11:15:09.036 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:09.550 response time in milliseconds: 513.75
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:15:09 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:09.551 retry condition not satisfied: response.val == response.max
11:15:09.551 sleeping before retry #12
11:15:14.551 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:15.068 response time in milliseconds: 516.06
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:15:15 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:15.069 retry condition not satisfied: response.val == response.max
11:15:15.069 sleeping before retry #13
11:15:20.069 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:20.583 response time in milliseconds: 512.89
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:15:20 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:20.583 retry condition not satisfied: response.val == response.max
11:15:20.583 sleeping before retry #14
11:15:25.584 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:26.100 response time in milliseconds: 514.88
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:15:26 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:26.100 retry condition not satisfied: response.val == response.max
11:15:26.100 sleeping before retry #15
11:15:31.101 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:31.614 response time in milliseconds: 512.61
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:15:31 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:31.614 retry condition not satisfied: response.val == response.max
11:15:31.614 sleeping before retry #16
11:15:36.615 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:37.142 response time in milliseconds: 526.28
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:15:37 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:37.146 retry condition not satisfied: response.val == response.max
11:15:37.146 sleeping before retry #17
11:15:42.147 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:42.901 response time in milliseconds: 753.46
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:15:42 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:42.902 retry condition not satisfied: response.val == response.max
11:15:42.902 sleeping before retry #18
11:15:47.903 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:48.990 response time in milliseconds: 1086.69
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:15:48 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

11:15:48.990 retry condition not satisfied: response.val == response.max
11:15:48.990 sleeping before retry #19
11:15:53.990 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:54.506 response time in milliseconds: 514.79
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:15:54 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 -  TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 -  with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username -  ","28.10.2020 11:14:06 - authUser -  ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:15:51 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

11:15:54.506 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.792
* print "testing url:" + metadata.url 0.000
11:14:05.180 [print] testing url:https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS
Given url metadata.url 0.000
When method HEAD 0.792
11:14:05.181 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:05.973 response time in milliseconds: 792.22
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:05 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.391
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.391
11:14:05.977 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:06.368 response time in milliseconds: 390.42
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:06 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:06.369 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
0.412
* print "testing url:" + metadata.url 0.000
11:05:23.925 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.412
11:05:23.926 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:24.338 response time in milliseconds: 411.26
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:05:23 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.425
Given url metadata.url 0.000
When method HEAD 0.420
11:05:24.353 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:05:24.771 response time in milliseconds: 417.05
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:05:24 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.004
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.674
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:43.883 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.674
11:14:43.884 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities"}}}

11:14:45.557 response time in milliseconds: 1568.67
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:45 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883685391","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:14:45.558 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
3.487
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:13:04.201 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.487
11:13:04.202 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities"}}}

11:13:07.688 response time in milliseconds: 3380.68
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:07 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883587511","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:13:07.689 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
2.374
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:06:39.416 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.370
11:06:39.420 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 288
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities"}}}

11:06:41.787 response time in milliseconds: 2261.17
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:41 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883201613","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.003
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:06:41.790 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.402
* print "testing url:" + metadata.url 0.001
11:12:57.268 [print] testing url:https://geodata.nationaalgeoregister.nl/atom/index.xml
Given url metadata.url 0.000
When method HEAD 0.401
11:12:57.269 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:57.670 response time in milliseconds: 399.96
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:56 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
0.403
Given url metadata.url 0.000
When method HEAD 0.402
11:12:57.675 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/atom/index.xml
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:12:58.078 response time in milliseconds: 402.20
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 59006
1 < Content-Type: text/xml
1 < Date: Wed, 28 Oct 2020 11:12:57 GMT
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
1.566
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:15:31.993 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.563
11:15:31.993 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 278
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities"}}}

11:15:33.552 response time in milliseconds: 1451.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883733382","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.002
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:15:33.559 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
0.412
* print "testing url:" + metadata.url 0.000
11:16:49.988 [print] testing url:https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities
Given url metadata.url 0.000
When method HEAD 0.412
11:16:49.988 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:50.399 response time in milliseconds: 410.85
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:50 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
0.406
Scenario test download header
Steps
Given url metadata.url 0.000
When method HEAD 0.406
11:16:49.988 request:
1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Host: geodata.nationaalgeoregister.nl
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:16:50.394 response time in milliseconds: 405.39
1 < 200
1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept
1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
1 < Access-Control-Allow-Origin: *
1 < Access-Control-Max-Age: 1000
1 < Content-Length: 73
1 < Content-Type: text/html; charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:50 GMT
1 < Server: lighttpd/1.4.53
1 < X-Cnection: [close, close]
Then status 200 0.000
And match responseHeaders['Content-Length'][0] == '#notnull' 0.000
And match responseHeaders['Content-Type'][0] == 'text/xml' 0.000
com.intuit.karate.exception.KarateException: checkdownloadurl.feature:21 - path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:50.394 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
* def filesize = responseHeaders['Content-Length'][0] 0.000
* assert filesize > 2000 0.000
2.275
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:10:54.437 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.275
11:10:54.437 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities"}}}

11:10:56.712 response time in milliseconds: 2169.95
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:56 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883456545","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
11:10:56.713 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000
28.764
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
11:14:47.297 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.740
11:14:47.297 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

11:14:53.035 response time in milliseconds: 5007.26
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:52 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:50 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a893ba4d-0f6e-42ac-813b-1b19df10d586.json","testRuns":{"TestRun":{"id":"EIDa893ba4d-0f6e-42ac-813b-1b19df10d586","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:49.467Z","testTasks":{"TestTask":{"id":"EID4b46536b-c0c0-40b7-8cdb-d21c1ffc3071","parent":{"ref":"EIDa893ba4d-0f6e-42ac-813b-1b19df10d586"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID53755927-a0d1-4467-9399-f58fdd6d1844"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID53755927-a0d1-4467-9399-f58fdd6d1844","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:47.734Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:48.626Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
11:14:53.038 [print] EIDa893ba4d-0f6e-42ac-813b-1b19df10d586
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:14:53.038 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:14:53.038 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:14:53.038 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a893ba4d-0f6e-42ac-813b-1b19df10d586.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:14:53.038 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
11:14:53.038 [print] statuspath TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586
* print 'progresspath ', progresspath 0.000
11:14:53.038 [print] progresspath  TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/progress
Given path progresspath 0.000
When method GET 0.567
11:14:53.039 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:53.606 response time in milliseconds: 563.96
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:53 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:49 UTC 2020)","28.10.2020 11:14:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:49 - Preparing 1 Test Task:","28.10.2020 11:14:49 -  TestTask 1 (4b46536b-c0c0-40b7-8cdb-d21c1ffc3071)","28.10.2020 11:14:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:49 -  with parameters: ","28.10.2020 11:14:49 - etf.testcases = *","28.10.2020 11:14:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:49 - Setting state to CREATED","28.10.2020 11:14:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:50 - Starting TestRun.a893ba4d-0f6e-42ac-813b-1b19df10d586 at 2020-10-28T11:14:51Z","28.10.2020 11:14:51 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:51 - Project Properties: ","28.10.2020 11:14:51 - etf.testcases - * ","28.10.2020 11:14:51 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:51 - username -  ","28.10.2020 11:14:51 - authUser -  ","28.10.2020 11:14:51 - authMethod - basic ","28.10.2020 11:14:51 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
11:14:53.606 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "28.10.2020 11:14:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:49 UTC 2020)",
    "28.10.2020 11:14:49 - Resolving Executable Test Suite dependencies",
    "28.10.2020 11:14:49 - Preparing 1 Test Task:",
    "28.10.2020 11:14:49 -  TestTask 1 (4b46536b-c0c0-40b7-8cdb-d21c1ffc3071)",
    "28.10.2020 11:14:49 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "28.10.2020 11:14:49 -  with parameters: ",
    "28.10.2020 11:14:49 - etf.testcases = *",
    "28.10.2020 11:14:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "28.10.2020 11:14:49 - Setting state to CREATED",
    "28.10.2020 11:14:49 - Changed state from CREATED to INITIALIZING",
    "28.10.2020 11:14:50 - Starting TestRun.a893ba4d-0f6e-42ac-813b-1b19df10d586 at 2020-10-28T11:14:51Z",
    "28.10.2020 11:14:51 - Changed state from INITIALIZING to INITIALIZED",
    "28.10.2020 11:14:51 - Project Properties: ",
    "28.10.2020 11:14:51 - etf.testcases - * ",
    "28.10.2020 11:14:51 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "28.10.2020 11:14:51 - username -  ",
    "28.10.2020 11:14:51 - authUser -  ",
    "28.10.2020 11:14:51 - authMethod - basic ",
    "28.10.2020 11:14:51 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.585
11:14:53.607 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:54.134 response time in milliseconds: 522.55
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:54 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:14:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:49 UTC 2020)","28.10.2020 11:14:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:49 - Preparing 1 Test Task:","28.10.2020 11:14:49 -  TestTask 1 (4b46536b-c0c0-40b7-8cdb-d21c1ffc3071)","28.10.2020 11:14:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:49 -  with parameters: ","28.10.2020 11:14:49 - etf.testcases = *","28.10.2020 11:14:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:49 - Setting state to CREATED","28.10.2020 11:14:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:50 - Starting TestRun.a893ba4d-0f6e-42ac-813b-1b19df10d586 at 2020-10-28T11:14:51Z","28.10.2020 11:14:51 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:51 - Project Properties: ","28.10.2020 11:14:51 - etf.testcases - * ","28.10.2020 11:14:51 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:51 - username -  ","28.10.2020 11:14:51 - authUser -  ","28.10.2020 11:14:51 - authMethod - basic ","28.10.2020 11:14:51 - TestRunTask initialized"]}

11:14:54.135 retry condition not satisfied: response.val == response.max
11:14:54.135 sleeping before retry #1
11:14:59.135 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:14:59.662 response time in milliseconds: 525.97
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:59 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"93","max":"94","log":["28.10.2020 11:14:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:49 UTC 2020)","28.10.2020 11:14:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:49 - Preparing 1 Test Task:","28.10.2020 11:14:49 -  TestTask 1 (4b46536b-c0c0-40b7-8cdb-d21c1ffc3071)","28.10.2020 11:14:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:49 -  with parameters: ","28.10.2020 11:14:49 - etf.testcases = *","28.10.2020 11:14:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:49 - Setting state to CREATED","28.10.2020 11:14:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:50 - Starting TestRun.a893ba4d-0f6e-42ac-813b-1b19df10d586 at 2020-10-28T11:14:51Z","28.10.2020 11:14:51 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:51 - Project Properties: ","28.10.2020 11:14:51 - etf.testcases - * ","28.10.2020 11:14:51 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:51 - username -  ","28.10.2020 11:14:51 - authUser -  ","28.10.2020 11:14:51 - authMethod - basic ","28.10.2020 11:14:51 - TestRunTask initialized","28.10.2020 11:14:55 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:14:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:57 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:58 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:59 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

11:14:59.663 retry condition not satisfied: response.val == response.max
11:14:59.663 sleeping before retry #2
11:15:04.664 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:05.174 response time in milliseconds: 510.03
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:15:05 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:14:49 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:49 UTC 2020)","28.10.2020 11:14:49 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:49 - Preparing 1 Test Task:","28.10.2020 11:14:49 -  TestTask 1 (4b46536b-c0c0-40b7-8cdb-d21c1ffc3071)","28.10.2020 11:14:49 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:49 -  with parameters: ","28.10.2020 11:14:49 - etf.testcases = *","28.10.2020 11:14:49 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:49 - Setting state to CREATED","28.10.2020 11:14:49 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:50 - Starting TestRun.a893ba4d-0f6e-42ac-813b-1b19df10d586 at 2020-10-28T11:14:51Z","28.10.2020 11:14:51 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:51 - Project Properties: ","28.10.2020 11:14:51 - etf.testcases - * ","28.10.2020 11:14:51 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:14:51 - username -  ","28.10.2020 11:14:51 - authUser -  ","28.10.2020 11:14:51 - authMethod - basic ","28.10.2020 11:14:51 - TestRunTask initialized","28.10.2020 11:14:55 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:14:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:57 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:14:58 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:59 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:59 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:14:59 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:14:59 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:14:59 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:00 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:00 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:15:00 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:00 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:15:00 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:00 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:00 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:15:00 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:15:00 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:15:01 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:04 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:04 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:15:04 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:15:04 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

11:15:05.174 retry condition not satisfied: response.val == response.max
11:15:05.175 sleeping before retry #3
11:15:10.175 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:12.191 response time in milliseconds: 2015.04
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:15:12 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

11:15:12.191 retry condition satisfied
* print response 0.000
11:15:12.191 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.836
11:15:12.192 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

11:15:16.024 response time in milliseconds: 2854.37
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:15:14 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Wed, 28 Oct 2020 11:15:08 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a893ba4d-0f6e-42ac-813b-1b19df10d586.json","testRuns":{"TestRun":{"id":"EIDa893ba4d-0f6e-42ac-813b-1b19df10d586","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:49.467Z","testTasks":{"TestTask":{"id":"EID4b46536b-c0c0-40b7-8cdb-d21c1ffc3071","parent":{"ref":"EIDa893ba4d-0f6e-42ac-813b-1b19df10d586"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID53755927-a0d1-4467-9399-f58fdd6d1844"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID36b70879-9ccd-4c0b-b605-0294efe99035"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID53755927-a0d1-4467-9399-f58fdd6d1844","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:47.734Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:48.626Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID36b70879-9ccd-4c0b-b605-0294efe99035","testObject":{"ref":"EID53755927-a0d1-4467-9399-f58fdd6d1844"},"testModuleResults":{"TestModuleResult":[{"id":"EID6eeaef3c-0175-1000-dca8-8a140c4b3c65","testCaseResults":{"TestCaseResult":[{"id":"EID6eeaef46-0175-1000-449f-fa4b7e91c71c","testStepResults":{"TestStepResult":[{"id":"EID6eeaef47-0175-1000-0c4b-6058a08fc6c6","parent":{"ref":"EID6eeaef46-0175-1000-449f-fa4b7e91c71c"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-28T11:14:51Z","duration":18,"status":"PASSED"},{"id":"EID6eeaef5a-0175-1000-91ae-c61f595f8075","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf028-0175-1000-7e29-7d94570dbef3","parent":{"ref":"EID6eeaef5a-0175-1000-91ae-c61f595f8075"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf028-0175-1000-4b09-ad242338b47b","parent":{"ref":"EID6eeaef5a-0175-1000-91ae-c61f595f8075"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf028-0175-1000-6308-be6422d7fef6","parent":{"ref":"EID6eeaef5a-0175-1000-91ae-c61f595f8075"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf028-0175-1000-8a83-ca00781cb37d","parent":{"ref":"EID6eeaef5a-0175-1000-91ae-c61f595f8075"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd23cc3e0-7695-4646-876f-efc9606fdbbf"},{"ref":"EID00ec9d61-5a3b-4f14-86bb-df7b93d1121b"},{"ref":"EIDfdfae4f6-0ca8-4c1d-9fc3-aaec92ba55ba"}]},"parent":{"ref":"EID6eeaef46-0175-1000-449f-fa4b7e91c71c"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-28T11:14:51Z","duration":64,"status":"PASSED"}]},"parent":{"ref":"EID6eeaef3c-0175-1000-dca8-8a140c4b3c65"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-28T11:14:51Z","duration":226,"status":"PASSED"},{"id":"EID6eeaf028-0175-1000-ac13-1a09ce551722","testStepResults":{"TestStepResult":{"id":"EID6eeaf028-0175-1000-1f61-a40c66f76e57","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf14c-0175-1000-d34e-fe93a276e168","parent":{"ref":"EID6eeaf028-0175-1000-1f61-a40c66f76e57"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf14c-0175-1000-58d0-621182ae2be3","parent":{"ref":"EID6eeaf028-0175-1000-1f61-a40c66f76e57"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf14c-0175-1000-67fe-cb3d7f8775e8","parent":{"ref":"EID6eeaf028-0175-1000-1f61-a40c66f76e57"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID51561190-9249-41df-ad54-b7cf32a28354"},{"ref":"EID0b1c8bf8-276e-4f87-a69d-9c1d2f586f48"},{"ref":"EIDe4288941-9938-46d3-8f3f-f95b1f367b8e"}]},"parent":{"ref":"EID6eeaf028-0175-1000-ac13-1a09ce551722"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-28T11:14:52Z","duration":93,"status":"PASSED"}},"parent":{"ref":"EID6eeaef3c-0175-1000-dca8-8a140c4b3c65"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-28T11:14:52Z","duration":292,"status":"PASSED"}]},"parent":{"ref":"EID36b70879-9ccd-4c0b-b605-0294efe99035"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-28T11:14:51Z","duration":529,"status":"PASSED"},{"id":"EID6eeaf14d-0175-1000-8956-e557d73da1af","testCaseResults":{"TestCaseResult":[{"id":"EID6eeaf14d-0175-1000-5493-0d1366f854cb","testStepResults":{"TestStepResult":[{"id":"EID6eeaf14d-0175-1000-3b0f-10dd46d463f0","parent":{"ref":"EID6eeaf14d-0175-1000-5493-0d1366f854cb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-28T11:14:52Z","duration":93,"status":"PASSED"},{"id":"EID6eeaf14d-0175-1000-1071-61da3f19d94f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf253-0175-1000-c495-c0e2320fe0b7","parent":{"ref":"EID6eeaf14d-0175-1000-1071-61da3f19d94f"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf253-0175-1000-b78c-252ff96e4a22","parent":{"ref":"EID6eeaf14d-0175-1000-1071-61da3f19d94f"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf253-0175-1000-2084-36aa9e315a62","parent":{"ref":"EID6eeaf14d-0175-1000-1071-61da3f19d94f"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf253-0175-1000-62e5-4bf0cbad1af4","parent":{"ref":"EID6eeaf14d-0175-1000-1071-61da3f19d94f"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf253-0175-1000-ed2d-fc865f839554","parent":{"ref":"EID6eeaf14d-0175-1000-1071-61da3f19d94f"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-28T11:14:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID76c3bd7c-2e8d-4542-b763-f1910eef8d24"},{"ref":"EID3e5bebde-b6dd-40f3-9c22-a69fb24ed7dc"},{"ref":"EIDc4a7b942-26f5-4b0b-805f-4ecc3cb939e0"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-5493-0d1366f854cb"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-28T11:14:52Z","duration":131,"status":"PASSED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-28T11:14:52Z","duration":262,"status":"PASSED"},{"id":"EID6eeaf254-0175-1000-c9d9-11dc3fc03347","testStepResults":{"TestStepResult":[{"id":"EID6eeaf254-0175-1000-ec8a-860c2c812ce8","attachments":{"attachment":[{"ref":"EID13f82699-c4e5-4b54-b469-6d2ddefcc205"},{"ref":"EID84dad6cc-d9af-47d1-a85c-f456e837c814"}]},"parent":{"ref":"EID6eeaf254-0175-1000-c9d9-11dc3fc03347"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-28T11:14:52Z","duration":138,"status":"PASSED"},{"id":"EID6eeaf300-0175-1000-c2b3-5d75f94e4e88","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf3e3-0175-1000-5ce2-10a622d6c3a2","parent":{"ref":"EID6eeaf300-0175-1000-c2b3-5d75f94e4e88"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf3e3-0175-1000-63dc-fe2dfd02c963","parent":{"ref":"EID6eeaf300-0175-1000-c2b3-5d75f94e4e88"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf3e3-0175-1000-f649-8852e15b82a7","parent":{"ref":"EID6eeaf300-0175-1000-c2b3-5d75f94e4e88"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf3e3-0175-1000-6c1c-28c167f47053","parent":{"ref":"EID6eeaf300-0175-1000-c2b3-5d75f94e4e88"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID21f85ac5-69bf-45eb-9b4e-3ec65ab557b5"},{"ref":"EID1e5c601f-73d8-45df-a526-f310e19d6389"},{"ref":"EID4831291f-297b-4007-9e8d-4cc671e57308"}]},"parent":{"ref":"EID6eeaf254-0175-1000-c9d9-11dc3fc03347"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-28T11:14:52Z","duration":97,"status":"PASSED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-28T11:14:52Z","duration":399,"status":"PASSED"},{"id":"EID6eeaf3e3-0175-1000-2771-74a74ccd9c6f","testStepResults":{"TestStepResult":[{"id":"EID6eeaf3e3-0175-1000-fa35-d5df11922377","attachments":{"attachment":[{"ref":"EID0a07e17e-1bc9-4004-99ad-294204f46e93"},{"ref":"EID242fe444-fc5a-48c0-8c0f-d3c39e6a25fa"}]},"parent":{"ref":"EID6eeaf3e3-0175-1000-2771-74a74ccd9c6f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-28T11:14:53Z","duration":169,"status":"PASSED"},{"id":"EID6eeaf4cf-0175-1000-8208-3215b7c7c6b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf57c-0175-1000-20f3-e70dd19563ac","parent":{"ref":"EID6eeaf4cf-0175-1000-8208-3215b7c7c6b8"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf57c-0175-1000-d42f-fb72043fdfbd","parent":{"ref":"EID6eeaf4cf-0175-1000-8208-3215b7c7c6b8"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf57c-0175-1000-566e-35ceb2e81cd7","parent":{"ref":"EID6eeaf4cf-0175-1000-8208-3215b7c7c6b8"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf57c-0175-1000-a58d-87b16d2e32a7","parent":{"ref":"EID6eeaf4cf-0175-1000-8208-3215b7c7c6b8"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf57c-0175-1000-4ab2-f0fe6d6c4182","parent":{"ref":"EID6eeaf4cf-0175-1000-8208-3215b7c7c6b8"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb63cbccc-a778-4995-adfb-e31e6437e1b2"},{"ref":"EID56785ba5-065b-41f6-8a40-939310c5f697"},{"ref":"EID8f6447b1-10af-48b8-8352-247ff73ee395"}]},"parent":{"ref":"EID6eeaf3e3-0175-1000-2771-74a74ccd9c6f"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-28T11:14:53Z","duration":67,"status":"PASSED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-28T11:14:53Z","duration":418,"status":"PASSED"},{"id":"EID6eeaf585-0175-1000-2b7c-3ff3ad000f43","testStepResults":{"TestStepResult":[{"id":"EID6eeaf585-0175-1000-2ccc-ec7e18690baa","attachments":{"attachment":[{"ref":"EID154ec4aa-2d39-4736-84c0-4cb9dc72e7a7"},{"ref":"EID5f57b52b-2ce3-4b4f-bd0c-41cbc9ff9c3f"}]},"parent":{"ref":"EID6eeaf585-0175-1000-2b7c-3ff3ad000f43"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-28T11:14:53Z","duration":136,"status":"PASSED"},{"id":"EID6eeaf649-0175-1000-0541-51c3d06fa8f6","parent":{"ref":"EID6eeaf585-0175-1000-2b7c-3ff3ad000f43"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf649-0175-1000-83ec-c7153f4af6d6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf707-0175-1000-6ee7-219e108670ed","parent":{"ref":"EID6eeaf649-0175-1000-83ec-c7153f4af6d6"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf707-0175-1000-5f64-0a92c7a0c76b","parent":{"ref":"EID6eeaf649-0175-1000-83ec-c7153f4af6d6"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf707-0175-1000-1bfe-e1b0d92e5f98","parent":{"ref":"EID6eeaf649-0175-1000-83ec-c7153f4af6d6"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf707-0175-1000-f96f-aa3a6b11333e","parent":{"ref":"EID6eeaf649-0175-1000-83ec-c7153f4af6d6"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-28T11:14:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd53c5f2a-1fdd-4366-9bec-4a532deb7771"},{"ref":"EID27a265bf-0eb6-4279-acf3-78fa53af360d"},{"ref":"EID42d09b7e-4c06-4a2e-acd6-177bd3ecde44"}]},"parent":{"ref":"EID6eeaf585-0175-1000-2b7c-3ff3ad000f43"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-28T11:14:53Z","duration":84,"status":"PASSED"},{"id":"EID6eeaf707-0175-1000-9b1e-50e4af09e158","attachments":{"attachment":{"ref":"EIDd0f79b92-34af-48ad-8c79-d135a74f5000"}},"parent":{"ref":"EID6eeaf585-0175-1000-2b7c-3ff3ad000f43"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-28T11:14:53Z","duration":2,"status":"PASSED"},{"id":"EID6eeaf71b-0175-1000-e0c1-8358bfa9ff6b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf7b6-0175-1000-4bcb-e61eee915a76","parent":{"ref":"EID6eeaf71b-0175-1000-e0c1-8358bfa9ff6b"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf7b6-0175-1000-198e-c438cda2a764","parent":{"ref":"EID6eeaf71b-0175-1000-e0c1-8358bfa9ff6b"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf7b6-0175-1000-62eb-ebc28af07657","parent":{"ref":"EID6eeaf71b-0175-1000-e0c1-8358bfa9ff6b"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf7b6-0175-1000-52e3-5d3d40b9e14c","parent":{"ref":"EID6eeaf71b-0175-1000-e0c1-8358bfa9ff6b"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf7b6-0175-1000-c9e5-4f79a40cb5ed","parent":{"ref":"EID6eeaf71b-0175-1000-e0c1-8358bfa9ff6b"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe81b6e97-50df-4245-9dbb-4de6e016f099"},{"ref":"EIDeb4e3338-041c-49ea-baff-fd0e625a0630"},{"ref":"EIDb5b9eed7-b747-4ab5-846e-2171f51aee5a"}]},"parent":{"ref":"EID6eeaf585-0175-1000-2b7c-3ff3ad000f43"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-28T11:14:53Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-28T11:14:53Z","duration":561,"status":"PASSED"},{"id":"EID6eeaf7b6-0175-1000-9658-e0442df69385","testStepResults":{"TestStepResult":[{"id":"EID6eeaf7b6-0175-1000-6add-2a3453c1f171","attachments":{"attachment":[{"ref":"EID596c50e7-c063-4daa-b78e-04eb6affe2c3"},{"ref":"EID0abc67f8-45fd-4dc2-8a1e-a91cf8ba404d"}]},"parent":{"ref":"EID6eeaf7b6-0175-1000-9658-e0442df69385"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-28T11:14:54Z","duration":139,"status":"PASSED"},{"id":"EID6eeaf863-0175-1000-b151-7250d20a0f87","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaf93b-0175-1000-94d4-446fb9f8c14e","parent":{"ref":"EID6eeaf863-0175-1000-b151-7250d20a0f87"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf93b-0175-1000-d5bd-b36e521aa5f3","parent":{"ref":"EID6eeaf863-0175-1000-b151-7250d20a0f87"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf93b-0175-1000-ed62-1ab991060260","parent":{"ref":"EID6eeaf863-0175-1000-b151-7250d20a0f87"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeaf93b-0175-1000-8f7e-c0cc759ae7e7","parent":{"ref":"EID6eeaf863-0175-1000-b151-7250d20a0f87"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDedfd78eb-8121-4f02-b997-19d9afd7fef1"},{"ref":"EID770e88a5-2d4e-4ac0-ae04-ed5716d0b4e2"},{"ref":"EIDee08856d-23d6-470c-869e-2ae3d673c5f8"}]},"parent":{"ref":"EID6eeaf7b6-0175-1000-9658-e0442df69385"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-28T11:14:54Z","duration":33,"status":"PASSED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-28T11:14:54Z","duration":390,"status":"PASSED"},{"id":"EID6eeaf93c-0175-1000-077d-26755f01e95d","testStepResults":{"TestStepResult":[{"id":"EID6eeaf93c-0175-1000-88e3-b52f25432994","attachments":{"attachment":[{"ref":"EID3b421fc7-07dc-4e27-a8c3-bff6bd4f9c5e"},{"ref":"EID38d6c0fe-0791-405d-bb90-41785ae6f82f"}]},"parent":{"ref":"EID6eeaf93c-0175-1000-077d-26755f01e95d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-28T11:14:54Z","duration":133,"status":"PASSED"},{"id":"EID6eeafa32-0175-1000-5778-6eda50b85993","parent":{"ref":"EID6eeaf93c-0175-1000-077d-26755f01e95d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeafa32-0175-1000-b6d4-4b87ae881a0c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeafb26-0175-1000-485a-a63f86bb72d3","parent":{"ref":"EID6eeafa32-0175-1000-b6d4-4b87ae881a0c"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeafb26-0175-1000-4a30-87e2e5428460","parent":{"ref":"EID6eeafa32-0175-1000-b6d4-4b87ae881a0c"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeafb26-0175-1000-9e33-579ce83c8aad","parent":{"ref":"EID6eeafa32-0175-1000-b6d4-4b87ae881a0c"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"},{"id":"EID6eeafb26-0175-1000-3a07-8a831be98dea","parent":{"ref":"EID6eeafa32-0175-1000-b6d4-4b87ae881a0c"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-28T11:14:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1d85a24d-4560-4814-9044-8d941ae8724e"},{"ref":"EIDcb2ff163-63e2-403b-863b-2fb1282b1fbd"},{"ref":"EIDe3021611-4cc9-4c7a-a5ac-befd1aa03bca"}]},"parent":{"ref":"EID6eeaf93c-0175-1000-077d-26755f01e95d"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-28T11:14:54Z","duration":141,"status":"PASSED"},{"id":"EID6eeafb26-0175-1000-c856-e84ba8df04dc","attachments":{"attachment":{"ref":"EIDbfce5391-1c77-4867-a69e-71b60792c2ab"}},"parent":{"ref":"EID6eeaf93c-0175-1000-077d-26755f01e95d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-28T11:14:54Z","duration":1,"status":"PASSED"},{"id":"EID6eeafb3b-0175-1000-cfc5-f14aff0205e6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeafc64-0175-1000-05b2-720f89fbbf03","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeafb3b-0175-1000-cfc5-f14aff0205e6"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-28T11:14:55Z","duration":15,"status":"FAILED"},{"id":"EID6eeafc73-0175-1000-659e-6b5def7a9a47","parent":{"ref":"EID6eeafb3b-0175-1000-cfc5-f14aff0205e6"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeafc73-0175-1000-40f4-b9586403039a","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6eeafb3b-0175-1000-cfc5-f14aff0205e6"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf59bf748-13ad-4c68-9b97-fab3e7556cfe"},{"ref":"EID06132bf0-ef97-4783-bf55-ac8bf293a712"},{"ref":"EIDf1e95064-2d72-4e2c-adcb-3d9d5222f599"}]},"parent":{"ref":"EID6eeaf93c-0175-1000-077d-26755f01e95d"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-28T11:14:54Z","duration":224,"status":"FAILED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-28T11:14:54Z","duration":823,"status":"FAILED"},{"id":"EID6eeafc73-0175-1000-7675-6309dad605c8","testStepResults":{"TestStepResult":[{"id":"EID6eeafc73-0175-1000-d259-c3c3cd163822","attachments":{"attachment":[{"ref":"EID0db7f827-a882-4dd1-a17a-2745315c26c0"},{"ref":"EID6359a81d-7647-4e78-b723-f3d1a2e34407"}]},"parent":{"ref":"EID6eeafc73-0175-1000-7675-6309dad605c8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-28T11:14:55Z","duration":210,"status":"PASSED"},{"id":"EID6eeafd6f-0175-1000-4fc2-e1e174818b40","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeafe5c-0175-1000-25ba-d2e74dd1baa0","parent":{"ref":"EID6eeafd6f-0175-1000-4fc2-e1e174818b40"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeafe5c-0175-1000-a76c-13285ac7523a","parent":{"ref":"EID6eeafd6f-0175-1000-4fc2-e1e174818b40"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeafe5c-0175-1000-e55c-c74dc7d2a248","parent":{"ref":"EID6eeafd6f-0175-1000-4fc2-e1e174818b40"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeafe5c-0175-1000-2bc8-087530b178c4","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeafd6f-0175-1000-4fc2-e1e174818b40"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID398f58d4-816c-4847-84f6-36601d90eb7d"},{"ref":"EIDcda734a7-2c9d-4d61-b003-bf7b0114d01a"},{"ref":"EID1d5430a5-4e5a-4b9a-b7f5-ebb229a00e5a"}]},"parent":{"ref":"EID6eeafc73-0175-1000-7675-6309dad605c8"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-28T11:14:55Z","duration":42,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-28T11:14:55Z","duration":496,"status":"PASSED_MANUAL"},{"id":"EID6eeafe64-0175-1000-4913-2fc0b20b5777","testStepResults":{"TestStepResult":{"id":"EID6eeafe64-0175-1000-e119-a493362bee87","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeaff27-0175-1000-95ee-88c808b536e6","parent":{"ref":"EID6eeafe64-0175-1000-e119-a493362bee87"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeaff27-0175-1000-f002-d0a7e6006d17","parent":{"ref":"EID6eeafe64-0175-1000-e119-a493362bee87"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeaff27-0175-1000-8910-707020dcb41c","parent":{"ref":"EID6eeafe64-0175-1000-e119-a493362bee87"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6eeaff27-0175-1000-fa13-5f99af29218c","parent":{"ref":"EID6eeafe64-0175-1000-e119-a493362bee87"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-28T11:14:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf05a5a5b-77b0-4d9e-b759-0c4dde515fc5"},{"ref":"EID2e36f9da-397a-436b-a206-982d25782006"},{"ref":"EID0293ac76-3a0a-41a0-b2b4-8e12ce32bfbb"}]},"parent":{"ref":"EID6eeafe64-0175-1000-4913-2fc0b20b5777"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-28T11:14:55Z","duration":28,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-28T11:14:55Z","duration":195,"status":"PASSED"},{"id":"EID6eeaff27-0175-1000-30a8-d24d8d68af24","testStepResults":{"TestStepResult":{"id":"EID6eeaff27-0175-1000-4ed8-43ace1abdb51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0057-0175-1000-b4cb-4fc47454f180","parent":{"ref":"EID6eeaff27-0175-1000-4ed8-43ace1abdb51"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-28T11:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0057-0175-1000-8af5-fa7057f8d43b","parent":{"ref":"EID6eeaff27-0175-1000-4ed8-43ace1abdb51"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-28T11:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0057-0175-1000-66fc-6882d1e3065d","parent":{"ref":"EID6eeaff27-0175-1000-4ed8-43ace1abdb51"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-28T11:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0057-0175-1000-7e23-52d891e565dd","parent":{"ref":"EID6eeaff27-0175-1000-4ed8-43ace1abdb51"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-28T11:14:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2b0d1a81-0eb8-4d28-8ca5-62e2d3daee18"},{"ref":"EID1580bf22-518c-48d3-a0e2-200381246bba"},{"ref":"EID7e70fbb6-e931-4614-9ca1-06201bfe4390"}]},"parent":{"ref":"EID6eeaff27-0175-1000-30a8-d24d8d68af24"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-28T11:14:55Z","duration":132,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-28T11:14:55Z","duration":304,"status":"PASSED"},{"id":"EID6eeb0058-0175-1000-7f4a-27506403e207","testStepResults":{"TestStepResult":{"id":"EID6eeb0058-0175-1000-4a87-f1aebf0c401a","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID6060442f-8172-4c79-8f94-54d1c17ff8b2"},{"ref":"EID876a1a72-a25c-4c1b-b618-a74425bebedd"},{"ref":"EID54e3f0d7-f615-4363-9ac8-b731ad45b6a9"},{"ref":"EIDd7c06981-c9a9-48bf-aceb-5dbb605a3850"},{"ref":"EID834e574b-2ec8-43eb-b977-4e1725094acf"},{"ref":"EID593b7d74-01bf-4c0d-a33f-1081e5f6e71e"},{"ref":"EIDea634db8-8511-4326-b40b-61108971d041"},{"ref":"EID64ca8cc0-7c7a-4657-ae4a-7078a1055951"},{"ref":"EID3036886c-8809-40c2-8487-2882d1763323"}]},"parent":{"ref":"EID6eeb0058-0175-1000-7f4a-27506403e207"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-28T11:14:56Z","duration":718,"status":"SKIPPED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-28T11:14:56Z","duration":908,"status":"SKIPPED"},{"id":"EID6eeb03e4-0175-1000-a0bc-570935700c9e","testStepResults":{"TestStepResult":{"id":"EID6eeb03ed-0175-1000-ca54-382850e1f4fb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb04af-0175-1000-4124-83e9d50b440a","parent":{"ref":"EID6eeb03ed-0175-1000-ca54-382850e1f4fb"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb04af-0175-1000-8d9e-70d1e265edc1","parent":{"ref":"EID6eeb03ed-0175-1000-ca54-382850e1f4fb"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb04af-0175-1000-9216-4d0c3e8bc92b","parent":{"ref":"EID6eeb03ed-0175-1000-ca54-382850e1f4fb"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb04af-0175-1000-7ceb-66b4b1451d3e","parent":{"ref":"EID6eeb03ed-0175-1000-ca54-382850e1f4fb"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5fcfdbd0-8667-4695-bff8-4078bb7ed66f"},{"ref":"EIDfe8d0054-5a43-4ffb-82dd-9371934af52c"},{"ref":"EIDe5ae2eba-1c85-4d66-9a9c-602541668e5d"}]},"parent":{"ref":"EID6eeb03e4-0175-1000-a0bc-570935700c9e"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-28T11:14:57Z","duration":36,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-28T11:14:57Z","duration":204,"status":"PASSED"},{"id":"EID6eeb04b0-0175-1000-7e54-ca2ed42ccc55","testStepResults":{"TestStepResult":{"id":"EID6eeb04b0-0175-1000-0a86-cab93bc50360","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb05d5-0175-1000-b08a-09b7b9b6acfb","parent":{"ref":"EID6eeb04b0-0175-1000-0a86-cab93bc50360"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb05d5-0175-1000-3032-0b455d22d60e","parent":{"ref":"EID6eeb04b0-0175-1000-0a86-cab93bc50360"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb05d5-0175-1000-a1e9-eafb8e9f00a9","parent":{"ref":"EID6eeb04b0-0175-1000-0a86-cab93bc50360"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb05d5-0175-1000-75f6-8229107be336","parent":{"ref":"EID6eeb04b0-0175-1000-0a86-cab93bc50360"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb05d5-0175-1000-21b1-d8be4aad9537","parent":{"ref":"EID6eeb04b0-0175-1000-0a86-cab93bc50360"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb05d5-0175-1000-4452-1cbcc6118026","parent":{"ref":"EID6eeb04b0-0175-1000-0a86-cab93bc50360"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2d967229-34b0-4085-b9f0-b2bdc0a95238"},{"ref":"EIDd0191d0c-6ddd-4386-9b46-ac5fe165cac6"},{"ref":"EIDc839a7ca-efbb-4478-8d54-945ae39fafa3"}]},"parent":{"ref":"EID6eeb04b0-0175-1000-7e54-ca2ed42ccc55"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-28T11:14:57Z","duration":107,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-28T11:14:57Z","duration":293,"status":"PASSED"},{"id":"EID6eeb05d5-0175-1000-258b-27f5adb2e23b","testStepResults":{"TestStepResult":{"id":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb06b2-0175-1000-86ee-1ed3caaf9dbf","parent":{"ref":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb06b2-0175-1000-cc2f-fca77a063c17","parent":{"ref":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb06b2-0175-1000-66ff-e80330946833","parent":{"ref":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb06b2-0175-1000-abe9-2726fde19df7","parent":{"ref":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb06b2-0175-1000-9945-f631b9bbc3a5","parent":{"ref":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6eeb06b2-0175-1000-f2a7-a7b1edf590c4","parent":{"ref":"EID6eeb05d5-0175-1000-8dc3-e24a710c1a1b"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-28T11:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID040355fa-b66f-493a-b3e7-7ce9ca14c94e"},{"ref":"EIDee29504f-bd70-4652-8e37-12cbf566bab3"},{"ref":"EID01da8eaf-05ed-4302-a432-da524ecf0389"}]},"parent":{"ref":"EID6eeb05d5-0175-1000-258b-27f5adb2e23b"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-28T11:14:57Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-28T11:14:57Z","duration":221,"status":"PASSED"},{"id":"EID6eeb06b2-0175-1000-c22d-9bcf3eafca2e","testStepResults":{"TestStepResult":{"id":"EID6eeb06b2-0175-1000-0a94-363117c75c48","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb07bd-0175-1000-e10e-db151bf057af","parent":{"ref":"EID6eeb06b2-0175-1000-0a94-363117c75c48"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb07bd-0175-1000-8b0f-762ef47261e4","parent":{"ref":"EID6eeb06b2-0175-1000-0a94-363117c75c48"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb07bd-0175-1000-223d-b24874859abd","parent":{"ref":"EID6eeb06b2-0175-1000-0a94-363117c75c48"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb07bd-0175-1000-7844-e6bb9bef18a1","parent":{"ref":"EID6eeb06b2-0175-1000-0a94-363117c75c48"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDacd3b33e-950d-46aa-a62b-0faff6e2fbc2"},{"ref":"EIDc9941c17-ae81-41ea-83be-f54a221ba8ba"},{"ref":"EIDc2ce8411-0389-4ff7-b3f1-fa17f05a99ae"}]},"parent":{"ref":"EID6eeb06b2-0175-1000-c22d-9bcf3eafca2e"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-28T11:14:57Z","duration":109,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-28T11:14:57Z","duration":267,"status":"PASSED"},{"id":"EID6eeb07bd-0175-1000-f52d-683f577640d9","testStepResults":{"TestStepResult":[{"id":"EID6eeb07bd-0175-1000-3a22-6c94e3c53684","attachments":{"attachment":[{"ref":"EID663c926c-59f3-4b4b-944e-ac34d8063a3e"},{"ref":"EID66ef14bc-005a-4f47-98fb-0daba15d4a60"},{"ref":"EIDb9dc29ca-683a-4bc2-8efb-f71212048921"},{"ref":"EIDe9f2fd1c-d5ce-414a-8c09-47b70e8d862a"}]},"parent":{"ref":"EID6eeb07bd-0175-1000-f52d-683f577640d9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-28T11:14:58Z","duration":338,"status":"PASSED"},{"id":"EID6eeb0950-0175-1000-20dd-9d22dbf7b1e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0a6c-0175-1000-593b-da80aca69b25","parent":{"ref":"EID6eeb0950-0175-1000-20dd-9d22dbf7b1e4"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0a6c-0175-1000-9601-23750aa20ed1","parent":{"ref":"EID6eeb0950-0175-1000-20dd-9d22dbf7b1e4"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0a6c-0175-1000-66b4-1bfca435cf82","parent":{"ref":"EID6eeb0950-0175-1000-20dd-9d22dbf7b1e4"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0a6c-0175-1000-f6ca-e5551858e79c","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6eeb0950-0175-1000-20dd-9d22dbf7b1e4"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe0623b8a-493b-47d4-9291-358c87417fcf"},{"ref":"EIDf1d94230-1f88-4259-9ff2-5171b6d9a278"},{"ref":"EIDd9d36796-7cf3-483a-9801-e187fb575dab"}]},"parent":{"ref":"EID6eeb07bd-0175-1000-f52d-683f577640d9"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-28T11:14:58Z","duration":79,"status":"FAILED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-28T11:14:58Z","duration":687,"status":"FAILED"},{"id":"EID6eeb0a6d-0175-1000-79bb-e61b51142f10","testStepResults":{"TestStepResult":{"id":"EID6eeb0a6d-0175-1000-a84d-5a005d34dc7a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0b06-0175-1000-ebd0-12a67c810e13","parent":{"ref":"EID6eeb0a6d-0175-1000-a84d-5a005d34dc7a"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0b06-0175-1000-f51d-4f9a4dc99e51","parent":{"ref":"EID6eeb0a6d-0175-1000-a84d-5a005d34dc7a"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0b06-0175-1000-62e0-0989e794712e","parent":{"ref":"EID6eeb0a6d-0175-1000-a84d-5a005d34dc7a"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0b06-0175-1000-8cb1-0d2d02e70269","parent":{"ref":"EID6eeb0a6d-0175-1000-a84d-5a005d34dc7a"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2fd46eee-b160-4c9c-8636-40eac6b13b0b"},{"ref":"EIDa2753827-7615-405b-bafb-224d74435512"},{"ref":"EID6894b7c2-5058-4987-88c0-1aadc4f3a4b8"}]},"parent":{"ref":"EID6eeb0a6d-0175-1000-79bb-e61b51142f10"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-28T11:14:58Z","duration":37,"status":"PASSED"}},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-28T11:14:58Z","duration":153,"status":"PASSED"},{"id":"EID6eeb0b06-0175-1000-5826-dc7277b52a3d","testStepResults":{"TestStepResult":[{"id":"EID6eeb0b06-0175-1000-fb01-10f0f2ab1d64","parent":{"ref":"EID6eeb0b06-0175-1000-5826-dc7277b52a3d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-28T11:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0b06-0175-1000-9a07-f8b37f936e62","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0c19-0175-1000-907f-eecd00a6996b","parent":{"ref":"EID6eeb0b06-0175-1000-9a07-f8b37f936e62"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0c19-0175-1000-60ea-9367acee395e","parent":{"ref":"EID6eeb0b06-0175-1000-9a07-f8b37f936e62"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0c19-0175-1000-5fd3-131d0933bbaa","parent":{"ref":"EID6eeb0b06-0175-1000-9a07-f8b37f936e62"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0c19-0175-1000-711d-33dd30fb1221","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6eeb0b06-0175-1000-9a07-f8b37f936e62"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID14ab7da3-3f8c-4ff3-a162-fe69ddcfe0a3"},{"ref":"EIDed9a5f82-527c-4b42-8cef-c05613b03b81"},{"ref":"EIDaca1cac3-48dd-4ce0-94f7-614e3ce70b5d"}]},"parent":{"ref":"EID6eeb0b06-0175-1000-5826-dc7277b52a3d"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-28T11:14:58Z","duration":127,"status":"FAILED"}]},"parent":{"ref":"EID6eeaf14d-0175-1000-8956-e557d73da1af"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-28T11:14:58Z","duration":275,"status":"FAILED"}]},"parent":{"ref":"EID36b70879-9ccd-4c0b-b605-0294efe99035"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-28T11:14:52Z","duration":6860,"status":"FAILED"},{"id":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd","testCaseResults":{"TestCaseResult":[{"id":"EID6eeb0c19-0175-1000-107d-002f86ad04a3","testStepResults":{"TestStepResult":[{"id":"EID6eeb0c19-0175-1000-15d1-4926366dd9eb","parent":{"ref":"EID6eeb0c19-0175-1000-107d-002f86ad04a3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0c19-0175-1000-d432-b0357090e4f4","parent":{"ref":"EID6eeb0c19-0175-1000-107d-002f86ad04a3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-28T11:14:59Z","duration":37,"status":"PASSED"},{"id":"EID6eeb0c19-0175-1000-1ac2-d23f7104fdd2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0cad-0175-1000-2391-4a9a64c22f92","parent":{"ref":"EID6eeb0c19-0175-1000-1ac2-d23f7104fdd2"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0cad-0175-1000-5dd1-13d5cb2bad64","parent":{"ref":"EID6eeb0c19-0175-1000-1ac2-d23f7104fdd2"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0cad-0175-1000-cf41-104b31dd1afa","parent":{"ref":"EID6eeb0c19-0175-1000-1ac2-d23f7104fdd2"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa7cab846-879d-4300-b116-90c2d55aa105"},{"ref":"EIDc234cb67-e807-4886-bb80-04868c1b0a93"},{"ref":"EID4ebeaf2d-8ccc-4fd6-bcd2-7a13c997659d"}]},"parent":{"ref":"EID6eeb0c19-0175-1000-107d-002f86ad04a3"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-28T11:14:59Z","duration":39,"status":"PASSED"},{"id":"EID6eeb0cae-0175-1000-157d-6ac80c9cb451","attachments":{"attachment":{"ref":"EID55b74484-bc0b-48a7-b54f-1642d14d6c8c"}},"parent":{"ref":"EID6eeb0c19-0175-1000-107d-002f86ad04a3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0cb8-0175-1000-f9a3-3a169907ae81","parent":{"ref":"EID6eeb0c19-0175-1000-107d-002f86ad04a3"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-28T11:14:59Z","duration":25,"status":"PASSED"}]},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-28T11:14:59Z","duration":185,"status":"PASSED"},{"id":"EID6eeb0cd2-0175-1000-40ad-b63d1ab9da45","testStepResults":{"TestStepResult":[{"id":"EID6eeb0cd2-0175-1000-5d01-6c936074f263","parent":{"ref":"EID6eeb0cd2-0175-1000-40ad-b63d1ab9da45"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-28T11:14:59Z","duration":93,"status":"PASSED"},{"id":"EID6eeb0cd2-0175-1000-1029-c82fc7bb6315","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0d56-0175-1000-77e6-063dcc628d1c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb0cd2-0175-1000-1029-c82fc7bb6315"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-28T11:14:59Z","duration":12,"status":"FAILED"},{"id":"EID6eeb0d63-0175-1000-2760-da2e6a5ade34","parent":{"ref":"EID6eeb0cd2-0175-1000-1029-c82fc7bb6315"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0d63-0175-1000-6e28-abe4dbc261f6","parent":{"ref":"EID6eeb0cd2-0175-1000-1029-c82fc7bb6315"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0d63-0175-1000-5d8b-0a5ce716f96b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6eeb0cd2-0175-1000-1029-c82fc7bb6315"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"FAILED"},{"id":"EID6eeb0d63-0175-1000-400c-b7494ec704e3","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6eeb0cd2-0175-1000-1029-c82fc7bb6315"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID117db465-4a18-4e2b-baf1-db5db93733d1"},{"ref":"EIDf93d6721-349b-4b1d-9768-c45523b12096"},{"ref":"EIDcd8ff62e-8d2c-4892-9bc1-398cdd055223"}]},"parent":{"ref":"EID6eeb0cd2-0175-1000-40ad-b63d1ab9da45"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-28T11:14:59Z","duration":49,"status":"FAILED"}]},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-28T11:14:59Z","duration":145,"status":"FAILED"},{"id":"EID6eeb0d63-0175-1000-56f7-24bf5bd54ac9","testStepResults":{"TestStepResult":{"id":"EID6eeb0d63-0175-1000-fe85-6bfda9a3178c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0dcb-0175-1000-c495-3cb7b18245d7","parent":{"ref":"EID6eeb0d63-0175-1000-fe85-6bfda9a3178c"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0dcb-0175-1000-a68e-1694b238e3a9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb0d63-0175-1000-fe85-6bfda9a3178c"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-28T11:14:59Z","duration":24,"status":"FAILED"},{"id":"EID6eeb0de3-0175-1000-c9d2-daccf49ed010","parent":{"ref":"EID6eeb0d63-0175-1000-fe85-6bfda9a3178c"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0f84bb8c-a0f4-4532-bcb9-736704bcc050"},{"ref":"EIDfce42df2-1632-47ac-a475-e7c0a46298c5"},{"ref":"EID78e69f9b-ba27-4f2c-a52f-46f231b3a11d"}]},"parent":{"ref":"EID6eeb0d63-0175-1000-56f7-24bf5bd54ac9"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-28T11:14:59Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-28T11:14:59Z","duration":128,"status":"FAILED"},{"id":"EID6eeb0de3-0175-1000-7bc2-79fc8578c692","testStepResults":{"TestStepResult":{"id":"EID6eeb0de3-0175-1000-6ee5-c2ae30ae288f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0e73-0175-1000-e646-2f2656024216","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eeb0de3-0175-1000-6ee5-c2ae30ae288f"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-28T11:14:59Z","duration":1,"status":"FAILED"},{"id":"EID6eeb0e74-0175-1000-dbee-95764a6e170a","parent":{"ref":"EID6eeb0de3-0175-1000-6ee5-c2ae30ae288f"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0e74-0175-1000-b7cf-dae64a84c68b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb0de3-0175-1000-6ee5-c2ae30ae288f"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-28T11:14:59Z","duration":15,"status":"FAILED"},{"id":"EID6eeb0e83-0175-1000-a02c-d42fd4ee95fe","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6eeb0de3-0175-1000-6ee5-c2ae30ae288f"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDcad7b49d-ea87-4714-a832-87515d75caaf"},{"ref":"EID1314cb21-7fa4-4d84-947f-a5d2495ae05d"},{"ref":"EID4db9b49b-d0d2-4f6c-a54c-30b42d783e0e"}]},"parent":{"ref":"EID6eeb0de3-0175-1000-7bc2-79fc8578c692"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-28T11:14:59Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-28T11:14:59Z","duration":160,"status":"FAILED"},{"id":"EID6eeb0e83-0175-1000-2997-5e20349a8a26","testStepResults":{"TestStepResult":{"id":"EID6eeb0e83-0175-1000-8412-069c6d3d6c2b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0ef4-0175-1000-1f34-6421f9a9018c","parent":{"ref":"EID6eeb0e83-0175-1000-8412-069c6d3d6c2b"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0ef4-0175-1000-5d9a-0a32caad6943","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb0e83-0175-1000-8412-069c6d3d6c2b"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-28T11:14:59Z","duration":12,"status":"FAILED"},{"id":"EID6eeb0f00-0175-1000-236c-f34f5bf7cda8","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6eeb0e83-0175-1000-8412-069c6d3d6c2b"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-28T11:14:59Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd799997d-4d01-4979-b482-645e7a60c57f"},{"ref":"EIDd8d3dcfe-10f4-4064-9709-ac9cab818c81"},{"ref":"EID35d6f042-71c2-4a92-9065-55d57b9cd2a0"}]},"parent":{"ref":"EID6eeb0e83-0175-1000-2997-5e20349a8a26"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-28T11:14:59Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-28T11:14:59Z","duration":126,"status":"FAILED"},{"id":"EID6eeb0f01-0175-1000-602a-cd695e0839dd","testStepResults":{"TestStepResult":{"id":"EID6eeb0f01-0175-1000-f1c9-e3fd43e832bf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb0f7c-0175-1000-3c9d-fb313b7506af","parent":{"ref":"EID6eeb0f01-0175-1000-f1c9-e3fd43e832bf"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb0f7c-0175-1000-1cc1-619ff5446cc1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb0f01-0175-1000-f1c9-e3fd43e832bf"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-28T11:15:00Z","duration":18,"status":"FAILED"},{"id":"EID6eeb0f8e-0175-1000-af3b-5ac5c0cd52fc","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6eeb0f01-0175-1000-f1c9-e3fd43e832bf"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID51b34d8b-c5c8-4b14-bab8-20b3d4f6cd5e"},{"ref":"EID2adb8a56-b70d-4bae-b1e3-00e67652c176"},{"ref":"EID5a6a1af8-2d5e-4fc1-a96c-8ba3b98b9e79"}]},"parent":{"ref":"EID6eeb0f01-0175-1000-602a-cd695e0839dd"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-28T11:14:59Z","duration":34,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-28T11:14:59Z","duration":142,"status":"FAILED"},{"id":"EID6eeb0f90-0175-1000-caa5-da26943f74e0","testStepResults":{"TestStepResult":{"id":"EID6eeb0f90-0175-1000-6892-e7a747bcce4b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb104b-0175-1000-8d89-ffa5a6330c66","parent":{"ref":"EID6eeb0f90-0175-1000-6892-e7a747bcce4b"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb104b-0175-1000-6f91-e5e27fa00d59","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb0f90-0175-1000-6892-e7a747bcce4b"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-28T11:15:00Z","duration":16,"status":"FAILED"},{"id":"EID6eeb105b-0175-1000-da30-c0338cb320c3","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6eeb0f90-0175-1000-6892-e7a747bcce4b"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"FAILED"},{"id":"EID6eeb105b-0175-1000-8f1e-769541e15e50","parent":{"ref":"EID6eeb0f90-0175-1000-6892-e7a747bcce4b"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb105b-0175-1000-922a-5816636adce5","parent":{"ref":"EID6eeb0f90-0175-1000-6892-e7a747bcce4b"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID13e28dad-e349-446a-9084-254c86ec3746"},{"ref":"EID8175052f-4d5d-42f4-99fa-46294134e894"},{"ref":"EID72f6668c-9dc3-413f-a16a-3b6908922e05"}]},"parent":{"ref":"EID6eeb0f90-0175-1000-caa5-da26943f74e0"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-28T11:15:00Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-28T11:15:00Z","duration":299,"status":"FAILED"},{"id":"EID6eeb10bb-0175-1000-3c39-70b0c3d22c38","testStepResults":{"TestStepResult":{"id":"EID6eeb10bb-0175-1000-d3ad-e21bcba8fbcc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb1130-0175-1000-cb5e-820095f2a5ac","parent":{"ref":"EID6eeb10bb-0175-1000-d3ad-e21bcba8fbcc"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1130-0175-1000-d0d1-0a4a80c6305d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb10bb-0175-1000-d3ad-e21bcba8fbcc"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-28T11:15:00Z","duration":41,"status":"FAILED"},{"id":"EID6eeb1159-0175-1000-30d6-dc6981809ad1","parent":{"ref":"EID6eeb10bb-0175-1000-d3ad-e21bcba8fbcc"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc4d394ec-10c8-4847-866c-67cfcd9ccf8e"},{"ref":"EID48bffdca-52c2-406b-b3d4-d86ef1df7860"},{"ref":"EIDb7ec1bdb-2dea-408c-9c9a-f81899f64aef"}]},"parent":{"ref":"EID6eeb10bb-0175-1000-3c39-70b0c3d22c38"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-28T11:15:00Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-28T11:15:00Z","duration":158,"status":"FAILED"},{"id":"EID6eeb1159-0175-1000-b5b5-c6ba97e9b675","testStepResults":{"TestStepResult":{"id":"EID6eeb1159-0175-1000-d832-f373d541c684","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb11ca-0175-1000-ac60-3ac1e95d6140","parent":{"ref":"EID6eeb1159-0175-1000-d832-f373d541c684"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb11ca-0175-1000-0f64-0e08510cf6d2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb1159-0175-1000-d832-f373d541c684"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-28T11:15:00Z","duration":17,"status":"FAILED"},{"id":"EID6eeb11db-0175-1000-4365-2851c2e3bacc","parent":{"ref":"EID6eeb1159-0175-1000-d832-f373d541c684"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfba06a58-8d35-422a-aa13-53d5f4bca329"},{"ref":"EIDe5f29d15-5ca3-43e0-ae0f-c2f43532e6c2"},{"ref":"EID2df8a5c8-64ec-4eeb-be88-4929b8cf766a"}]},"parent":{"ref":"EID6eeb1159-0175-1000-b5b5-c6ba97e9b675"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-28T11:15:00Z","duration":38,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-28T11:15:00Z","duration":130,"status":"FAILED"},{"id":"EID6eeb11db-0175-1000-ca36-b07a8fd8c8ac","testStepResults":{"TestStepResult":{"id":"EID6eeb11db-0175-1000-f4c3-939eee9808d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb1245-0175-1000-1f7b-22cb794deadb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb11db-0175-1000-f4c3-939eee9808d8"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-28T11:15:00Z","duration":16,"status":"FAILED"},{"id":"EID6eeb1255-0175-1000-3a42-7d03aa094af2","parent":{"ref":"EID6eeb11db-0175-1000-f4c3-939eee9808d8"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1255-0175-1000-5239-972701461c31","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb11db-0175-1000-f4c3-939eee9808d8"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"FAILED"},{"id":"EID6eeb1255-0175-1000-9ed5-d5270abe85c0","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6eeb11db-0175-1000-f4c3-939eee9808d8"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb3eade06-336e-47b7-919a-0c235f453758"},{"ref":"EIDbc3d7414-d476-43b4-8bd2-ea9092b7135e"},{"ref":"EID8e89cede-727c-4df9-ad29-5f450b9c95b1"}]},"parent":{"ref":"EID6eeb11db-0175-1000-ca36-b07a8fd8c8ac"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-28T11:15:00Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-28T11:15:00Z","duration":132,"status":"FAILED"},{"id":"EID6eeb125f-0175-1000-c323-b4b3dc805900","testStepResults":{"TestStepResult":{"id":"EID6eeb125f-0175-1000-0f1c-0f59c163ef9d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb12ed-0175-1000-114d-8a8e1965ebd0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb125f-0175-1000-0f1c-0f59c163ef9d"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-28T11:15:00Z","duration":16,"status":"FAILED"},{"id":"EID6eeb12fd-0175-1000-7037-f64448c5d267","parent":{"ref":"EID6eeb125f-0175-1000-0f1c-0f59c163ef9d"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb12fd-0175-1000-8954-2f0bf143554b","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb125f-0175-1000-0f1c-0f59c163ef9d"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"FAILED"},{"id":"EID6eeb12fd-0175-1000-4260-a6c07ab73696","parent":{"ref":"EID6eeb125f-0175-1000-0f1c-0f59c163ef9d"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd36aee1d-d822-4c0b-89d4-52674262f367"},{"ref":"EIDc801423c-b4fe-48b3-a6f1-1b24c516e294"},{"ref":"EIDb38f99bc-053c-4faf-a21f-f63331144016"}]},"parent":{"ref":"EID6eeb125f-0175-1000-c323-b4b3dc805900"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-28T11:15:00Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-28T11:15:00Z","duration":158,"status":"FAILED"},{"id":"EID6eeb12fe-0175-1000-d7b8-8f4715133f7c","testStepResults":{"TestStepResult":[{"id":"EID6eeb12fe-0175-1000-f5bb-d503c04fab91","parent":{"ref":"EID6eeb12fe-0175-1000-d7b8-8f4715133f7c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-28T11:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6eeb12fe-0175-1000-9a99-32dd1028f038","parent":{"ref":"EID6eeb12fe-0175-1000-d7b8-8f4715133f7c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-28T11:15:00Z","duration":224,"status":"PASSED"},{"id":"EID6eeb12fe-0175-1000-2ab4-c005adccc13c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb1400-0175-1000-c05d-f7f1adeaeedc","parent":{"ref":"EID6eeb12fe-0175-1000-2ab4-c005adccc13c"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1400-0175-1000-8d44-7719ba1906d5","parent":{"ref":"EID6eeb12fe-0175-1000-2ab4-c005adccc13c"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1400-0175-1000-b895-0b7725a5d138","parent":{"ref":"EID6eeb12fe-0175-1000-2ab4-c005adccc13c"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1400-0175-1000-6ac6-55dedfc3a300","parent":{"ref":"EID6eeb12fe-0175-1000-2ab4-c005adccc13c"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55269d1a-03c5-4bb5-9a61-19d4a868a450"},{"ref":"EIDa7e963d0-8faf-4071-8811-71128409a206"},{"ref":"EID1f72babf-d645-4577-a658-a9375d295f7c"}]},"parent":{"ref":"EID6eeb12fe-0175-1000-d7b8-8f4715133f7c"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-28T11:15:00Z","duration":36,"status":"PASSED"},{"id":"EID6eeb145e-0175-1000-fa70-a1ade38a63ca","attachments":{"attachment":{"ref":"EIDa4f037f5-e588-41bf-bc3d-91435a9ac462"}},"parent":{"ref":"EID6eeb12fe-0175-1000-d7b8-8f4715133f7c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-28T11:15:01Z","duration":6,"status":"PASSED"},{"id":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb1552-0175-1000-ad49-32ed4769a12e","parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1552-0175-1000-25a1-3964e87d0fe7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-28T11:15:01Z","duration":11,"status":"FAILED"},{"id":"EID6eeb155d-0175-1000-bb80-40a083f42cd5","parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb155d-0175-1000-de0e-5542c3912d30","parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb155d-0175-1000-f35b-e694c36a44f5","parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb155d-0175-1000-6b05-fa937e805b0b","parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb155d-0175-1000-4433-bc73e4045fc0","parent":{"ref":"EID6eeb14aa-0175-1000-c63d-da5b9e50d91f"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84b64d26-8fde-4198-a7cb-df6886c55739"},{"ref":"EIDaefca810-bdb5-4e4d-a060-3d59d18e3a26"},{"ref":"EID8b34f86f-bebe-483f-b78e-1c0cea72be22"}]},"parent":{"ref":"EID6eeb12fe-0175-1000-d7b8-8f4715133f7c"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-28T11:15:01Z","duration":67,"status":"FAILED"}]},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-28T11:15:00Z","duration":607,"status":"FAILED"},{"id":"EID6eeb1569-0175-1000-a823-876d92748a19","testStepResults":{"TestStepResult":[{"id":"EID6eeb1569-0175-1000-94cb-cb8bfe2be7d7","parent":{"ref":"EID6eeb1569-0175-1000-a823-876d92748a19"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1569-0175-1000-4385-60ca22f0451a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb16c7-0175-1000-1a42-9cd3ac1ecc01","parent":{"ref":"EID6eeb1569-0175-1000-4385-60ca22f0451a"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb16c7-0175-1000-c37c-da1f3701a9c4","parent":{"ref":"EID6eeb1569-0175-1000-4385-60ca22f0451a"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb16c7-0175-1000-b9c3-a32fdd0fd617","parent":{"ref":"EID6eeb1569-0175-1000-4385-60ca22f0451a"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6eeb16c7-0175-1000-3a62-734cc06b9ad5","parent":{"ref":"EID6eeb1569-0175-1000-4385-60ca22f0451a"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-28T11:15:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48324064-227c-48c4-89c4-f6f6c9fa3186"},{"ref":"EIDd04ad80e-ae74-405a-a26f-31e393c068d6"},{"ref":"EID24d18df8-72a7-4252-8153-0c40759916f3"}]},"parent":{"ref":"EID6eeb1569-0175-1000-a823-876d92748a19"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-28T11:15:01Z","duration":228,"status":"PASSED"},{"id":"EID6eeb16c7-0175-1000-9a7f-85f23880fd43","invokedTests":{"":null,"TestStepResult":[{"id":"EID6eeb16de-0175-1000-9399-4905a6790247","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb17d0-0175-1000-32e1-b86261a54c72","parent":{"ref":"EID6eeb16de-0175-1000-9399-4905a6790247"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"},{"id":"EID6eeb17d0-0175-1000-6206-74ca94565537","parent":{"ref":"EID6eeb16de-0175-1000-9399-4905a6790247"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"},{"id":"EID6eeb17d0-0175-1000-c4f9-d4687e6bfdb0","parent":{"ref":"EID6eeb16de-0175-1000-9399-4905a6790247"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa889e206-457f-4736-b650-bb959ec8ab77"},{"ref":"EID0d4379ca-6d94-4524-b18d-90c5b4dc905c"},{"ref":"EIDf55b8590-7032-4232-8f12-e2cfd4c06faa"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:15:01Z","duration":153,"status":"PASSED"},{"id":"EID6eeb17d2-0175-1000-e30b-3864c2e96f43","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb189b-0175-1000-7ab1-84f81fe57e38","parent":{"ref":"EID6eeb17d2-0175-1000-e30b-3864c2e96f43"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"},{"id":"EID6eeb189b-0175-1000-7813-ae79dea6de3a","parent":{"ref":"EID6eeb17d2-0175-1000-e30b-3864c2e96f43"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"},{"id":"EID6eeb189b-0175-1000-8fa2-4f0cf6f03b29","parent":{"ref":"EID6eeb17d2-0175-1000-e30b-3864c2e96f43"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0909bba1-cbff-4e90-8b96-e228fb204f07"},{"ref":"EID4eba6a9e-7503-45e3-b653-d3085ded8f61"},{"ref":"EID62f1500a-5a31-451e-9ad0-ed5c59ba7ab0"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:15:02Z","duration":153,"status":"PASSED"},{"id":"EID6eeb18ad-0175-1000-a926-3ecc4033356e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb1977-0175-1000-bb00-2b122b5db29a","parent":{"ref":"EID6eeb18ad-0175-1000-a926-3ecc4033356e"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1977-0175-1000-aaf9-0a00ce6f83af","parent":{"ref":"EID6eeb18ad-0175-1000-a926-3ecc4033356e"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1977-0175-1000-6300-a064cee7c09e","parent":{"ref":"EID6eeb18ad-0175-1000-a926-3ecc4033356e"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-28T11:15:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe0fc05ef-87e7-4b67-8480-3b073eb81df4"},{"ref":"EID7cde0e26-b0ef-4653-b5c2-ab35e49e7453"},{"ref":"EIDb32b42ca-8fa7-423a-8d12-91778cd3533b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-28T11:15:02Z","duration":154,"status":"PASSED"}]},"parent":{"ref":"EID6eeb1569-0175-1000-a823-876d92748a19"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-28T11:15:01Z","duration":688,"status":"PASSED"},{"id":"EID6eeb1978-0175-1000-99d5-90bc46677f6b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb1fd8-0175-1000-2580-0fa388b42769","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb1978-0175-1000-99d5-90bc46677f6b"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-28T11:15:04Z","duration":16,"status":"FAILED"},{"id":"EID6eeb1fe8-0175-1000-417d-11c410f32393","parent":{"ref":"EID6eeb1978-0175-1000-99d5-90bc46677f6b"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"PASSED"},{"id":"EID6eeb1fe8-0175-1000-ce05-c503cfe20de4","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb1978-0175-1000-99d5-90bc46677f6b"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"FAILED"},{"id":"EID6eeb1fe8-0175-1000-46d0-694f54c38e1f","parent":{"ref":"EID6eeb1978-0175-1000-99d5-90bc46677f6b"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID121c43f0-8d99-440c-a88b-da2c32fe8747"},{"ref":"EID72afa1f0-75d0-4931-a425-e60ec686a313"},{"ref":"EIDbb68ecc5-2a72-4898-9543-c189bb4d7e1d"}]},"parent":{"ref":"EID6eeb1569-0175-1000-a823-876d92748a19"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-28T11:15:02Z","duration":1547,"status":"FAILED"}]},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-28T11:15:01Z","duration":2687,"status":"FAILED"},{"id":"EID6eeb1fe8-0175-1000-eb79-684f0aae3975","testStepResults":{"TestStepResult":{"id":"EID6eeb1fe9-0175-1000-51c7-1cbc882edfbb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6eeb205e-0175-1000-fddb-ecc1de4a4977","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6eeb1fe9-0175-1000-51c7-1cbc882edfbb"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-28T11:15:04Z","duration":11,"status":"FAILED"},{"id":"EID6eeb2069-0175-1000-2fc6-cd0773ec8f42","parent":{"ref":"EID6eeb1fe9-0175-1000-51c7-1cbc882edfbb"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"PASSED"},{"id":"EID6eeb2069-0175-1000-fb43-9e5ca929fa57","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6eeb1fe9-0175-1000-51c7-1cbc882edfbb"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"FAILED"},{"id":"EID6eeb2069-0175-1000-3906-2e2610ac974d","parent":{"ref":"EID6eeb1fe9-0175-1000-51c7-1cbc882edfbb"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d8b7322-bdb0-446e-81f9-d470a2941892"},{"ref":"EID777f7057-1fd2-4a36-999f-3694d1e4fc36"},{"ref":"EID861493c0-5057-4465-aaee-377ddad3854d"}]},"parent":{"ref":"EID6eeb1fe8-0175-1000-eb79-684f0aae3975"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-28T11:15:04Z","duration":40,"status":"FAILED"}},"parent":{"ref":"EID6eeb0c19-0175-1000-3d0e-6db54933ccfd"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-28T11:15:04Z","duration":129,"status":"FAILED"}]},"parent":{"ref":"EID36b70879-9ccd-4c0b-b605-0294efe99035"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-28T11:14:59Z","duration":5200,"status":"FAILED"},{"id":"EID6eeb2069-0175-1000-d89d-81ea754c9f44","testCaseResults":{"TestCaseResult":[{"id":"EID6eeb2069-0175-1000-c71d-90b4f97b690d","testStepResults":{"TestStepResult":{"id":"EID6eeb2069-0175-1000-bdd6-313cea380322","parent":{"ref":"EID6eeb2069-0175-1000-c71d-90b4f97b690d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb2069-0175-1000-9be3-e1d563f1b85a","testStepResults":{"TestStepResult":{"id":"EID6eeb2074-0175-1000-1dfd-b7bb8e0be4c3","parent":{"ref":"EID6eeb2069-0175-1000-9be3-e1d563f1b85a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-28T11:15:04Z","duration":11,"status":"SKIPPED"},{"id":"EID6eeb2074-0175-1000-b041-454fb78c750b","testStepResults":{"TestStepResult":{"id":"EID6eeb2074-0175-1000-e32e-3320d7d48258","parent":{"ref":"EID6eeb2074-0175-1000-b041-454fb78c750b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb2075-0175-1000-518e-ae00267a8588","testStepResults":{"TestStepResult":{"id":"EID6eeb2075-0175-1000-ac35-3c7decb5e825","parent":{"ref":"EID6eeb2075-0175-1000-518e-ae00267a8588"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-28T11:15:04Z","duration":8,"status":"SKIPPED"},{"id":"EID6eeb207d-0175-1000-3bac-187108f3169c","testStepResults":{"TestStepResult":{"id":"EID6eeb207d-0175-1000-ab7c-5d8174f0f673","parent":{"ref":"EID6eeb207d-0175-1000-3bac-187108f3169c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb207d-0175-1000-e46d-4bc53a00948f","testStepResults":{"TestStepResult":{"id":"EID6eeb207d-0175-1000-7bad-15f9105e52cb","parent":{"ref":"EID6eeb207d-0175-1000-e46d-4bc53a00948f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"SKIPPED"},{"id":"EID6eeb207e-0175-1000-fc97-44d7aed9a173","testStepResults":{"TestStepResult":{"id":"EID6eeb207e-0175-1000-6b51-3598530ab860","parent":{"ref":"EID6eeb207e-0175-1000-fc97-44d7aed9a173"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-28T11:15:04Z","duration":487,"status":"SKIPPED"}},"parent":{"ref":"EID6eeb2069-0175-1000-d89d-81ea754c9f44"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-28T11:15:04Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID36b70879-9ccd-4c0b-b605-0294efe99035"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-28T11:15:04Z","duration":21,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EIDe3021611-4cc9-4c7a-a5ac-befd1aa03bca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID5f57b52b-2ce3-4b4f-bd0c-41cbc9ff9c3f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID5f57b52b-2ce3-4b4f-bd0c-41cbc9ff9c3f"}},{"type":"ServiceResponse","id":"EID1580bf22-518c-48d3-a0e2-200381246bba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID1580bf22-518c-48d3-a0e2-200381246bba"}},{"type":"ServiceResponse","id":"EIDfe8d0054-5a43-4ffb-82dd-9371934af52c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDfe8d0054-5a43-4ffb-82dd-9371934af52c"}},{"type":"Message","id":"EIDd0f79b92-34af-48ad-8c79-d135a74f5000","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDd0f79b92-34af-48ad-8c79-d135a74f5000"}},{"type":"ServiceEndpoint","id":"EIDfba06a58-8d35-422a-aa13-53d5f4bca329","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID72604565-d368-4966-a117-122a9cbbf828","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID72604565-d368-4966-a117-122a9cbbf828"}},{"type":"ServiceResponse","id":"EID56785ba5-065b-41f6-8a40-939310c5f697","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID56785ba5-065b-41f6-8a40-939310c5f697"}},{"type":"GetParameter","id":"EID2df8a5c8-64ec-4eeb-be88-4929b8cf766a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDb5b9eed7-b747-4ab5-846e-2171f51aee5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDd0191d0c-6ddd-4386-9b46-ac5fe165cac6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDd0191d0c-6ddd-4386-9b46-ac5fe165cac6"}},{"type":"GetParameter","id":"EIDee08856d-23d6-470c-869e-2ae3d673c5f8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4831291f-297b-4007-9e8d-4cc671e57308","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8175052f-4d5d-42f4-99fa-46294134e894","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID8175052f-4d5d-42f4-99fa-46294134e894"}},{"type":"Error","id":"EID88924834-2996-4323-9a87-047deb73aa60","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID88924834-2996-4323-9a87-047deb73aa60"}},{"type":"Error","id":"EIDf039d238-0f35-4c4e-9535-49eccd9bd3db","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDf039d238-0f35-4c4e-9535-49eccd9bd3db"}},{"type":"LogFile","id":"EID098fa98a-aa19-407a-ba1f-3831465eb89a","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID098fa98a-aa19-407a-ba1f-3831465eb89a"}},{"type":"ServiceResponse","id":"EIDc9941c17-ae81-41ea-83be-f54a221ba8ba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDc9941c17-ae81-41ea-83be-f54a221ba8ba"}},{"type":"Message","id":"EID242fe444-fc5a-48c0-8c0f-d3c39e6a25fa","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID242fe444-fc5a-48c0-8c0f-d3c39e6a25fa"}},{"type":"Error","id":"EID468e1278-2bc1-42ec-8d74-368c57c2eeb9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID468e1278-2bc1-42ec-8d74-368c57c2eeb9"}},{"type":"GetParameter","id":"EIDe5ae2eba-1c85-4d66-9a9c-602541668e5d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1d5430a5-4e5a-4b9a-b7f5-ebb229a00e5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd53c5f2a-1fdd-4366-9bec-4a532deb7771","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDf9233c6f-58db-46a3-bd35-2a236c01b42d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDf9233c6f-58db-46a3-bd35-2a236c01b42d"}},{"type":"Message","id":"EID64ca8cc0-7c7a-4657-ae4a-7078a1055951","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID64ca8cc0-7c7a-4657-ae4a-7078a1055951"}},{"type":"GetParameter","id":"EID62f1500a-5a31-451e-9ad0-ed5c59ba7ab0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDb38f99bc-053c-4faf-a21f-f63331144016","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID0293ac76-3a0a-41a0-b2b4-8e12ce32bfbb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa2753827-7615-405b-bafb-224d74435512","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDa2753827-7615-405b-bafb-224d74435512"}},{"type":"GetParameter","id":"EID4ebeaf2d-8ccc-4fd6-bcd2-7a13c997659d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID896f04be-62d2-47c5-b9df-88ca6e059516","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID896f04be-62d2-47c5-b9df-88ca6e059516"}},{"type":"ServiceResponse","id":"EIDd8d3dcfe-10f4-4064-9709-ac9cab818c81","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDd8d3dcfe-10f4-4064-9709-ac9cab818c81"}},{"type":"ServiceEndpoint","id":"EIDe0fc05ef-87e7-4b67-8480-3b073eb81df4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID770e88a5-2d4e-4ac0-ae04-ed5716d0b4e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID770e88a5-2d4e-4ac0-ae04-ed5716d0b4e2"}},{"type":"ServiceResponse","id":"EID0d4379ca-6d94-4524-b18d-90c5b4dc905c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID0d4379ca-6d94-4524-b18d-90c5b4dc905c"}},{"type":"GetParameter","id":"EID861493c0-5057-4465-aaee-377ddad3854d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID117db465-4a18-4e2b-baf1-db5db93733d1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID96d44d48-3a42-4081-bf5c-c8e3cf28f116","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID96d44d48-3a42-4081-bf5c-c8e3cf28f116"}},{"type":"GetParameter","id":"EID78e69f9b-ba27-4f2c-a52f-46f231b3a11d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID5a6a1af8-2d5e-4fc1-a96c-8ba3b98b9e79","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID12f95b25-0ee5-4f2e-8774-3d95ea16e423","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID12f95b25-0ee5-4f2e-8774-3d95ea16e423"}},{"type":"ServiceEndpoint","id":"EIDe81b6e97-50df-4245-9dbb-4de6e016f099","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID4eba6a9e-7503-45e3-b653-d3085ded8f61","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID4eba6a9e-7503-45e3-b653-d3085ded8f61"}},{"type":"ServiceEndpoint","id":"EIDd36aee1d-d822-4c0b-89d4-52674262f367","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EID27a265bf-0eb6-4279-acf3-78fa53af360d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID27a265bf-0eb6-4279-acf3-78fa53af360d"}},{"type":"ServiceEndpoint","id":"EID8d8b7322-bdb0-446e-81f9-d470a2941892","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID834e574b-2ec8-43eb-b977-4e1725094acf","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID834e574b-2ec8-43eb-b977-4e1725094acf"}},{"type":"ServiceEndpoint","id":"EID13e28dad-e349-446a-9084-254c86ec3746","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID72f6668c-9dc3-413f-a16a-3b6908922e05","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID1f72babf-d645-4577-a658-a9375d295f7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID48324064-227c-48c4-89c4-f6f6c9fa3186","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDc234cb67-e807-4886-bb80-04868c1b0a93","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDc234cb67-e807-4886-bb80-04868c1b0a93"}},{"type":"ServiceResponse","id":"EIDa7e963d0-8faf-4071-8811-71128409a206","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDa7e963d0-8faf-4071-8811-71128409a206"}},{"type":"ServiceResponse","id":"EID3e5bebde-b6dd-40f3-9c22-a69fb24ed7dc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID3e5bebde-b6dd-40f3-9c22-a69fb24ed7dc"}},{"type":"ServiceEndpoint","id":"EID84b64d26-8fde-4198-a7cb-df6886c55739","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID55b74484-bc0b-48a7-b54f-1642d14d6c8c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID55b74484-bc0b-48a7-b54f-1642d14d6c8c"}},{"type":"Message","id":"EIDea634db8-8511-4326-b40b-61108971d041","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDea634db8-8511-4326-b40b-61108971d041"}},{"type":"GetParameter","id":"EIDf1e95064-2d72-4e2c-adcb-3d9d5222f599","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDed9a5f82-527c-4b42-8cef-c05613b03b81","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDed9a5f82-527c-4b42-8cef-c05613b03b81"}},{"type":"ServiceResponse","id":"EIDfce42df2-1632-47ac-a475-e7c0a46298c5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDfce42df2-1632-47ac-a475-e7c0a46298c5"}},{"type":"Message","id":"EID13f82699-c4e5-4b54-b469-6d2ddefcc205","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID13f82699-c4e5-4b54-b469-6d2ddefcc205"}},{"type":"ServiceEndpoint","id":"EID2b0d1a81-0eb8-4d28-8ca5-62e2d3daee18","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID54e3f0d7-f615-4363-9ac8-b731ad45b6a9","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID54e3f0d7-f615-4363-9ac8-b731ad45b6a9"}},{"type":"ServiceEndpoint","id":"EID2fd46eee-b160-4c9c-8636-40eac6b13b0b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID663c926c-59f3-4b4b-944e-ac34d8063a3e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID663c926c-59f3-4b4b-944e-ac34d8063a3e"}},{"type":"GetParameter","id":"EIDd9d36796-7cf3-483a-9801-e187fb575dab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDee29504f-bd70-4652-8e37-12cbf566bab3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDee29504f-bd70-4652-8e37-12cbf566bab3"}},{"type":"Message","id":"EID596c50e7-c063-4daa-b78e-04eb6affe2c3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID596c50e7-c063-4daa-b78e-04eb6affe2c3"}},{"type":"ServiceEndpoint","id":"EIDedfd78eb-8121-4f02-b997-19d9afd7fef1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1314cb21-7fa4-4d84-947f-a5d2495ae05d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID1314cb21-7fa4-4d84-947f-a5d2495ae05d"}},{"type":"Error","id":"EID60497302-e94d-43d4-a8ce-95247858ee77","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID60497302-e94d-43d4-a8ce-95247858ee77"}},{"type":"ServiceResponse","id":"EID2e36f9da-397a-436b-a206-982d25782006","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID2e36f9da-397a-436b-a206-982d25782006"}},{"type":"ServiceEndpoint","id":"EIDcad7b49d-ea87-4714-a832-87515d75caaf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Error","id":"EID6d79f8af-6c3f-4df2-9117-b8af2c1c0cce","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID6d79f8af-6c3f-4df2-9117-b8af2c1c0cce"}},{"type":"ServiceEndpoint","id":"EIDa7cab846-879d-4300-b116-90c2d55aa105","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDeb4e3338-041c-49ea-baff-fd0e625a0630","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDeb4e3338-041c-49ea-baff-fd0e625a0630"}},{"type":"ServiceResponse","id":"EIDaefca810-bdb5-4e4d-a060-3d59d18e3a26","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDaefca810-bdb5-4e4d-a060-3d59d18e3a26"}},{"type":"Message","id":"EID6359a81d-7647-4e78-b723-f3d1a2e34407","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID6359a81d-7647-4e78-b723-f3d1a2e34407"}},{"type":"ServiceEndpoint","id":"EID398f58d4-816c-4847-84f6-36601d90eb7d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2adb8a56-b70d-4bae-b1e3-00e67652c176","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID2adb8a56-b70d-4bae-b1e3-00e67652c176"}},{"type":"GetParameter","id":"EID35d6f042-71c2-4a92-9065-55d57b9cd2a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID8e89cede-727c-4df9-ad29-5f450b9c95b1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EIDd799997d-4d01-4979-b482-645e7a60c57f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDe5f29d15-5ca3-43e0-ae0f-c2f43532e6c2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDe5f29d15-5ca3-43e0-ae0f-c2f43532e6c2"}},{"type":"GetParameter","id":"EIDaca1cac3-48dd-4ce0-94f7-614e3ce70b5d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDd048b238-c4d4-4506-8ebb-90b2d1be28b6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDd048b238-c4d4-4506-8ebb-90b2d1be28b6"}},{"type":"ServiceEndpoint","id":"EIDb3eade06-336e-47b7-919a-0c235f453758","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID6894b7c2-5058-4987-88c0-1aadc4f3a4b8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID01da8eaf-05ed-4302-a432-da524ecf0389","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID51b34d8b-c5c8-4b14-bab8-20b3d4f6cd5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDc4a7b942-26f5-4b0b-805f-4ecc3cb939e0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5fcfdbd0-8667-4695-bff8-4078bb7ed66f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID66ef14bc-005a-4f47-98fb-0daba15d4a60","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID66ef14bc-005a-4f47-98fb-0daba15d4a60"}},{"type":"GetParameter","id":"EID4db9b49b-d0d2-4f6c-a54c-30b42d783e0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDf55b8590-7032-4232-8f12-e2cfd4c06faa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID84dad6cc-d9af-47d1-a85c-f456e837c814","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID84dad6cc-d9af-47d1-a85c-f456e837c814"}},{"type":"ServiceResponse","id":"EIDf1d94230-1f88-4259-9ff2-5171b6d9a278","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDf1d94230-1f88-4259-9ff2-5171b6d9a278"}},{"type":"GetParameter","id":"EID24d18df8-72a7-4252-8153-0c40759916f3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID8b34f86f-bebe-483f-b78e-1c0cea72be22","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EIDbfce5391-1c77-4867-a69e-71b60792c2ab","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDbfce5391-1c77-4867-a69e-71b60792c2ab"}},{"type":"ServiceEndpoint","id":"EIDf05a5a5b-77b0-4d9e-b759-0c4dde515fc5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0f84bb8c-a0f4-4532-bcb9-736704bcc050","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EID7e70fbb6-e931-4614-9ca1-06201bfe4390","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2d967229-34b0-4085-b9f0-b2bdc0a95238","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1e5c601f-73d8-45df-a526-f310e19d6389","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID1e5c601f-73d8-45df-a526-f310e19d6389"}},{"type":"ServiceEndpoint","id":"EID55269d1a-03c5-4bb5-9a61-19d4a868a450","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDe0623b8a-493b-47d4-9291-358c87417fcf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID777f7057-1fd2-4a36-999f-3694d1e4fc36","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID777f7057-1fd2-4a36-999f-3694d1e4fc36"}},{"type":"Message","id":"EID0a07e17e-1bc9-4004-99ad-294204f46e93","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID0a07e17e-1bc9-4004-99ad-294204f46e93"}},{"type":"ServiceResponse","id":"EID72afa1f0-75d0-4931-a425-e60ec686a313","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID72afa1f0-75d0-4931-a425-e60ec686a313"}},{"type":"Message","id":"EIDe9f2fd1c-d5ce-414a-8c09-47b70e8d862a","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDe9f2fd1c-d5ce-414a-8c09-47b70e8d862a"}},{"type":"ServiceEndpoint","id":"EIDacd3b33e-950d-46aa-a62b-0faff6e2fbc2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf93d6721-349b-4b1d-9768-c45523b12096","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDf93d6721-349b-4b1d-9768-c45523b12096"}},{"type":"GetParameter","id":"EIDc839a7ca-efbb-4478-8d54-945ae39fafa3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID040355fa-b66f-493a-b3e7-7ce9ca14c94e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID42d09b7e-4c06-4a2e-acd6-177bd3ecde44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDcda734a7-2c9d-4d61-b003-bf7b0114d01a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDcda734a7-2c9d-4d61-b003-bf7b0114d01a"}},{"type":"ServiceResponse","id":"EID7cde0e26-b0ef-4653-b5c2-ab35e49e7453","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID7cde0e26-b0ef-4653-b5c2-ab35e49e7453"}},{"type":"GetParameter","id":"EIDb7ec1bdb-2dea-408c-9c9a-f81899f64aef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID121c43f0-8d99-440c-a88b-da2c32fe8747","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceResponse","id":"EIDcb2ff163-63e2-403b-863b-2fb1282b1fbd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDcb2ff163-63e2-403b-863b-2fb1282b1fbd"}},{"type":"ServiceEndpoint","id":"EIDa889e206-457f-4736-b650-bb959ec8ab77","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID0b1c8bf8-276e-4f87-a69d-9c1d2f586f48","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID0b1c8bf8-276e-4f87-a69d-9c1d2f586f48"}},{"type":"Error","id":"EIDc353d0dd-ccbe-4ce9-a217-cdd51afc3ef2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDc353d0dd-ccbe-4ce9-a217-cdd51afc3ef2"}},{"type":"GetParameter","id":"EID8f6447b1-10af-48b8-8352-247ff73ee395","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf59bf748-13ad-4c68-9b97-fab3e7556cfe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID3036886c-8809-40c2-8487-2882d1763323","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID3036886c-8809-40c2-8487-2882d1763323"}},{"type":"Message","id":"EID876a1a72-a25c-4c1b-b618-a74425bebedd","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID876a1a72-a25c-4c1b-b618-a74425bebedd"}},{"type":"GetParameter","id":"EIDc2ce8411-0389-4ff7-b3f1-fa17f05a99ae","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID1949003d-2847-4f30-9a6f-115e18e4e6ba","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID1949003d-2847-4f30-9a6f-115e18e4e6ba"}},{"type":"Message","id":"EIDd7c06981-c9a9-48bf-aceb-5dbb605a3850","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDd7c06981-c9a9-48bf-aceb-5dbb605a3850"}},{"type":"ServiceEndpoint","id":"EID1d85a24d-4560-4814-9044-8d941ae8724e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb63cbccc-a778-4995-adfb-e31e6437e1b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd04ad80e-ae74-405a-a26f-31e393c068d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDd04ad80e-ae74-405a-a26f-31e393c068d6"}},{"type":"Message","id":"EID38d6c0fe-0791-405d-bb90-41785ae6f82f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID38d6c0fe-0791-405d-bb90-41785ae6f82f"}},{"type":"Error","id":"EID05989eb0-a330-4c45-82a7-09cf93583533","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID05989eb0-a330-4c45-82a7-09cf93583533"}},{"type":"ServiceEndpoint","id":"EIDc4d394ec-10c8-4847-866c-67cfcd9ccf8e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"ServiceEndpoint","id":"EID0909bba1-cbff-4e90-8b96-e228fb204f07","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID0abc67f8-45fd-4dc2-8a1e-a91cf8ba404d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID0abc67f8-45fd-4dc2-8a1e-a91cf8ba404d"}},{"type":"Message","id":"EIDa4f037f5-e588-41bf-bc3d-91435a9ac462","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDa4f037f5-e588-41bf-bc3d-91435a9ac462"}},{"type":"ServiceResponse","id":"EID48bffdca-52c2-406b-b3d4-d86ef1df7860","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID48bffdca-52c2-406b-b3d4-d86ef1df7860"}},{"type":"ServiceResponse","id":"EIDbc3d7414-d476-43b4-8bd2-ea9092b7135e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDbc3d7414-d476-43b4-8bd2-ea9092b7135e"}},{"type":"ServiceResponse","id":"EID00ec9d61-5a3b-4f14-86bb-df7b93d1121b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID00ec9d61-5a3b-4f14-86bb-df7b93d1121b"}},{"type":"Message","id":"EID3b421fc7-07dc-4e27-a8c3-bff6bd4f9c5e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID3b421fc7-07dc-4e27-a8c3-bff6bd4f9c5e"}},{"type":"ServiceEndpoint","id":"EIDd23cc3e0-7695-4646-876f-efc9606fdbbf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfdfae4f6-0ca8-4c1d-9fc3-aaec92ba55ba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID154ec4aa-2d39-4736-84c0-4cb9dc72e7a7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID154ec4aa-2d39-4736-84c0-4cb9dc72e7a7"}},{"type":"ServiceResponse","id":"EID06132bf0-ef97-4783-bf55-ac8bf293a712","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID06132bf0-ef97-4783-bf55-ac8bf293a712"}},{"type":"GetParameter","id":"EIDbb68ecc5-2a72-4898-9543-c189bb4d7e1d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"GetParameter","id":"EIDe4288941-9938-46d3-8f3f-f95b1f367b8e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDb9dc29ca-683a-4bc2-8efb-f71212048921","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDb9dc29ca-683a-4bc2-8efb-f71212048921"}},{"type":"ServiceEndpoint","id":"EID14ab7da3-3f8c-4ff3-a162-fe69ddcfe0a3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0db7f827-a882-4dd1-a17a-2745315c26c0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID0db7f827-a882-4dd1-a17a-2745315c26c0"}},{"type":"GetParameter","id":"EIDb32b42ca-8fa7-423a-8d12-91778cd3533b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDc801423c-b4fe-48b3-a6f1-1b24c516e294","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EIDc801423c-b4fe-48b3-a6f1-1b24c516e294"}},{"type":"Message","id":"EID6060442f-8172-4c79-8f94-54d1c17ff8b2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID6060442f-8172-4c79-8f94-54d1c17ff8b2"}},{"type":"ServiceEndpoint","id":"EID76c3bd7c-2e8d-4542-b763-f1910eef8d24","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID21f85ac5-69bf-45eb-9b4e-3ec65ab557b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcd8ff62e-8d2c-4892-9bc1-398cdd055223","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvaW5zcGlyZV9wdl9wcy9hdG9tL2luc3BpcmVfcHZfcHMueG1s"},{"type":"Message","id":"EID593b7d74-01bf-4c0d-a33f-1081e5f6e71e","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36b70879-9ccd-4c0b-b605-0294efe99035/Attachments/EID593b7d74-01bf-4c0d-a33f-1081e5f6e71e"}},{"type":"ServiceEndpoint","id":"EID51561190-9249-41df-ad54-b7cf32a28354","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-28T11:14:51Z","duration":12661,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.025
11:15:16.054 [print] EIDa893ba4d-0f6e-42ac-813b-1b19df10d586
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
11:15:16.054 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
11:15:16.054 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
11:15:16.054 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
11:15:16.054 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a893ba4d-0f6e-42ac-813b-1b19df10d586.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
11:15:16.054 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a893ba4d-0f6e-42ac-813b-1b19df10d586.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
11:15:16.054 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa893ba4d-0f6e-42ac-813b-1b19df10d586/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
11:15:16.061 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
11:15:16.061 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.001
* def db = db.setfeature(karate.info.featureFileName) 0.000
* def outfile = db.outputdir() + separator + 'Inspirevalidator.csv' 0.000
* db.storeInspireResults(metadata.serviceIdentifierCode, metadata.title, metadata.url, sortedrefs) 0.000